{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "7fc3eb30-23ad-430d-8626-6ed4a75278ef", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0mCollecting streamlit\n", " Obtaining dependency information for streamlit from https://files.pythonhosted.org/packages/3d/b0/031933cb253d757dfc8791707d413ce90ab52ec7fb4524ef955070136d31/streamlit-1.43.2-py2.py3-none-any.whl.metadata\n", " Downloading streamlit-1.43.2-py2.py3-none-any.whl.metadata (8.9 kB)\n", "Requirement already satisfied: altair<6,>=4.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (5.3.0)\n", "Requirement already satisfied: blinker<2,>=1.0.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (1.9.0)\n", "Requirement already satisfied: cachetools<6,>=4.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (5.3.2)\n", "Requirement already satisfied: click<9,>=7.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (8.1.7)\n", "Requirement already satisfied: numpy<3,>=1.23 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (1.26.4)\n", "Requirement already satisfied: packaging<25,>=20 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (24.1)\n", "Requirement already satisfied: pandas<3,>=1.4.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (2.0.3)\n", "Requirement already satisfied: pillow<12,>=7.1.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (10.2.0)\n", "Requirement already satisfied: protobuf<6,>=3.20 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (4.23.4)\n", "Requirement already satisfied: pyarrow>=7.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (15.0.2)\n", "Requirement already satisfied: requests<3,>=2.27 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (2.31.0)\n", "Requirement already satisfied: tenacity<10,>=8.1.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (8.4.2)\n", "Collecting toml<2,>=0.10.1 (from streamlit)\n", " Obtaining dependency information for toml<2,>=0.10.1 from https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl.metadata\n", " Downloading toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB)\n", "Requirement already satisfied: typing-extensions<5,>=4.4.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (4.12.2)\n", "Collecting watchdog<7,>=2.1.5 (from streamlit)\n", " Obtaining dependency information for watchdog<7,>=2.1.5 from https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl.metadata\n", " Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl.metadata (44 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.3/44.3 kB\u001b[0m \u001b[31m1.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting gitpython!=3.1.19,<4,>=3.0.7 (from streamlit)\n", " Obtaining dependency information for gitpython!=3.1.19,<4,>=3.0.7 from https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl.metadata\n", " Downloading GitPython-3.1.44-py3-none-any.whl.metadata (13 kB)\n", "Collecting pydeck<1,>=0.8.0b4 (from streamlit)\n", " Obtaining dependency information for pydeck<1,>=0.8.0b4 from https://files.pythonhosted.org/packages/ab/4c/b888e6cf58bd9db9c93f40d1c6be8283ff49d88919231afe93a6bcf61626/pydeck-0.9.1-py2.py3-none-any.whl.metadata\n", " Downloading pydeck-0.9.1-py2.py3-none-any.whl.metadata (4.1 kB)\n", "Requirement already satisfied: tornado<7,>=6.0.3 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from streamlit) (6.3.3)\n", "Requirement already satisfied: jinja2 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from altair<6,>=4.0->streamlit) (3.1.2)\n", "Requirement already satisfied: jsonschema>=3.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from altair<6,>=4.0->streamlit) (4.19.0)\n", "Requirement already satisfied: toolz in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from altair<6,>=4.0->streamlit) (0.12.1)\n", "Collecting gitdb<5,>=4.0.1 (from gitpython!=3.1.19,<4,>=3.0.7->streamlit)\n", " Obtaining dependency information for gitdb<5,>=4.0.1 from https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl.metadata\n", " Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from pandas<3,>=1.4.0->streamlit) (2.8.2)\n", "Requirement already satisfied: pytz>=2020.1 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from pandas<3,>=1.4.0->streamlit) (2023.3.post1)\n", "Requirement already satisfied: tzdata>=2022.1 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from pandas<3,>=1.4.0->streamlit) (2023.3)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from requests<3,>=2.27->streamlit) (3.2.0)\n", "Requirement already satisfied: idna<4,>=2.5 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from requests<3,>=2.27->streamlit) (3.4)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from requests<3,>=2.27->streamlit) (2.0.4)\n", "Requirement already satisfied: certifi>=2017.4.17 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from requests<3,>=2.27->streamlit) (2024.7.4)\n", "Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit)\n", " Obtaining dependency information for smmap<6,>=3.0.1 from https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl.metadata\n", " Downloading smmap-5.0.2-py3-none-any.whl.metadata (4.3 kB)\n", "Requirement already satisfied: MarkupSafe>=2.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from jinja2->altair<6,>=4.0->streamlit) (2.1.3)\n", "Requirement already satisfied: attrs>=22.2.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit) (23.1.0)\n", "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit) (2023.7.1)\n", "Requirement already satisfied: referencing>=0.28.4 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit) (0.30.2)\n", "Requirement already satisfied: rpds-py>=0.7.1 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit) (0.10.2)\n", "Requirement already satisfied: six>=1.5 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas<3,>=1.4.0->streamlit) (1.16.0)\n", "Downloading streamlit-1.43.2-py2.py3-none-any.whl (9.7 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.7/9.7 MB\u001b[0m \u001b[31m13.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n", "\u001b[?25hDownloading GitPython-3.1.44-py3-none-any.whl (207 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.6/207.6 kB\u001b[0m \u001b[31m1.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m\n", "\u001b[?25hDownloading pydeck-0.9.1-py2.py3-none-any.whl (6.9 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.9/6.9 MB\u001b[0m \u001b[31m29.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n", "\u001b[?25hDownloading toml-0.10.2-py2.py3-none-any.whl (16 kB)\n", "Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl (79 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m79.1/79.1 kB\u001b[0m \u001b[31m1.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0mta \u001b[36m0:00:01\u001b[0m\n", "\u001b[?25hDownloading gitdb-4.0.12-py3-none-any.whl (62 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.8/62.8 kB\u001b[0m \u001b[31m2.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading smmap-5.0.2-py3-none-any.whl (24 kB)\n", "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0mInstalling collected packages: watchdog, toml, smmap, pydeck, gitdb, gitpython, streamlit\n", "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0mSuccessfully installed gitdb-4.0.12 gitpython-3.1.44 pydeck-0.9.1 smmap-5.0.2 streamlit-1.43.2 toml-0.10.2 watchdog-6.0.0\n", "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m" ] } ], "source": [ "!pip install streamlit " ] }, { "cell_type": "code", "execution_count": 2, "id": "db4f1d12-4584-45e6-876d-1712092c029d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0mCollecting fiona\n", " Obtaining dependency information for fiona from https://files.pythonhosted.org/packages/7b/2e/3f80ba2fda9b8686681f0a1b18c8e95ad152ada1d6fb1d3f25281d9229fd/fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata\n", " Downloading fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (56 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.6/56.6 kB\u001b[0m \u001b[31m1.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", "\u001b[?25hRequirement already satisfied: attrs>=19.2.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from fiona) (23.1.0)\n", "Requirement already satisfied: certifi in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from fiona) (2024.7.4)\n", "Requirement already satisfied: click~=8.0 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from fiona) (8.1.7)\n", "Collecting click-plugins>=1.0 (from fiona)\n", " Obtaining dependency information for click-plugins>=1.0 from https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl.metadata\n", " Downloading click_plugins-1.1.1-py2.py3-none-any.whl.metadata (6.4 kB)\n", "Collecting cligj>=0.5 (from fiona)\n", " Obtaining dependency information for cligj>=0.5 from https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl.metadata\n", " Downloading cligj-0.7.2-py3-none-any.whl.metadata (5.0 kB)\n", "Downloading fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m17.3/17.3 MB\u001b[0m \u001b[31m39.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n", "\u001b[?25hDownloading click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)\n", "Downloading cligj-0.7.2-py3-none-any.whl (7.1 kB)\n", "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0mInstalling collected packages: cligj, click-plugins, fiona\n", "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0mSuccessfully installed click-plugins-1.1.1 cligj-0.7.2 fiona-1.10.1\n", "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m" ] } ], "source": [ "!pip install fiona " ] }, { "cell_type": "code", "execution_count": 3, "id": "7099edf0-b09c-48dd-ac9c-c25d44b78765", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0mRequirement already satisfied: shapely in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (2.0.7)\n", "Requirement already satisfied: numpy<3,>=1.14 in /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages (from shapely) (1.26.4)\n", "\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution ~vidia-nccl-cu12 (/home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages)\u001b[0m\u001b[33m\n", "\u001b[0m" ] } ], "source": [ "!pip install shapely" ] }, { "cell_type": "code", "execution_count": 4, "id": "4b531f13-2f5c-4bf3-b821-a3e0b2438c18", "metadata": {}, "outputs": [], "source": [ "import streamlit as st\n", "import geopandas as gpd\n", "import zipfile\n", "import os\n", "from pathlib import Path" ] }, { "cell_type": "code", "execution_count": 5, "id": "377ffc26-f4e3-44fa-af73-782f8e62274d", "metadata": {}, "outputs": [], "source": [ "# Constants\n", "UTM_CRS = 'EPSG:32618' # UTM Zone 18N for NYC, in meters\n", "ACRES_PER_SQ_METER = 1 / 4046.86" ] }, { "cell_type": "code", "execution_count": 6, "id": "cc9648f7-9cff-42bb-a237-e0f433b3454e", "metadata": { "scrolled": True }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-23 18:43:09.475 WARNING streamlit.runtime.caching.cache_data_api: No runtime found, using MemoryCacheStorageManager\n", "2025-03-23 18:43:09.480 WARNING streamlit.runtime.scriptrunner_utils.script_run_context: Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:10.640 \n", " \u001b[33m\u001b[1mWarning:\u001b[0m to view this Streamlit app on a browser, run it with the following\n", " command:\n", "\n", " streamlit run /home/stu10/s18/kd4849/miniconda3/envs/idai610/lib/python3.11/site-packages/ipykernel_launcher.py [ARGUMENTS]\n", "2025-03-23 18:43:10.642 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:10.643 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:10.644 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:10.645 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:10.647 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:10.648 No runtime found, using MemoryCacheStorageManager\n", "2025-03-23 18:43:10.649 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:10.650 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:10.652 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.200 Thread 'Thread-5': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.216 Thread 'Thread-5': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.218 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.219 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.222 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.223 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.224 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.225 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.227 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.228 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n", "2025-03-23 18:43:11.229 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode.\n" ] } ], "source": [ "# Cache floodplain data loading\n", "@st.cache_data\n", "def load_floodplain_data():\n", " # Replace with the actual path to your downloaded shapefile\n", " floodplain_gdf = gpd.read_file('S_FLD_HAZ_AR.shp')\n", " return floodplain_gdf.to_crs(UTM_CRS)\n", "\n", "# Process uploaded KML/KMZ file\n", "def process_uploaded_file(uploaded_file):\n", " if uploaded_file.name.endswith('.kmz'):\n", " with zipfile.ZipFile(uploaded_file, 'r') as kmz:\n", " kmz.extract('doc.kml', 'temp')\n", " boundary_gdf = gpd.read_file('temp/doc.kml', driver='KML')\n", " os.remove('temp/doc.kml')\n", " else:\n", " boundary_gdf = gpd.read_file(uploaded_file, driver='KML')\n", " \n", " # Assume single polygon (modify for multi-polygons if needed)\n", " boundary_geom = boundary_gdf.geometry.iloc[0]\n", " boundary_gdf = gpd.GeoDataFrame(geometry=[boundary_geom], crs='EPSG:4326')\n", " return boundary_gdf.to_crs(UTM_CRS)\n", "\n", "# Main application\n", "def main():\n", " st.title(\"NYC Floodland Analysis Tool\")\n", " st.write(\"Upload a KML or KMZ file to analyze floodland areas within your boundary.\")\n", "\n", " # Load floodplain data\n", " floodplain_gdf = load_floodplain_data()\n", "\n", " # File uploader\n", " uploaded_file = st.file_uploader(\"Choose a KML or KMZ file\", type=['kml', 'kmz'])\n", "\n", " if uploaded_file:\n", " try:\n", " # Process file and get boundary\n", " boundary_gdf = process_uploaded_file(uploaded_file)\n", " boundary_geom = boundary_gdf.geometry.iloc[0]\n", "\n", " # Calculate total boundary area\n", " boundary_area_m2 = boundary_geom.area\n", " boundary_area_acres = boundary_area_m2 * ACRES_PER_SQ_METER\n", "\n", " # Calculate floodplain area within boundary\n", " intersection_gdf = gpd.overlay(boundary_gdf, floodplain_gdf, how='intersection')\n", " floodplain_area_m2 = intersection_gdf.geometry.area.sum() if not intersection_gdf.empty else 0\n", " floodplain_area_acres = floodplain_area_m2 * ACRES_PER_SQ_METER\n", "\n", " # Calculate usable land\n", " usable_land_acres = boundary_area_acres - floodplain_area_acres\n", "\n", " # Display results\n", " st.subheader(\"Analysis Summary\")\n", " st.write(f\"**Total Boundary Area:** {boundary_area_acres:.2f} acres\")\n", " st.write(f\"**Floodland Area:** {floodplain_area_acres:.2f} acres\")\n", " st.write(f\"**Usable Land Area:** {usable_land_acres:.2f} acres\")\n", " except Exception as e:\n", " st.error(f\"Error: {e}\")\n", " else:\n", " st.info(\"Please upload a file to begin.\")\n", "\n", "if __name__ == \"__main__\":\n", " main()" ] }, { "cell_type": "code", "execution_count": None, "id": "25aa4514-4f6e-4c93-87e3-706f77113bc7", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "c3e54fa1-914c-4bdf-a9b7-f46846e91321", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "95ae4a91-5aae-496b-b909-d6782a808cb3", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "9c1f22cb-db62-4163-bdeb-4bf93017a3b6", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "2ee9a7fd-1c38-40c7-84fa-151bdeacf779", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "e99ceda3-593b-4ace-a622-cdc116a015a4", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "3419a04f-8616-4ce8-9599-101b3f943302", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "bfe60fd7-9a2d-4ceb-b0c0-7f830332346a", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "be15f149-1a46-4389-a66d-5ad0423997ad", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "f021d119-9f54-4572-bcac-159dfcfd3650", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "d7b85977-7aec-481a-ba61-a5944135585c", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "a70b7e20-eb9f-4100-8e18-6aed9ede40cd", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "787aa7f2-7744-4b2a-86bf-3d45402b282c", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "f7d903d1-ed0f-4769-b5ec-a5f9a4377906", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": None, "id": "a02414c7-8d4e-41de-aa08-818e653abf93", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }