From 889be7342f36bfb06509360326bba05125de3005 Mon Sep 17 00:00:00 2001 From: natam1 Date: Thu, 27 Jul 2023 23:03:31 +0000 Subject: [PATCH 1/8] begin script --- .../accessibility/_utils.py | 24 +++++++++++++++++++ .../accessibility/rewrite_project_files.ipynb | 23 +++++++++++++++--- 2 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 project_prioritization/accessibility/_utils.py diff --git a/project_prioritization/accessibility/_utils.py b/project_prioritization/accessibility/_utils.py new file mode 100644 index 000000000..43b842245 --- /dev/null +++ b/project_prioritization/accessibility/_utils.py @@ -0,0 +1,24 @@ +""" +This file contains functions for converting geodata into the form needed for CSIS analyses. It also contains functions to push the new geodata into corresponding folders in GCS. +""" + +import pandas as pd +import geopandas as gpd +import json +import geojson + +from shared_utils import utils + +local_path = "/home/jovyan/data-analyses/project_prioritization/accessibility/" +GCS_PATH = "gs://calitp-analytics-data/data-analyses/project_prioritization/" + +""" +For this function you will need to specify the name of the geojson file you want to read in before. example: +file = "proejct_location_bike.geojson" +""" + +def read_and_create_shpfiles(geojson_file, zip_name): + location = gpd.read_file(geojson_file) + location_zipped = utils.make_zipped_shapefile(location, + zip_name + ) \ No newline at end of file diff --git a/project_prioritization/accessibility/rewrite_project_files.ipynb b/project_prioritization/accessibility/rewrite_project_files.ipynb index 775576c46..029369563 100644 --- a/project_prioritization/accessibility/rewrite_project_files.ipynb +++ b/project_prioritization/accessibility/rewrite_project_files.ipynb @@ -2,10 +2,27 @@ "cells": [ { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "id": "8a0f9f1b-174e-431b-9131-84c111a3b238", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:123: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", + " warnings.warn(\n", + "/tmp/ipykernel_443/3465571729.py:2: UserWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas will still use PyGEOS by default for now. To force to use and test Shapely 2.0, you have to set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", + "\n", + "import os\n", + "os.environ['USE_PYGEOS'] = '0'\n", + "import geopandas\n", + "\n", + "In a future release, GeoPandas will switch to using Shapely by default. If you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", + " import geopandas as gpd\n" + ] + } + ], "source": [ "import pandas as pd\n", "import geopandas as gpd\n", @@ -14,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "62473c52-3c7a-40cb-846a-f554be252fb9", "metadata": {}, "outputs": [], From cccdf80b6c839adc5ad0ddec9ca88d6151bf9169 Mon Sep 17 00:00:00 2001 From: natam1 Date: Sun, 13 Aug 2023 23:44:17 +0000 Subject: [PATCH 2/8] quick save --- .../accessibility/_utils.py | 2 +- .../accessibility/rewrite_project_files.ipynb | 85 ++++++++++++++++--- ..._project_files_santacruz_watsonville.ipynb | 2 +- .../accessibility/yolo_80_50_bikepath.geojson | 66 ++++++++++++++ 4 files changed, 143 insertions(+), 12 deletions(-) create mode 100644 project_prioritization/accessibility/yolo_80_50_bikepath.geojson diff --git a/project_prioritization/accessibility/_utils.py b/project_prioritization/accessibility/_utils.py index 43b842245..22f0a811d 100644 --- a/project_prioritization/accessibility/_utils.py +++ b/project_prioritization/accessibility/_utils.py @@ -5,7 +5,7 @@ import pandas as pd import geopandas as gpd import json -import geojson +# import geojson from shared_utils import utils diff --git a/project_prioritization/accessibility/rewrite_project_files.ipynb b/project_prioritization/accessibility/rewrite_project_files.ipynb index 029369563..f7ca470bd 100644 --- a/project_prioritization/accessibility/rewrite_project_files.ipynb +++ b/project_prioritization/accessibility/rewrite_project_files.ipynb @@ -10,15 +10,15 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:123: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", + "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:124: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", " warnings.warn(\n", - "/tmp/ipykernel_443/3465571729.py:2: UserWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas will still use PyGEOS by default for now. To force to use and test Shapely 2.0, you have to set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", + "/tmp/ipykernel_360/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", "\n", "import os\n", "os.environ['USE_PYGEOS'] = '0'\n", "import geopandas\n", "\n", - "In a future release, GeoPandas will switch to using Shapely by default. If you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", + "In the next release, GeoPandas will switch to using Shapely by default, even if PyGEOS is installed. If you only have PyGEOS installed to get speed-ups, this switch should be smooth. However, if you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", " import geopandas as gpd\n" ] } @@ -41,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "15202851-6cf5-42be-ba27-021e536c15eb", "metadata": {}, "outputs": [], @@ -51,7 +51,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "id": "56f90c33-af6f-4b47-b2f0-defb427fc141", "metadata": {}, "outputs": [], @@ -61,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "id": "7c169ff8-8111-4d97-84eb-338f16913303", "metadata": {}, "outputs": [ @@ -123,7 +123,7 @@ "0 1 " ] }, - "execution_count": 7, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -142,7 +142,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 6, "id": "95957c78-fa7a-4272-a8c8-79f9184bff15", "metadata": {}, "outputs": [], @@ -155,7 +155,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 7, "id": "dfc99d3c-bcf1-4cf3-be07-8e86cb3dfad9", "metadata": {}, "outputs": [], @@ -272,6 +272,45 @@ "ax = proj_ebgreenway.plot(color='blue')" ] }, + { + "cell_type": "code", + "execution_count": 11, + "id": "403042d9-b747-4cee-99d0-c90cb3b601fa", + "metadata": {}, + "outputs": [], + "source": [ + "import _utils" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "a3f83bc1-6a3c-4103-a96f-7277f7458c06", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Path name: eb_greenway.zip\n", + "Dirname (1st element of path): eb_greenway\n", + "Shapefile name: eb_greenway.shp\n", + "Shapefile component parts folder: eb_greenway/eb_greenway.shp\n" + ] + } + ], + "source": [ + "_utils.read_and_create_shpfiles('eb_greenway_files/project_location_3.geojson', \"eb_greenway.zip\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49174287-58ec-48f3-9194-88925f28a67f", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": 17, @@ -349,9 +388,35 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 3, "id": "3b06f841-35ae-4bd8-ad44-f297a24df0b1", "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'calitp_data'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[3], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01m_utils\u001b[39;00m\n", + "File \u001b[0;32m~/data-analyses/project_prioritization/accessibility/_utils.py:10\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mjson\u001b[39;00m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;66;03m# import geojson\u001b[39;00m\n\u001b[0;32m---> 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mshared_utils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m utils\n\u001b[1;32m 12\u001b[0m local_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/home/jovyan/data-analyses/project_prioritization/accessibility/\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 13\u001b[0m GCS_PATH \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgs://calitp-analytics-data/data-analyses/project_prioritization/\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", + "File \u001b[0;32m~/data-analyses/_shared_utils/shared_utils/__init__.py:1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 2\u001b[0m calitp_color_palette,\n\u001b[1;32m 3\u001b[0m dask_utils,\n\u001b[1;32m 4\u001b[0m geography_utils,\n\u001b[1;32m 5\u001b[0m gtfs_utils,\n\u001b[1;32m 6\u001b[0m gtfs_utils_v2,\n\u001b[1;32m 7\u001b[0m portfolio_utils,\n\u001b[1;32m 8\u001b[0m rt_dates,\n\u001b[1;32m 9\u001b[0m rt_utils,\n\u001b[1;32m 10\u001b[0m schedule_rt_utils,\n\u001b[1;32m 11\u001b[0m styleguide,\n\u001b[1;32m 12\u001b[0m utils,\n\u001b[1;32m 13\u001b[0m )\n\u001b[1;32m 15\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 16\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcalitp_color_palette\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 17\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdask_utils\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mutils\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 27\u001b[0m ]\n", + "File \u001b[0;32m~/data-analyses/_shared_utils/shared_utils/dask_utils.py:13\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdask\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m compute, delayed\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdask\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdelayed\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Delayed \u001b[38;5;66;03m# type hint\u001b[39;00m\n\u001b[0;32m---> 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mshared_utils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m utils\n\u001b[1;32m 15\u001b[0m fs \u001b[38;5;241m=\u001b[39m gcsfs\u001b[38;5;241m.\u001b[39mGCSFileSystem()\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mconcat_and_export\u001b[39m(gcs_folder: \u001b[38;5;28mstr\u001b[39m, file_name: \u001b[38;5;28mstr\u001b[39m, filetype: Literal[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdf\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgdf\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdf\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n", + "File \u001b[0;32m~/data-analyses/_shared_utils/shared_utils/utils.py:14\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mgeopandas\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mgpd\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mrequests\u001b[39;00m\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mcalitp_data\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstorage\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m get_fs\n\u001b[1;32m 16\u001b[0m fs \u001b[38;5;241m=\u001b[39m get_fs()\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msanitize_file_path\u001b[39m(file_name: \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mstr\u001b[39m:\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'calitp_data'" + ] + } + ], + "source": [ + "import _utils" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "68aaec2d-004d-4a90-9cd8-10b700c0fc97", + "metadata": {}, "outputs": [], "source": [] }, diff --git a/project_prioritization/accessibility/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb b/project_prioritization/accessibility/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb index 8f44bc2a0..877ffa42b 100644 --- a/project_prioritization/accessibility/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb +++ b/project_prioritization/accessibility/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb @@ -23,7 +23,7 @@ "text": [ "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:123: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", " warnings.warn(\n", - "/tmp/ipykernel_291/3465571729.py:2: UserWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas will still use PyGEOS by default for now. To force to use and test Shapely 2.0, you have to set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", + "/tmp/ipykernel_309/3465571729.py:2: UserWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas will still use PyGEOS by default for now. To force to use and test Shapely 2.0, you have to set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", "\n", "import os\n", "os.environ['USE_PYGEOS'] = '0'\n", diff --git a/project_prioritization/accessibility/yolo_80_50_bikepath.geojson b/project_prioritization/accessibility/yolo_80_50_bikepath.geojson new file mode 100644 index 000000000..43e35523c --- /dev/null +++ b/project_prioritization/accessibility/yolo_80_50_bikepath.geojson @@ -0,0 +1,66 @@ +{ + "type": "FeatureCollection", + "features": [{ + "geometry": { + "type": "MultiLineString", + "coordinates": [ + [ + [ + -121.63797, + 38.563727 + ], + [ + -121.638799, + 38.563582 + ], + [ + -121.640117, + 38.563484 + ], + [ + -121.640627, + 38.563431 + ], + [ + -121.641029, + 38.563423 + ], + [ + -121.641346, + 38.563506 + ], + [ + -121.641549, + 38.563599 + ], + [ + -121.641721, + 38.563733 + ], + [ + -121.641898, + 38.563842 + ], + [ + -121.641973, + 38.564001 + ], + [ + -121.642107, + 38.564186 + ], + [ + -121.642193, + 38.564496 + ], + [ + -121.642486, + 38.564728 + ] + ] + ] + }, + "type": "Feature", + + }] +} \ No newline at end of file From 9c128da82ae26b49ff1884619922b0dc3f07beec Mon Sep 17 00:00:00 2001 From: natam1 Date: Sun, 13 Aug 2023 23:49:06 +0000 Subject: [PATCH 3/8] add yolo bike lane --- .../accessibility/_utils.py | 2 +- .../accessibility/rewrite_project_files.ipynb | 39 ++++++++---------- .../accessibility/yolo80_50_bikepath.zip | Bin 0 -> 1061 bytes 3 files changed, 19 insertions(+), 22 deletions(-) create mode 100644 project_prioritization/accessibility/yolo80_50_bikepath.zip diff --git a/project_prioritization/accessibility/_utils.py b/project_prioritization/accessibility/_utils.py index 22f0a811d..53d30b013 100644 --- a/project_prioritization/accessibility/_utils.py +++ b/project_prioritization/accessibility/_utils.py @@ -14,7 +14,7 @@ """ For this function you will need to specify the name of the geojson file you want to read in before. example: -file = "proejct_location_bike.geojson" +file = "project_location_bike.geojson" """ def read_and_create_shpfiles(geojson_file, zip_name): diff --git a/project_prioritization/accessibility/rewrite_project_files.ipynb b/project_prioritization/accessibility/rewrite_project_files.ipynb index f7ca470bd..5e588a6da 100644 --- a/project_prioritization/accessibility/rewrite_project_files.ipynb +++ b/project_prioritization/accessibility/rewrite_project_files.ipynb @@ -12,7 +12,7 @@ "text": [ "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:124: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", " warnings.warn(\n", - "/tmp/ipykernel_360/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", + "/tmp/ipykernel_666/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", "\n", "import os\n", "os.environ['USE_PYGEOS'] = '0'\n", @@ -391,34 +391,31 @@ "execution_count": 3, "id": "3b06f841-35ae-4bd8-ad44-f297a24df0b1", "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'calitp_data'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[3], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01m_utils\u001b[39;00m\n", - "File \u001b[0;32m~/data-analyses/project_prioritization/accessibility/_utils.py:10\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mjson\u001b[39;00m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;66;03m# import geojson\u001b[39;00m\n\u001b[0;32m---> 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mshared_utils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m utils\n\u001b[1;32m 12\u001b[0m local_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/home/jovyan/data-analyses/project_prioritization/accessibility/\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 13\u001b[0m GCS_PATH \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgs://calitp-analytics-data/data-analyses/project_prioritization/\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", - "File \u001b[0;32m~/data-analyses/_shared_utils/shared_utils/__init__.py:1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 2\u001b[0m calitp_color_palette,\n\u001b[1;32m 3\u001b[0m dask_utils,\n\u001b[1;32m 4\u001b[0m geography_utils,\n\u001b[1;32m 5\u001b[0m gtfs_utils,\n\u001b[1;32m 6\u001b[0m gtfs_utils_v2,\n\u001b[1;32m 7\u001b[0m portfolio_utils,\n\u001b[1;32m 8\u001b[0m rt_dates,\n\u001b[1;32m 9\u001b[0m rt_utils,\n\u001b[1;32m 10\u001b[0m schedule_rt_utils,\n\u001b[1;32m 11\u001b[0m styleguide,\n\u001b[1;32m 12\u001b[0m utils,\n\u001b[1;32m 13\u001b[0m )\n\u001b[1;32m 15\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 16\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcalitp_color_palette\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 17\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdask_utils\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mutils\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 27\u001b[0m ]\n", - "File \u001b[0;32m~/data-analyses/_shared_utils/shared_utils/dask_utils.py:13\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdask\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m compute, delayed\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdask\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdelayed\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Delayed \u001b[38;5;66;03m# type hint\u001b[39;00m\n\u001b[0;32m---> 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mshared_utils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m utils\n\u001b[1;32m 15\u001b[0m fs \u001b[38;5;241m=\u001b[39m gcsfs\u001b[38;5;241m.\u001b[39mGCSFileSystem()\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mconcat_and_export\u001b[39m(gcs_folder: \u001b[38;5;28mstr\u001b[39m, file_name: \u001b[38;5;28mstr\u001b[39m, filetype: Literal[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdf\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgdf\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdf\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n", - "File \u001b[0;32m~/data-analyses/_shared_utils/shared_utils/utils.py:14\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mgeopandas\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mgpd\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mrequests\u001b[39;00m\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mcalitp_data\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstorage\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m get_fs\n\u001b[1;32m 16\u001b[0m fs \u001b[38;5;241m=\u001b[39m get_fs()\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msanitize_file_path\u001b[39m(file_name: \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mstr\u001b[39m:\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'calitp_data'" - ] - } - ], + "outputs": [], "source": [ "import _utils" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "68aaec2d-004d-4a90-9cd8-10b700c0fc97", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Path name: yolo80_50_bikepath\n", + "Dirname (1st element of path): yolo80_50_bikepath\n", + "Shapefile name: yolo80_50_bikepath.shp\n", + "Shapefile component parts folder: yolo80_50_bikepath/yolo80_50_bikepath.shp\n" + ] + } + ], + "source": [ + "_utils.read_and_create_shpfiles('yolo_80_50_bikepath.geojson', 'yolo80_50_bikepath')" + ] }, { "cell_type": "code", diff --git a/project_prioritization/accessibility/yolo80_50_bikepath.zip b/project_prioritization/accessibility/yolo80_50_bikepath.zip new file mode 100644 index 0000000000000000000000000000000000000000..a6cd44cf812f914c2cc3cc8365bfecbf357ccff4 GIT binary patch literal 1061 zcmWIWW@Zs#U|`^2xYf!V9$N3bz7oir2*hGQT$!JfZ($H`Y7n24nVnjYSdyVvP?S|% z{4@Kyj?pJL$RdKu7xFc5F&gTJpMQ4^mSS5(-itBpzV9 zV-uU;V=r*9SMB`j1_rhuG$WJS%@&#ijmyDpWN}7CazeoKqyv0s;tY%p7z7VL?VGu^ zXl5b1j?uN-Co3(iIi{R4k2%?4EnxUjX|ei*erJ0l1Exo8XjW}s_}cvr$SOvhL0z0t z0JUn{-h{LS2Bo&svc}m@jUMwwq^#LK`Ex;;fX3AP9g_sh6_Osgy7?=}x7Vc{;5fp2 zWCm-{3GS;blcOiqpLAi?_^x(6;)~#f{Rh@>a*;ey9{fG-x9o}i-<59qF`n2TF!#(s z29xUTw_mzVxG6dN)$@&tH@`lb_JcJ~;eW>Y_I!n}I<9k1{c)(P+|99>Yr^?6U%z%M zOt>$$Y#!gH_1ZR{wsB0zKYjgAu=I)d|G!3s@SKSMb=3X7zzK2xU$68SpUi$Pd24p_ zkE+$?9!x*i8fssbZLFCQpIFC?79Kg??+SQ;;lYJF=#vZ5Kl6OMzIB7a)+?qgK>dtN zBFwlGFVG+`SkefhuqS17Gtko%!~_P0C5>ybn*mH==w_fNB7_+Xz_`ZZ4q%c(Hv>I& qAk4_dWkvzI8R#L3Fr%6Yt2=<<8{o~#22#fggdsqib^}#1FaQ9q;8t(| literal 0 HcmV?d00001 From 1d0b2fe53f8c4980b0098832f3a6a2625f59f0ee Mon Sep 17 00:00:00 2001 From: natam1 Date: Mon, 14 Aug 2023 17:34:52 +0000 Subject: [PATCH 4/8] add project zone file structure --- .../210_median_shapefiles/proj_210median.cpg | 0 .../210_median_shapefiles/proj_210median.dbf | Bin .../210_median_shapefiles/proj_210median.prj | 0 .../210_median_shapefiles/proj_210median.shp | Bin .../210_median_shapefiles/proj_210median.shx | Bin .../210_files/210median.geojson | 0 .../EB_Greenway_project_location.cpg | 0 .../EB_Greenway_project_location.dbf | Bin .../EB_Greenway_project_location.prj | 0 .../EB_Greenway_project_location.shp | Bin .../EB_Greenway_project_location.shx | Bin .../eb_greenway_files/project_location.json | 0 .../eb_greenway_files/project_location2.json | 0 .../eb_greenway_files/project_location_3.geojson | 0 .../auxiliary_lane_shpfiles/sc_auxiliary_lane.cpg | 0 .../auxiliary_lane_shpfiles/sc_auxiliary_lane.dbf | Bin .../auxiliary_lane_shpfiles/sc_auxiliary_lane.prj | 0 .../auxiliary_lane_shpfiles/sc_auxiliary_lane.shp | Bin .../auxiliary_lane_shpfiles/sc_auxiliary_lane.shx | Bin .../sc_bikeped_overcrossing.cpg | 0 .../sc_bikeped_overcrossing.dbf | Bin .../sc_bikeped_overcrossing.prj | 0 .../sc_bikeped_overcrossing.shp | Bin .../sc_bikeped_overcrossing.shx | Bin .../bus_on_shoulder_shpfiles/sc_bus_on_shoulder.cpg | 0 .../bus_on_shoulder_shpfiles/sc_bus_on_shoulder.dbf | Bin .../bus_on_shoulder_shpfiles/sc_bus_on_shoulder.prj | 0 .../bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shp | Bin .../bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shx | Bin .../sc_multimodal_street.cpg | 0 .../sc_multimodal_street.dbf | Bin .../sc_multimodal_street.prj | 0 .../sc_multimodal_street.shp | Bin .../sc_multimodal_street.shx | Bin ...ewrite_project_files_santacruz_watsonville.ipynb | 0 .../santacruz_auxiliary_lane.geojson | 0 .../santacruz_bikeped_overcrossing.geojson | 0 .../santacruz_bus_on_shoulder.geojson | 0 .../santacruz_multimodal_street.geojson | 0 .../santacruz_modifications/sc_auxiliary_lane.zip | Bin .../sc_bikeped_overcrossing.zip | Bin .../santacruz_modifications/sc_bus_on_shoulder.zip | Bin .../sc_multimodal_street.zip | Bin .../santacruz_modifications/transit_route.zip | Bin .../yolo80_50_bikepath.zip | Bin .../yolo_80_50_bikepath.geojson | 0 .../add_lanes_shapefiles/us395_add_lanes.cpg | 0 .../add_lanes_shapefiles/us395_add_lanes.dbf | Bin .../add_lanes_shapefiles/us395_add_lanes.prj | 0 .../add_lanes_shapefiles/us395_add_lanes.shp | Bin .../add_lanes_shapefiles/us395_add_lanes.shx | Bin .../bike_ped_shapefiles/us395_bike_ped.cpg | 0 .../bike_ped_shapefiles/us395_bike_ped.dbf | Bin .../bike_ped_shapefiles/us395_bike_ped.prj | 0 .../bike_ped_shapefiles/us395_bike_ped.shp | Bin .../bike_ped_shapefiles/us395_bike_ped.shx | Bin .../rewrite_project_files_us395.ipynb | 0 .../us395_modifications/us395_add_lanes.zip | Bin .../us395_modifications/us395_add_lanes_geo.geojson | 0 .../us395_modifications/us395_bike_ped.geojson | 0 .../us395_modifications/us395_bike_ped.zip | Bin 61 files changed, 0 insertions(+), 0 deletions(-) rename project_prioritization/accessibility/{ => central_ca_projects}/210_files/210_median_shapefiles/proj_210median.cpg (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/210_files/210_median_shapefiles/proj_210median.dbf (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/210_files/210_median_shapefiles/proj_210median.prj (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/210_files/210_median_shapefiles/proj_210median.shp (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/210_files/210_median_shapefiles/proj_210median.shx (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/210_files/210median.geojson (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.cpg (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.dbf (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.prj (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shp (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shx (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/eb_greenway_files/project_location.json (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/eb_greenway_files/project_location2.json (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/eb_greenway_files/project_location_3.geojson (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.cpg (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.dbf (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.prj (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shp (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shx (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.cpg (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.dbf (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.prj (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shp (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shx (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.cpg (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.dbf (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.prj (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shp (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shx (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.cpg (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.dbf (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.prj (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shp (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shx (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/santacruz_auxiliary_lane.geojson (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/santacruz_bikeped_overcrossing.geojson (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/santacruz_bus_on_shoulder.geojson (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/santacruz_multimodal_street.geojson (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/sc_auxiliary_lane.zip (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/sc_bikeped_overcrossing.zip (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/sc_bus_on_shoulder.zip (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/sc_multimodal_street.zip (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/santacruz_modifications/transit_route.zip (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/yolo80_50_bikepath.zip (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/yolo_80_50_bikepath.geojson (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/add_lanes_shapefiles/us395_add_lanes.cpg (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/add_lanes_shapefiles/us395_add_lanes.dbf (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/add_lanes_shapefiles/us395_add_lanes.prj (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shp (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shx (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/bike_ped_shapefiles/us395_bike_ped.cpg (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/bike_ped_shapefiles/us395_bike_ped.dbf (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/bike_ped_shapefiles/us395_bike_ped.prj (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shp (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shx (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/rewrite_project_files_us395.ipynb (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/us395_add_lanes.zip (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/us395_add_lanes_geo.geojson (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/us395_bike_ped.geojson (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us395_modifications/us395_bike_ped.zip (100%) diff --git a/project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.cpg b/project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.cpg similarity index 100% rename from project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.cpg rename to project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.cpg diff --git a/project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.dbf b/project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.dbf similarity index 100% rename from project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.dbf rename to project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.dbf diff --git a/project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.prj b/project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.prj similarity index 100% rename from project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.prj rename to project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.prj diff --git a/project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.shp b/project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.shp similarity index 100% rename from project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.shp rename to project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.shp diff --git a/project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.shx b/project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.shx similarity index 100% rename from project_prioritization/accessibility/210_files/210_median_shapefiles/proj_210median.shx rename to project_prioritization/accessibility/central_ca_projects/210_files/210_median_shapefiles/proj_210median.shx diff --git a/project_prioritization/accessibility/210_files/210median.geojson b/project_prioritization/accessibility/central_ca_projects/210_files/210median.geojson similarity index 100% rename from project_prioritization/accessibility/210_files/210median.geojson rename to project_prioritization/accessibility/central_ca_projects/210_files/210median.geojson diff --git a/project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.cpg b/project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.cpg similarity index 100% rename from project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.cpg rename to project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.cpg diff --git a/project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.dbf b/project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.dbf similarity index 100% rename from project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.dbf rename to project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.dbf diff --git a/project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.prj b/project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.prj similarity index 100% rename from project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.prj rename to project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.prj diff --git a/project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shp b/project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shp similarity index 100% rename from project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shp rename to project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shp diff --git a/project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shx b/project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shx similarity index 100% rename from project_prioritization/accessibility/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shx rename to project_prioritization/accessibility/central_ca_projects/eb_greenway_files/eb_greenway_shapefiles/EB_Greenway_project_location.shx diff --git a/project_prioritization/accessibility/eb_greenway_files/project_location.json b/project_prioritization/accessibility/central_ca_projects/eb_greenway_files/project_location.json similarity index 100% rename from project_prioritization/accessibility/eb_greenway_files/project_location.json rename to project_prioritization/accessibility/central_ca_projects/eb_greenway_files/project_location.json diff --git a/project_prioritization/accessibility/eb_greenway_files/project_location2.json b/project_prioritization/accessibility/central_ca_projects/eb_greenway_files/project_location2.json similarity index 100% rename from project_prioritization/accessibility/eb_greenway_files/project_location2.json rename to project_prioritization/accessibility/central_ca_projects/eb_greenway_files/project_location2.json diff --git a/project_prioritization/accessibility/eb_greenway_files/project_location_3.geojson b/project_prioritization/accessibility/central_ca_projects/eb_greenway_files/project_location_3.geojson similarity index 100% rename from project_prioritization/accessibility/eb_greenway_files/project_location_3.geojson rename to project_prioritization/accessibility/central_ca_projects/eb_greenway_files/project_location_3.geojson diff --git a/project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.cpg b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.cpg similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.cpg rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.cpg diff --git a/project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.dbf b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.dbf similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.dbf rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.dbf diff --git a/project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.prj b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.prj similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.prj rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.prj diff --git a/project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shp b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shp similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shp rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shp diff --git a/project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shx b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shx similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shx rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/auxiliary_lane_shpfiles/sc_auxiliary_lane.shx diff --git a/project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.cpg b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.cpg similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.cpg rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.cpg diff --git a/project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.dbf b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.dbf similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.dbf rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.dbf diff --git a/project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.prj b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.prj similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.prj rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.prj diff --git a/project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shp b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shp similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shp rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shp diff --git a/project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shx b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shx similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shx rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bikeped_overcrossing_shpfiles/sc_bikeped_overcrossing.shx diff --git a/project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.cpg b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.cpg similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.cpg rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.cpg diff --git a/project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.dbf b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.dbf similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.dbf rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.dbf diff --git a/project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.prj b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.prj similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.prj rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.prj diff --git a/project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shp b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shp similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shp rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shp diff --git a/project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shx b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shx similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shx rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/bus_on_shoulder_shpfiles/sc_bus_on_shoulder.shx diff --git a/project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.cpg b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.cpg similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.cpg rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.cpg diff --git a/project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.dbf b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.dbf similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.dbf rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.dbf diff --git a/project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.prj b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.prj similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.prj rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.prj diff --git a/project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shp b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shp similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shp rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shp diff --git a/project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shx b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shx similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shx rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/multimodal_street_shpfiles/sc_multimodal_street.shx diff --git a/project_prioritization/accessibility/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb diff --git a/project_prioritization/accessibility/santacruz_modifications/santacruz_auxiliary_lane.geojson b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/santacruz_auxiliary_lane.geojson similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/santacruz_auxiliary_lane.geojson rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/santacruz_auxiliary_lane.geojson diff --git a/project_prioritization/accessibility/santacruz_modifications/santacruz_bikeped_overcrossing.geojson b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/santacruz_bikeped_overcrossing.geojson similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/santacruz_bikeped_overcrossing.geojson rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/santacruz_bikeped_overcrossing.geojson diff --git a/project_prioritization/accessibility/santacruz_modifications/santacruz_bus_on_shoulder.geojson b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/santacruz_bus_on_shoulder.geojson similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/santacruz_bus_on_shoulder.geojson rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/santacruz_bus_on_shoulder.geojson diff --git a/project_prioritization/accessibility/santacruz_modifications/santacruz_multimodal_street.geojson b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/santacruz_multimodal_street.geojson similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/santacruz_multimodal_street.geojson rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/santacruz_multimodal_street.geojson diff --git a/project_prioritization/accessibility/santacruz_modifications/sc_auxiliary_lane.zip b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/sc_auxiliary_lane.zip similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/sc_auxiliary_lane.zip rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/sc_auxiliary_lane.zip diff --git a/project_prioritization/accessibility/santacruz_modifications/sc_bikeped_overcrossing.zip b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/sc_bikeped_overcrossing.zip similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/sc_bikeped_overcrossing.zip rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/sc_bikeped_overcrossing.zip diff --git a/project_prioritization/accessibility/santacruz_modifications/sc_bus_on_shoulder.zip b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/sc_bus_on_shoulder.zip similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/sc_bus_on_shoulder.zip rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/sc_bus_on_shoulder.zip diff --git a/project_prioritization/accessibility/santacruz_modifications/sc_multimodal_street.zip b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/sc_multimodal_street.zip similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/sc_multimodal_street.zip rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/sc_multimodal_street.zip diff --git a/project_prioritization/accessibility/santacruz_modifications/transit_route.zip b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/transit_route.zip similarity index 100% rename from project_prioritization/accessibility/santacruz_modifications/transit_route.zip rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/transit_route.zip diff --git a/project_prioritization/accessibility/yolo80_50_bikepath.zip b/project_prioritization/accessibility/central_ca_projects/yolo80_50_bikepath.zip similarity index 100% rename from project_prioritization/accessibility/yolo80_50_bikepath.zip rename to project_prioritization/accessibility/central_ca_projects/yolo80_50_bikepath.zip diff --git a/project_prioritization/accessibility/yolo_80_50_bikepath.geojson b/project_prioritization/accessibility/central_ca_projects/yolo_80_50_bikepath.geojson similarity index 100% rename from project_prioritization/accessibility/yolo_80_50_bikepath.geojson rename to project_prioritization/accessibility/central_ca_projects/yolo_80_50_bikepath.geojson diff --git a/project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.cpg b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.cpg similarity index 100% rename from project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.cpg rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.cpg diff --git a/project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.dbf b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.dbf similarity index 100% rename from project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.dbf rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.dbf diff --git a/project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.prj b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.prj similarity index 100% rename from project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.prj rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.prj diff --git a/project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shp b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shp similarity index 100% rename from project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shp rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shp diff --git a/project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shx b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shx similarity index 100% rename from project_prioritization/accessibility/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shx rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/add_lanes_shapefiles/us395_add_lanes.shx diff --git a/project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.cpg b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.cpg similarity index 100% rename from project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.cpg rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.cpg diff --git a/project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.dbf b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.dbf similarity index 100% rename from project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.dbf rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.dbf diff --git a/project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.prj b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.prj similarity index 100% rename from project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.prj rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.prj diff --git a/project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shp b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shp similarity index 100% rename from project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shp rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shp diff --git a/project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shx b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shx similarity index 100% rename from project_prioritization/accessibility/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shx rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/bike_ped_shapefiles/us395_bike_ped.shx diff --git a/project_prioritization/accessibility/us395_modifications/rewrite_project_files_us395.ipynb b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/rewrite_project_files_us395.ipynb similarity index 100% rename from project_prioritization/accessibility/us395_modifications/rewrite_project_files_us395.ipynb rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/rewrite_project_files_us395.ipynb diff --git a/project_prioritization/accessibility/us395_modifications/us395_add_lanes.zip b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/us395_add_lanes.zip similarity index 100% rename from project_prioritization/accessibility/us395_modifications/us395_add_lanes.zip rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/us395_add_lanes.zip diff --git a/project_prioritization/accessibility/us395_modifications/us395_add_lanes_geo.geojson b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/us395_add_lanes_geo.geojson similarity index 100% rename from project_prioritization/accessibility/us395_modifications/us395_add_lanes_geo.geojson rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/us395_add_lanes_geo.geojson diff --git a/project_prioritization/accessibility/us395_modifications/us395_bike_ped.geojson b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/us395_bike_ped.geojson similarity index 100% rename from project_prioritization/accessibility/us395_modifications/us395_bike_ped.geojson rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/us395_bike_ped.geojson diff --git a/project_prioritization/accessibility/us395_modifications/us395_bike_ped.zip b/project_prioritization/accessibility/southern_ca_projects/us395_modifications/us395_bike_ped.zip similarity index 100% rename from project_prioritization/accessibility/us395_modifications/us395_bike_ped.zip rename to project_prioritization/accessibility/southern_ca_projects/us395_modifications/us395_bike_ped.zip From 9c7c079ee7fdf9f294a788997084dfd03b031ce6 Mon Sep 17 00:00:00 2001 From: natam1 Date: Mon, 14 Aug 2023 17:43:26 +0000 Subject: [PATCH 5/8] add us101_cc_pedundercrossing project locations --- .../accessibility/rewrite_project_files.ipynb | 31 +++++++++++++++++- .../us101_cc_ped_undercrossing.zip | Bin 0 -> 912 bytes .../us101_cc_pedundercrossing.geojson | 20 +++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 project_prioritization/accessibility/southern_ca_projects/us101_cc_ped_undercrossing.zip create mode 100644 project_prioritization/accessibility/southern_ca_projects/us101_cc_pedundercrossing.geojson diff --git a/project_prioritization/accessibility/rewrite_project_files.ipynb b/project_prioritization/accessibility/rewrite_project_files.ipynb index 5e588a6da..fd20505aa 100644 --- a/project_prioritization/accessibility/rewrite_project_files.ipynb +++ b/project_prioritization/accessibility/rewrite_project_files.ipynb @@ -12,7 +12,7 @@ "text": [ "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:124: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", " warnings.warn(\n", - "/tmp/ipykernel_666/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", + "/tmp/ipykernel_833/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", "\n", "import os\n", "os.environ['USE_PYGEOS'] = '0'\n", @@ -420,8 +420,37 @@ { "cell_type": "code", "execution_count": null, + "id": "fdf7f513-537c-49f2-8bae-5a3b5504fcf7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 5, "id": "77fd58d5-65d0-4c0c-808f-cc7e313018ba", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Path name: us101_cc_ped_undercrossing\n", + "Dirname (1st element of path): us101_cc_ped_undercrossing\n", + "Shapefile name: us101_cc_ped_undercrossing.shp\n", + "Shapefile component parts folder: us101_cc_ped_undercrossing/us101_cc_ped_undercrossing.shp\n" + ] + } + ], + "source": [ + "_utils.read_and_create_shpfiles('us101_cc_pedundercrossing.geojson', 'us101_cc_ped_undercrossing')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "656f258a-6e04-4f55-b228-396c2c77ef7a", + "metadata": {}, "outputs": [], "source": [] } diff --git a/project_prioritization/accessibility/southern_ca_projects/us101_cc_ped_undercrossing.zip b/project_prioritization/accessibility/southern_ca_projects/us101_cc_ped_undercrossing.zip new file mode 100644 index 0000000000000000000000000000000000000000..c422fa3502b3d03666fa3096f4bfb5a08714c145 GIT binary patch literal 912 zcmWIWW@Zs#U|`^2kO}1r|FfXeNgl}a17bNKE-f}RFpN)5jxR_}i7(AdNi9k)$}cX? z%uClxNlHsz_v}G(N6)obOy$uB?1I^Q5Gg z6Fqz77k8U_Ervd_VyM|UJ!=n=p65N1w23pa}joQazXlM zo^RK;ZZOz-#gqkT4kMEYGw%2Y8VCkU8bK8P)PQaldW1tvVqjR(7>(a7VDzJ#g&x%i zv(^$as{q|B^e9G{#mI=)kH82=Hw!)F5oT?}Zx%2f0=!w-K Date: Tue, 15 Aug 2023 23:39:59 +0000 Subject: [PATCH 6/8] add us101 SR92 project locations --- .../ontario_transit_tunnel.geojson | 50 ++++ .../accessibility/rewrite_project_files.ipynb | 114 +++++++- .../accessibility/us101_SR92.geojson | 268 ++++++++++++++++++ .../accessibility/us101_SR92_locations.zip | Bin 0 -> 1674 bytes 4 files changed, 431 insertions(+), 1 deletion(-) create mode 100644 project_prioritization/accessibility/ontario_transit_tunnel.geojson create mode 100644 project_prioritization/accessibility/us101_SR92.geojson create mode 100644 project_prioritization/accessibility/us101_SR92_locations.zip diff --git a/project_prioritization/accessibility/ontario_transit_tunnel.geojson b/project_prioritization/accessibility/ontario_transit_tunnel.geojson new file mode 100644 index 000000000..e6c629180 --- /dev/null +++ b/project_prioritization/accessibility/ontario_transit_tunnel.geojson @@ -0,0 +1,50 @@ +{ + "type": "FeatureCollection", + "features": [{ + "geometry": { + "type": "MultiLineString", + "coordinates": [ [ + [ + [ + -117.56, + 34.092 + ], + [ + -117.55803823383759, + 34.063858935422765 + ] + ], + [ + [ + -117.55803823383759, + 34.063858935422765 + ], + [ + -117.59654045104982, + 34.06262640034367 + ] + ], + [ + [ + -117.59654045104982, + 34.06262640034367 + ], + [ + -117.596, + 34.061 + ] + ], + [ + [ + -117.596, + 34.061 + ], + [ + -117.586, + 34.061 + ] + ] + ]]}, + "type": "Feature", + }] +} \ No newline at end of file diff --git a/project_prioritization/accessibility/rewrite_project_files.ipynb b/project_prioritization/accessibility/rewrite_project_files.ipynb index fd20505aa..9fd2a5972 100644 --- a/project_prioritization/accessibility/rewrite_project_files.ipynb +++ b/project_prioritization/accessibility/rewrite_project_files.ipynb @@ -12,7 +12,7 @@ "text": [ "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:124: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", " warnings.warn(\n", - "/tmp/ipykernel_833/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", + "/tmp/ipykernel_312/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", "\n", "import os\n", "os.environ['USE_PYGEOS'] = '0'\n", @@ -446,6 +446,118 @@ "_utils.read_and_create_shpfiles('us101_cc_pedundercrossing.geojson', 'us101_cc_ped_undercrossing')" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "3fd7469d-cb9a-436f-b828-fba779b239dc", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eec8a2ad-cc96-4ab2-baa0-783cfbff4ad0", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7ac57753-7a4c-407b-a2ae-cc4fbca7d41c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test = gpd.read_file('us101_SR92.geojson')\n", + "ax = test.plot(color='blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a5306d86-b691-4c48-800f-8b0ce242b4b7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Path name: us101_SR92_locations\n", + "Dirname (1st element of path): us101_SR92_locations\n", + "Shapefile name: us101_SR92_locations.shp\n", + "Shapefile component parts folder: us101_SR92_locations/us101_SR92_locations.shp\n" + ] + } + ], + "source": [ + "_utils.read_and_create_shpfiles('us101_SR92.geojson', 'us101_SR92_locations')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cb27fa6f-03e3-4b0c-ae62-840d043dbce4", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0659377f-f646-4749-9f03-9253f86f2d2f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5cca3910-9b2f-4272-bec1-d7fe07adb99c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9cb6514d-998b-499d-88a8-082d19831ed9", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c731db6e-8d51-4b7f-b72c-61011db95055", + "metadata": {}, + "outputs": [], + "source": [ + "## mapping this first" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "55af1a25-fc42-4ba1-828f-b0d9b1896313", + "metadata": {}, + "outputs": [], + "source": [ + "# ontario = gpd.read_file('ontario_transit_tunnel.geojson')\n", + "# ax = ontario.plot(color='blue')" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/project_prioritization/accessibility/us101_SR92.geojson b/project_prioritization/accessibility/us101_SR92.geojson new file mode 100644 index 000000000..11f3300af --- /dev/null +++ b/project_prioritization/accessibility/us101_SR92.geojson @@ -0,0 +1,268 @@ +{ + "type": "FeatureCollection", + "features": [{ + "geometry": { + "type": "MultiLineString", + "coordinates":[ + [ + [ + -122.213448, + 37.493052 + ], + [ + -122.213452, + 37.491656 + ], + [ + -122.213531, + 37.490867 + ], + [ + -122.213577, + 37.490627 + ], + [ + -122.213754, + 37.49039 + ], + [ + -122.213996, + 37.490075 + ], + [ + -122.214751, + 37.489564 + ], + [ + -122.215018, + 37.48945 + ], + [ + -122.215312, + 37.48933 + ], + [ + -122.215061, + 37.489174 + ], + [ + -122.215402, + 37.488997 + ], + [ + -122.215657, + 37.488963 + ], + [ + -122.216683, + 37.488826 + ], + [ + -122.218333, + 37.489053 + ] + ], + [ + [ + -122.215402, + 37.488997 + ], + [ + -122.215038, + 37.488986 + ], + [ + -122.214905, + 37.488989 + ], + [ + -122.214847, + 37.488979 + ], + [ + -122.214814, + 37.488962 + ], + [ + -122.21474, + 37.488902 + ] + ], + [ + [ + -122.216296, + 37.492993 + ], + [ + -122.213036, + 37.492987 + ] + ], + [ + [ + -122.213329, + 37.49377 + ], + [ + -122.213314, + 37.492925 + ] + ], + [ + [ + -122.213279, + 37.493089 + ], + [ + -122.213214, + 37.492539 + ], + [ + -122.212893, + 37.492045 + ], + [ + -122.212299, + 37.491371 + ], + [ + -122.21182, + 37.490588 + ], + [ + -122.21192, + 37.489907 + ], + [ + -122.212149, + 37.489578 + ], + [ + -122.212699, + 37.489073 + ], + [ + -122.2133, + 37.488552 + ], + [ + -122.213658, + 37.488234 + ], + [ + -122.213893, + 37.488018 + ], + [ + -122.214015, + 37.487616 + ], + [ + -122.214179, + 37.487009 + ], + [ + -122.214387, + 37.486186 + ], + [ + -122.214758, + 37.485211 + ], + [ + -122.215059, + 37.484865 + ], + [ + -122.215666, + 37.484439 + ], + [ + -122.216224, + 37.484037 + ] + ], + [ + [ + -122.216374, + 37.485585 + ], + [ + -122.21438, + 37.485324 + ] + ], + [ + [ + -122.214873, + 37.485415 + ], + [ + -122.212106, + 37.485052 + ] + ], + [ + [ + -122.216417, + 37.487077 + ], + [ + -122.215059, + 37.487156 + ], + [ + -122.214337, + 37.487105 + ], + [ + -122.213893, + 37.487037 + ] + ], + [ + [ + -122.212399, + 37.486782 + ], + [ + -122.21433, + 37.487088 + ] + ], + [ + [ + -122.213489, + 37.492985 + ], + [ + -122.212953, + 37.492985 + ], + [ + -122.212774, + 37.492645 + ], + [ + -122.212395, + 37.492117 + ], + [ + -122.212074, + 37.491652 + ], + [ + -122.211695, + 37.491034 + ], + [ + -122.210908, + 37.490019 + ] + ] + ] + }, + "type": "Feature", + + }] +} \ No newline at end of file diff --git a/project_prioritization/accessibility/us101_SR92_locations.zip b/project_prioritization/accessibility/us101_SR92_locations.zip new file mode 100644 index 0000000000000000000000000000000000000000..6e5eaff8567eae46241f8c3eed50ceca8971e734 GIT binary patch literal 1674 zcmWIWW@Zs#U|`^2c+|ol?tCnIpB0do1H=+QTv}{sU>F}9WN8$ilb@Vel9``ZtXG^- zk(?0lJm~=6nK%Pu0|vpvJ4Nlc)_prBTXAvQo3qpR`tkjKzH7@B=AWV8>+cxdd;g@t z+1|(?DIp<=i6H>Rz8vp&1w24|xbWGRT#){m=iBwI8w|EyF=atBAu;{>K6#*SKYS*n zB&8*BwmUYl2|o4$2Yc1duWn#q3qmtg{lDH4EoKIW0v5c%P|$n1 zT4!pZ1p9}_lP0xpy<8Y`>hGkdmlThrsZXD&x=kkKNQlYxsosTCI&_v4$ZQXoG1N9YC<2*xIf+PC~XW{-l+fSz2`>L}Qnj)XS@H_<-*sxV-vX(#P7A{ z@@}a9b>oGwh2`Bt&FtQJ>&(6#aQ57JeD%rC1+%5^ZiqO8R-8XICtvW*dG2eoTeNRSAN~1Z{y&zbXLn7{nZ}qBq)P@)D{-SroSoQei8%JWFIDVTvCFOlM2m7;`Upo_|LKQ=p z|5hj577gN!p1swmLzrvUnfD%N)4$|=50}%~pkuo9aMa1}#v^6ZBX90b6i%1#kD4(% zYSKcM{HyUHdwAnD_Z*EnS|xp-QGeRK@;?mzvsF}M+N15<#J(Ps+28-g#%TTbGZ~o%P(a-X~kDHN`uOnO z!H;dz#MHd3^!gMR?z`xv=izjaQEr{%zj=BWy*LbwlZ&~XlZ$PcWtF|TZIy$Im6el& zjUV5LnA@P>A0NJe^PTI;m6cCto|N>mVyj}?Xtl6zo}xo>@a4uw35w3e!okVP-paww z-rmB=3&McK0V9(LGwyN`=x#7r(g>n(m6GVDpqF+KGZ+|_G#2181z7f>n}S~AAxznX z%M@Vwhi(db5r;5^oe`&x3eZhKk4S_m>A<2BYq$WTHNcyd4WyD42;+dZiLrus08FHg Aga7~l literal 0 HcmV?d00001 From 2a01b03a80532cddea9795d069462c8f94c3f6a6 Mon Sep 17 00:00:00 2001 From: natam1 Date: Mon, 21 Aug 2023 19:21:12 +0000 Subject: [PATCH 7/8] add us101ConnectedCommunities project location --- .../accessibility/rewrite_project_files.ipynb | 49 +++- ...01_SR92.geojson => us101_woodside.geojson} | 0 ...tions.zip => us101_woodside_locations.zip} | Bin .../accessibility/us101cc_bikeped.geojson | 270 ++++++++++++++++++ .../us101cc_bikeped_locations.zip | Bin 0 -> 1754 bytes 5 files changed, 308 insertions(+), 11 deletions(-) rename project_prioritization/accessibility/{us101_SR92.geojson => us101_woodside.geojson} (100%) rename project_prioritization/accessibility/{us101_SR92_locations.zip => us101_woodside_locations.zip} (100%) create mode 100644 project_prioritization/accessibility/us101cc_bikeped.geojson create mode 100644 project_prioritization/accessibility/us101cc_bikeped_locations.zip diff --git a/project_prioritization/accessibility/rewrite_project_files.ipynb b/project_prioritization/accessibility/rewrite_project_files.ipynb index 9fd2a5972..4910b4271 100644 --- a/project_prioritization/accessibility/rewrite_project_files.ipynb +++ b/project_prioritization/accessibility/rewrite_project_files.ipynb @@ -12,7 +12,7 @@ "text": [ "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:124: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", " warnings.warn(\n", - "/tmp/ipykernel_312/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", + "/tmp/ipykernel_316/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", "\n", "import os\n", "os.environ['USE_PYGEOS'] = '0'\n", @@ -388,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "id": "3b06f841-35ae-4bd8-ad44-f297a24df0b1", "metadata": {}, "outputs": [], @@ -464,7 +464,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "id": "7ac57753-7a4c-407b-a2ae-cc4fbca7d41c", "metadata": {}, "outputs": [ @@ -480,7 +480,7 @@ } ], "source": [ - "test = gpd.read_file('us101_SR92.geojson')\n", + "test = gpd.read_file('us101_woodside.geojson')\n", "ax = test.plot(color='blue')" ] }, @@ -502,7 +502,7 @@ } ], "source": [ - "_utils.read_and_create_shpfiles('us101_SR92.geojson', 'us101_SR92_locations')" + "_utils.read_and_create_shpfiles('us101_woodside.geojson', 'us101_woodside_locations')" ] }, { @@ -515,19 +515,46 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "0659377f-f646-4749-9f03-9253f86f2d2f", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "image/png": "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RMT/jt8tnmPVoL6+HrvdzqJFi5g1a5bbe7GxsSxbtozx48c3+fmGULV//37y8/MbDVUVFRWMHDmSIUOGsGbNGo9DlYiIiMiF4FGwysjIICkpCYvFQm1tLevWraOgoIDc3FwiIyMbnbBusVjo3bu3a7l///5kZmYyceJEHA4HkydPxmq1snXrVurq6qiurgacVxsGBgZSUVHBiBEj6NWrF08++ST/+te/XH21dIK8iIiIyPngUbA6evQoaWlpVFVVER4eTlxcHLm5uYwZM6bZfZSXl2Oz2QDnSFROTg4A8fHxbu3y8/MZMWIE27dv58CBAxw4cIDo6Gi3Nq08iykiIiLiVa2eY+Uv/O0crYiIiPjf8VuTlURERES8RMFKREREWqWqCr75xtdVtA0KViIiItIqGRkwcCA4HL6uxPcUrERERKTFTp+GvXth2jTo2NHX1fheq+9jJSIiIhevDh2gsBBOnvR1JW2DRqxERESkVUwmCA72dRVtg4KViIiIiJcoWImIiIh4iYKViIiIiJcoWImIiIh4iYKViIiIiJcoWImIiIh4iYKViIiIiJdcNDcINQwDcD4lW0RERPxDw3G74Tje1l00waq2thaAmJgYH1ciIiIinqqtrSU8PNzXZZyTyfCXCNhK9fX1VFZW0rlzZ0wmk6/LcampqSEmJoYvvvgCs9ns63J8RttB2wC0DUDbALQNQNugQcN2+Oijj+jXrx8BAW1/BtNFM2IVEBBAdHS0r8toktlsvqj/8TTQdtA2AG0D0DYAbQPQNmhw+eWX+0WoAk1eFxEREfEaBSsRERERL1Gw8rGgoCAWLlxIUFCQr0vxKW0HbQPQNgBtA9A2AG2DBv64HS6ayesiIiIi55tGrERERES8RMFKRERExEsUrERERES8RMFKRERExEsUrDywePFiEhMTCQkJoUuXLo22uffeexkyZAhBQUHEx8c32ub1118nPj6ekJAQevXqxdKlS8/6vZ9//jkzZ86kd+/eBAcH06dPHxYuXMipU6fc2n344YcMHz6cTp06ERMTw+9///sz+tqwYQP9+/enU6dOxMbG8te//rVZv/v3+Wo7NOe7165di8lkavR19OhRAAoKChp9v7q6urmboE1vA6DR32/9+vVubQoKCrj66qsJCgqib9++rF279pzf7WkdvtoGH3zwAampqcTExBAcHMyPf/xjnn76abc2F8N+cPjwYW655RZCQkLo0aMHDz74IKdPn3Zr48/7wddff83tt9+O2WymS5cuzJw5k2PHjrnef/zxxxv9bxwaGupq09jfjE6dOrWbbfD55583ug3ee+89t378/dhwru1QUFBAcnIyUVFRhIaGEh8fz2uvvebWhzf2BVCw8sipU6eYMmUKv/zlL8/a7j/+4z+49dZbG31v27Zt3H777cydO5e9e/fy3HPPsWzZMp599tkm+/v444+pr6/nhRdeoKysjGXLlvH888/zm9/8xtWmpqaGG2+8kV69erFnzx6WLl3K448/zh//+EdXm507d5KamsrMmTMpLi4mJSWFlJQU9u7d6xfboTnffeutt1JVVeX2Gjt2LNdffz09evRwa1teXu7W7ofvt6aOBr7YBg3WrFnj9vulpKS43vvss8+45ZZbGDlyJCUlJdx///3MmjWL3Nzcs/bZkjp8sQ327NlDjx49ePXVVykrK+ORRx4hIyOj0X7b635QV1fHLbfcwqlTp9i5cycvv/wya9eu5bHHHnO18ff94Pbbb6esrIzt27ezdetW/v73v3PXXXe53v/P//zPM/4eDBgwgClTprj1Yzab3docOnSomb+9U1veBg3efvttt99xyJAhrvfaw7HhXNth586dxMXFsWnTJj788ENmzJhBWloaW7dudeuntfsCAIZ4bM2aNUZ4ePhZ2yxcuNAYNGjQGetTU1ONyZMnu61bsWKFER0dbdTX1ze7ht///vdG7969XcvPPfec0bVrV8Nut7vWpaenG/369XMtT5061bjlllvc+hk2bJgxZ86cZn/v9/lyOzTnuw3DMI4ePWp07NjReOWVV1zr8vPzDcD45ptvzvl5b9Thi20AGNnZ2U1+9qGHHjIGDhzotu7WW281xo4de87v9aSOBr7eDwzDMO6++25j5MiRruX2vh/89a9/NQICAozq6mrXuqysLMNsNrv+TvjzfvDRRx8ZgFFYWOhat23bNsNkMhkVFRWNfqakpMQAjL///e8e1d1cbXEbfPbZZwZgFBcXN1mTvx8bWrIvGIZh3HzzzcaMGTM8qrs5NGJ1gdnt9jOGFoODgzly5IhHydhmsxEREeFa3rVrFz//+c8JDAx0rRs7dizl5eV88803rjajR49262fs2LHs2rWrJb9Kq3hrO5zLK6+8QkhICJMnTz7jvfj4eKKiohgzZgzvvvuu176zuc73Nrjnnnu49NJLGTp0KKtXr8b43i3r2sq+cKH2Azjz30yD9rof7Nq1i9jYWC677DLXurFjx1JTU0NZWZmrjb/uB7t27aJLly5cc801rnWjR48mICCA3bt3N/qZVatWcdVVVzF8+HC39ceOHaNXr17ExMSQnJzs2j4X0vneBhMmTKBHjx5cd9115OTknNFPW9gP4MLtC9D43wRv7AsKVhfY2LFj2bx5M++88w719fV88sknPPXUUwBUVVU1q48DBw7wzDPPMGfOHNe66upqtz+ggGu5Yc5IU208mVPiLd7YDs3x0ksvMW3aNIKDg13roqKieP7559m0aRObNm0iJiaGESNGYLVavfa9zXE+t8Fvf/tbXn/9dbZv386kSZO4++67eeaZZ1zvN7Uv1NTU8N1337Xquz1xofaDnTt38pe//MXt1EB73w9a8zfBH/aD6urqM07bdujQgYiIiEb/pp08eZLXXnuNmTNnuq3v168fq1ev5o033uDVV1+lvr6exMREjhw54qXfrnnO1zYICwvjqaeeYsOGDbz55ptcd911pKSkuIUrfz82eLovgHMeV2FhITNmzHCt89a+cNEHq4cffrjJyc4Nr48//thr3zd79mx+9atfMW7cOAIDA7n22mu57bbbAJr15O6KigpuuukmpkyZwuzZs71Wl79th+bYtWsX+/bta/QP6Zw5cxgyZAiJiYmsXr2axMRE0tLS2s02WLBgAT/72c8YPHgw6enpPPTQQ82aAAoQEhLSLrZBg71795KcnMzChQu58cYbXesvhv2gNdrbfpCdnU1tbS3Tp093W5+QkEBaWhrx8fFcf/31bN68me7du3Prrbe2i/3g0ksvZf78+QwbNoyf/vSnLFmyhF/84hfN/nvQHo8N+fn5zJgxgxdffJGBAwe61je1L7zwwgse9d/BK1X6sQceeIA777zzrG2uuOIKr32fyWTiiSee4L//+7+prq6me/fuvPPOO836nsrKSkaOHEliYqLbpHSAyMhI/vnPf7qta1iOjIw8a5vIyEi/2g7NtWrVKuLj490maTZl6NCh5Ofns2/fvrO287dt0GDYsGH87ne/w263ExQU1OS+EBYWRmFh4Vn78qdt8NFHH3HDDTdw11138eijj56zfXvaDyIjI3n//ffd1jX3b4I/7AeRkZGuK30bnD59mq+//tr1+33fqlWrGDdu3BkjMz/UsWNHBg8ezOnTp9v8fuDpNmgwbNgwtm/f7taPPx8bPNkOO3bsYPz48Sxbtoy0tLSz1tKwLxw4cMCj3+GiD1bdu3ene/fuF/x7L7nkEi6//HIA/vznP5OQkHDWOioqKhg5ciRDhgxhzZo1ZyT3hIQEHnnkERwOBx07dgRg+/bt9OvXj65du7ravPPOO9x///2uz23fvt313f6wHZrr2LFjvP7662RmZjarfUlJCRaLhf79+7f6uz11vrbB95WUlNC1a1fXg0wTEhLOuJx6+/bt/OxnP2s326CsrIxRo0Yxffp0Fi9e3KzPtKf9ICEhgcWLF3P06FHXaZLt27djNpsZMGCAq42/7gcJCQl8++237Nmzx/V/nvLy8qivr2fYsGFubT/77DPy8/PPmFvUmLq6OkpLS7n55pvb1Tb4vpKSEqKiotz68edjQ3O3Q0FBAePGjeOJJ55o9MrJH/r+vuCRVk9/v4gcOnTIKC4uNhYtWmSEhYUZxcXFRnFxsVFbW+tqs3//fqO4uNiYM2eOcdVVV7naNFyF869//cvIysoy9u3bZxQXFxv33nuv0alTJ2P37t2uPnbv3m3069fPOHLkiGEYhnHkyBGjb9++xg033GAcOXLEqKqqcr0afPvtt8Zll11m3HHHHcbevXuN9evXGyEhIcYLL7zgavPuu+8aHTp0MJ588klj3759xsKFC42OHTsapaWlfrEdmvvdhmEYq1atMjp16tToFV/Lli0ztmzZYuzfv98oLS017rvvPiMgIMB4++2328U2yMnJMV588UWjtLTU2L9/v/Hcc88ZISEhxmOPPebq4+DBg0ZISIjx4IMPGvv27TNWrlxpXHLJJcZbb73VLrZBaWmp0b17d+MXv/iF27+Xo0ePuvpo7/vB6dOnjZ/85CfGjTfeaJSUlBhvvfWW0b17dyMjI8PVh7/vBzfddJMxePBgY/fu3cY//vEP48orrzRSU1PPqPHRRx81evbsaZw+ffqM9xYtWmTk5uYan376qbFnzx7jtttuMzp16mSUlZW1i22wdu1aY926dca+ffuMffv2GYsXLzYCAgKM1atXu9q0h2PDubZDXl6eERISYmRkZLj9Tfjqq69cbbyxLxiGYShYeWD69OkGcMYrPz/f1eb6669vtM1nn31mGIZzp7n22muN0NBQIyQkxLjhhhuM9957z+17Gi4Db/jMmjVrGu3zh7n4gw8+MK677jojKCjIuPzyy40lS5ac8Tu8/vrrxlVXXWUEBgYaAwcONN58802/2Q7N/W7DMIyEhARj2rRpjdb/xBNPGH369DE6depkREREGCNGjDDy8vLazTbYtm2bER8fb4SFhRmhoaHGoEGDjOeff96oq6s7o+/4+HgjMDDQuOKKK4w1a9a0m22wcOHCRt/v1auXq4/2vh8YhmF8/vnnRlJSkhEcHGxceumlxgMPPGA4HI4z+vbX/eCrr74yUlNTjbCwMMNsNhszZsw44/9k1dXVGdHR0cZvfvObRuu///77DYvFYgQGBhqXXXaZcfPNNxtWq7XdbIO1a9caP/7xj42QkBDDbDYbQ4cONTZs2HDG7+Dvx4ZzbYemarv++utdbbyxLxiGYZgM43vXYIuIiIhIi130VwWKiIiIeIuClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiX/H/8sX+wEBrMNQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test = gpd.read_file('us101cc_bikeped.geojson')\n", + "ax = test.plot(color='blue')\n" + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "5cca3910-9b2f-4272-bec1-d7fe07adb99c", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Path name: us101cc_bikeped_locations\n", + "Dirname (1st element of path): us101cc_bikeped_locations\n", + "Shapefile name: us101cc_bikeped_locations.shp\n", + "Shapefile component parts folder: us101cc_bikeped_locations/us101cc_bikeped_locations.shp\n" + ] + } + ], + "source": [ + "_utils.read_and_create_shpfiles('us101cc_bikeped.geojson', 'us101cc_bikeped_locations')" + ] }, { "cell_type": "code", diff --git a/project_prioritization/accessibility/us101_SR92.geojson b/project_prioritization/accessibility/us101_woodside.geojson similarity index 100% rename from project_prioritization/accessibility/us101_SR92.geojson rename to project_prioritization/accessibility/us101_woodside.geojson diff --git a/project_prioritization/accessibility/us101_SR92_locations.zip b/project_prioritization/accessibility/us101_woodside_locations.zip similarity index 100% rename from project_prioritization/accessibility/us101_SR92_locations.zip rename to project_prioritization/accessibility/us101_woodside_locations.zip diff --git a/project_prioritization/accessibility/us101cc_bikeped.geojson b/project_prioritization/accessibility/us101cc_bikeped.geojson new file mode 100644 index 000000000..d3231b627 --- /dev/null +++ b/project_prioritization/accessibility/us101cc_bikeped.geojson @@ -0,0 +1,270 @@ +{ + "type": "FeatureCollection", + "features": [{ + "geometry": { + "type": "MultiLineString", + "coordinates":[ + [ + [ + -119.20599, + 34.250277 + ], + [ + -119.196317, + 34.251772 + ] + ], + [ + [ + -119.196948, + 34.251643 + ], + [ + -119.195589, + 34.251858 + ], + [ + -119.194615, + 34.25208 + ], + [ + -119.193859, + 34.252327 + ], + [ + -119.193069, + 34.25265 + ], + [ + -119.192468, + 34.25296 + ], + [ + -119.192388, + 34.253005 + ], + [ + -119.1916, + 34.253455 + ], + [ + -119.190431, + 34.254183 + ], + [ + -119.189196, + 34.254962 + ], + [ + -119.187524, + 34.255969 + ], + [ + -119.185058, + 34.257473 + ] + ], + [ + [ + -119.185329, + 34.257272 + ], + [ + -119.182834, + 34.258829 + ], + [ + -119.180142, + 34.260506 + ], + [ + -119.177185, + 34.262288 + ] + ], + [ + [ + -119.177373, + 34.262152 + ], + [ + -119.176, + 34.263 + ], + [ + -119.173854, + 34.264333 + ], + [ + -119.173536, + 34.26451 + ], + [ + -119.172733, + 34.265006 + ] + ], + [ + [ + -119.172865, + 34.264891 + ], + [ + -119.171317, + 34.265883 + ], + [ + -119.170109, + 34.266607 + ], + [ + -119.169344, + 34.267059 + ], + [ + -119.167152, + 34.268394 + ] + ], + [ + [ + -119.167385, + 34.268291 + ], + [ + -119.166173, + 34.269023 + ], + [ + -119.164632, + 34.269948 + ], + [ + -119.162433, + 34.27128 + ], + [ + -119.161232, + 34.272059 + ], + [ + -119.159627, + 34.273002 + ], + [ + -119.157879, + 34.274092 + ], + [ + -119.156145, + 34.27514 + ], + [ + -119.155026, + 34.275816 + ] + ], + [ + [ + -119.155166, + 34.27571 + ], + [ + -119.154719, + 34.275994 + ], + [ + -119.154347, + 34.276339 + ], + [ + -119.153807, + 34.277018 + ], + [ + -119.153314, + 34.277704 + ], + [ + -119.152896, + 34.278161 + ], + [ + -119.152191, + 34.279007 + ] + ], + [ + [ + -119.152286, + 34.278935 + ], + [ + -119.15145, + 34.279547 + ], + [ + -119.150667, + 34.280309 + ], + [ + -119.149598, + 34.281301 + ], + [ + -119.148436, + 34.282379 + ] + ], + [ + [ + -119.148769, + 34.282122 + ], + [ + -119.147707, + 34.283067 + ] + ], + [ + [ + -119.147796, + 34.282964 + ], + [ + -119.146577, + 34.284136 + ], + [ + -119.146163, + 34.284508 + ], + [ + -119.144731, + 34.285896 + ], + [ + -119.144226, + 34.286324 + ], + [ + -119.143708, + 34.286844 + ] + ], + [ + [ + -119.033554, + 34.216947 + ], + [ + -119.033039, + 34.216747 + ] + ] + ] + }, + "type": "Feature", + + }] +} \ No newline at end of file diff --git a/project_prioritization/accessibility/us101cc_bikeped_locations.zip b/project_prioritization/accessibility/us101cc_bikeped_locations.zip new file mode 100644 index 0000000000000000000000000000000000000000..dadfd5d546738854c11e9f10f14a065844e4752a GIT binary patch literal 1754 zcmWIWW@Zs#U|`^2I2J4r{!ZW#vpX{bLkSB5gDgll~rhvFWjgQKnnxl1a~> ze`$EO@PvwOHpnI?OyPf;xy>@MiGp1HXC|_hZCIN-?POqt(4!Og*zFTn-mW+h zEBYu-F6OQCubl_B+_B|uPiS-6+-7{|!A+q$3A@^7%LK*eDR-UqKOoaCG4t(*%Cp?7 zG&gL_TjjysC%xgkW>d7)>3)F?&vxH=b9{qu#hX9fe2o`cLS$z(r7q@eW_vKF^uFxA z17{{Vzr0#t9(&Bwz5Vby&0;RkrtCAXa_&BK>~-(9nX&4W*4c(yy*HuH56AT}UGCnn zFXv3C-W)Ltt7yLcA--Ho4kwm)R_e>_*?KXCyRSZ=c9p!DMY#9ULuuxI*E}C6*86jd z{*d}uktFhO&77B zpW)syLGpnV+w5SW`<)M0-fTT*GUHokjB?X`@6_$j4wlBpE|PjU`PiQqQ57#TRtE|H z>3V;52YdJ}nJ+uI{dXDr-hPl`pB7}e#`;l`1&{YnH?Q`_x!BOsi zm&JE1iCg?r;?Kj)H|BBgKIIzm{6O;W_c~FBrWX0{R5i%mnlxwSi}yUw^LAcc(m!*b z$?3^kbY_2CI`cnk07?!Ft#@8u3CwvDff#=dEGWtlB=qs&yMrIwrirO} zS?TpDF5Gv~OV7jUAfwzm$A9zmE_!ho8YdTXJ0}<0GRrD^bK5Eh7b`0#2OB@W5iz$x z!9PBH0p~l{l`AWs&O9mUWyMy-w$W-~-8@By;^51Tj}jD}i-m)emA#dNoxQzH-JFt?mb~tnKtf7FLP5%d!~<-1Y+@69>;(??s-0imz`z!SX0oB;JK^{x=J6 zF#F$n_d74Vu;jo(c}WRF1A~nWXtw5fzboJY+Q>!F*5rcp&ph9*Z{1+9^@=GA&=^K0 z5oX-QDbPGHSkefh@D{Gz;7-a@5_Hi2pj68Is u(BlVT)C9an0b>i@DD*%_7{$hl&sD%E2=HcQ11V<(!g59i24A2C1_l67Te0^5 literal 0 HcmV?d00001 From a5fa0f335b464942812e7c770d6a60e8cb3abdf5 Mon Sep 17 00:00:00 2001 From: natam1 Date: Wed, 30 Aug 2023 00:22:30 +0000 Subject: [PATCH 8/8] saving progress --- ...s-US101_Woodside_BikePed-new-stops.geojson | 4 + ...ility Analysis-US101_Woodside_BikePed.json | 1080 +++++++++++++++++ .../project_location.json | 0 ..._project_files_santacruz_watsonville.ipynb | 413 ++++++- .../us101_woodside.geojson | 0 .../us101_woodside_locations.zip | Bin ...01_Woodside_BikePed-new-alignments.geojson | 4 + .../accessibility/rewrite_project_files.ipynb | 812 ++++++++----- .../ontario_transit_tunnel.geojson | 0 .../us101cc_bikeped_locations.zip | Bin .../accessibility/us101_cc_bike.json | 272 +++++ .../accessibility/us101cc_scenario.geojson | 4 + 12 files changed, 2269 insertions(+), 320 deletions(-) create mode 100644 project_prioritization/accessibility/CSIS-3.0 Accessibility Analysis-US101_Woodside_BikePed-new-stops.geojson create mode 100644 project_prioritization/accessibility/CSIS-3.0 Accessibility Analysis-US101_Woodside_BikePed.json rename project_prioritization/accessibility/central_ca_projects/{eb_greenway_files => santacruz_modifications}/project_location.json (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/us101_woodside.geojson (100%) rename project_prioritization/accessibility/{ => central_ca_projects}/us101_woodside_locations.zip (100%) create mode 100644 project_prioritization/accessibility/conveyal_US101_Woodside_BikePed-new-alignments.geojson rename project_prioritization/accessibility/{ => southern_ca_projects}/ontario_transit_tunnel.geojson (100%) rename project_prioritization/accessibility/{ => southern_ca_projects}/us101cc_bikeped_locations.zip (100%) create mode 100644 project_prioritization/accessibility/us101_cc_bike.json create mode 100644 project_prioritization/accessibility/us101cc_scenario.geojson diff --git a/project_prioritization/accessibility/CSIS-3.0 Accessibility Analysis-US101_Woodside_BikePed-new-stops.geojson b/project_prioritization/accessibility/CSIS-3.0 Accessibility Analysis-US101_Woodside_BikePed-new-stops.geojson new file mode 100644 index 000000000..8ebef9a50 --- /dev/null +++ b/project_prioritization/accessibility/CSIS-3.0 Accessibility Analysis-US101_Woodside_BikePed-new-stops.geojson @@ -0,0 +1,4 @@ +{ + "type": "FeatureCollection", + "features": [] +} \ No newline at end of file diff --git a/project_prioritization/accessibility/CSIS-3.0 Accessibility Analysis-US101_Woodside_BikePed.json b/project_prioritization/accessibility/CSIS-3.0 Accessibility Analysis-US101_Woodside_BikePed.json new file mode 100644 index 000000000..178ef9887 --- /dev/null +++ b/project_prioritization/accessibility/CSIS-3.0 Accessibility Analysis-US101_Woodside_BikePed.json @@ -0,0 +1,1080 @@ +{ + "description": "CSIS-3.0 Accessibility Analysis-US101/Woodside_BikePed", + "feedChecksums": { + "6390cfc96b4de1467b3fd7dd": 2238993920, + "6390cfc96b4de1467b3fd7de": 361358457, + "6390cfca6b4de1467b3fd7df": 1137957252, + "6390d0496b4de1467b3fd7e0": 4255952045, + "6390d0496b4de1467b3fd7e1": 1127507236, + "6390d04a6b4de1467b3fd7e2": 1543312966, + "6390d04a6b4de1467b3fd7e3": 4190563822, + "6390d04b6b4de1467b3fd7e4": 1698960193, + "6390d04b6b4de1467b3fd7e5": 1990850444, + "6390d04c6b4de1467b3fd7e6": 600057355, + "6390d04f6b4de1467b3fd7e7": 2998566341, + "6390d0506b4de1467b3fd7e8": 951101975, + "6390d0516b4de1467b3fd7e9": 2283941646, + "6390d0526b4de1467b3fd7ea": 4175831539, + "6390d0526b4de1467b3fd7eb": 2658965918, + "6390d0536b4de1467b3fd7ec": 2269052788, + "6390d0536b4de1467b3fd7ed": 3021549349, + "6390d0546b4de1467b3fd7ee": 4189584122, + "6390d0556b4de1467b3fd7ef": 4185669413, + "6390d0556b4de1467b3fd7f0": 399305005, + "6390d0566b4de1467b3fd7f1": 552874152, + "6390d0566b4de1467b3fd7f2": 3955837326, + "6390d0576b4de1467b3fd7f3": 241992730, + "6390d0586b4de1467b3fd7f4": 2511612160, + "6390d0586b4de1467b3fd7f5": 1058967946, + "6390d0596b4de1467b3fd7f6": 3680165142, + "6390d05a6b4de1467b3fd7f7": 3624126756, + "6390d05b6b4de1467b3fd7f8": 14454096, + "6390d05b6b4de1467b3fd7f9": 3993457663, + "6390d05c6b4de1467b3fd7fa": 3957854321, + "6390d05c6b4de1467b3fd7fb": 1210633659, + "6390d05d6b4de1467b3fd7fc": 497162953, + "6390d05e6b4de1467b3fd7fd": 588919243, + "6390d05f6b4de1467b3fd7fe": 2521278981, + "6390d0606b4de1467b3fd7ff": 1280803024, + "6390d0616b4de1467b3fd800": 3750035925, + "6390d0616b4de1467b3fd801": 1836454052, + "6390d0626b4de1467b3fd802": 71577927, + "6390d0646b4de1467b3fd803": 2157566013, + "6390d0646b4de1467b3fd804": 190734855, + "6390d0656b4de1467b3fd805": 2313273594, + "6390d0656b4de1467b3fd806": 3858784477, + "6390d0666b4de1467b3fd807": 3530276677, + "6390d0676b4de1467b3fd808": 1518633475, + "6390d0686b4de1467b3fd809": 1276256744, + "6390d0686b4de1467b3fd80a": 1546133090, + "6390d0696b4de1467b3fd80b": 3573254825, + "6390d0696b4de1467b3fd80c": 284386, + "6390d06a6b4de1467b3fd80d": 829692283, + "6390d06d6b4de1467b3fd80e": 1031418413, + "6390d06e6b4de1467b3fd80f": 2645102036, + "6390d06f6b4de1467b3fd810": 2517473632, + "6390d06f6b4de1467b3fd811": 3327775429, + "6390d0706b4de1467b3fd812": 2137811769, + "6390d0bb6b4de1467b3fd813": 2774714134, + "6390d0bc6b4de1467b3fd814": 1149231959, + "6390d0bf6b4de1467b3fd815": 4188089546, + "6390d0c46b4de1467b3fd816": 2691971375, + "6390d0c66b4de1467b3fd817": 4214667146, + "6390d0c66b4de1467b3fd818": 1169420758, + "6390d0c76b4de1467b3fd819": 3220980571, + "6390d0c86b4de1467b3fd81a": 3331471764, + "6390d0c96b4de1467b3fd81b": 2217434545, + "6390d0c96b4de1467b3fd81c": 1153828291, + "6390d0ca6b4de1467b3fd81d": 2495046833, + "6390d0cb6b4de1467b3fd81e": 1876698460, + "6390d0cb6b4de1467b3fd81f": 2259769602, + "6390d0cc6b4de1467b3fd820": 4159382227, + "6390d0cd6b4de1467b3fd821": 2001940555, + "6390d0cd6b4de1467b3fd822": 636078618, + "6390d0ce6b4de1467b3fd823": 1169553872, + "6390d0cf6b4de1467b3fd824": 288495444, + "6390d0d06b4de1467b3fd825": 4046371281, + "6390d0d06b4de1467b3fd826": 2774910230, + "6390d0d16b4de1467b3fd827": 606099318, + "6390d0d26b4de1467b3fd828": 1361237072, + "6390d0d36b4de1467b3fd829": 3735340503, + "6390d0d36b4de1467b3fd82a": 589668141, + "6390d0d46b4de1467b3fd82b": 1331098975, + "6390d0d56b4de1467b3fd82c": 3552486196, + "6390d0d66b4de1467b3fd82d": 3318852935, + "6390d0d66b4de1467b3fd82e": 3741651598, + "6390d0d76b4de1467b3fd82f": 2041095956, + "6390d0e06b4de1467b3fd830": 1145007123, + "6390d0e16b4de1467b3fd831": 166070357, + "6390d0e76b4de1467b3fd832": 594500253, + "6390d0e86b4de1467b3fd833": 126832756, + "6390d0e86b4de1467b3fd834": 371649514, + "6390d0e96b4de1467b3fd835": 501542116 + }, + "_id": 0, + "modifications": [ + { + "_id": "64d3c1992e7d8cb7193e953c", + "description": "", + "name": "US101_Woodside_Bike_Modify", + "projectId": "64c940f29130944b08dfceae", + "type": "modify-streets", + "allowedModes": [ + "BICYCLE", + "CAR", + "WALK" + ], + "bikeTimeFactor": 1, + "bikeLts": 1, + "carSpeedKph": 30, + "polygons": [ + [ + [ + -122.216292, + 37.492995 + ], + [ + -122.216292, + 37.492968 + ], + [ + -122.215583, + 37.492969 + ], + [ + -122.214849, + 37.492967 + ], + [ + -122.214403, + 37.492954 + ], + [ + -122.213627, + 37.492945 + ], + [ + -122.213404, + 37.492951 + ], + [ + -122.213404, + 37.492975 + ], + [ + -122.213961, + 37.492972 + ], + [ + -122.214383, + 37.492974 + ], + [ + -122.214796, + 37.492992 + ], + [ + -122.214901, + 37.492993 + ], + [ + -122.215195, + 37.492994 + ], + [ + -122.215715, + 37.492995 + ], + [ + -122.216292, + 37.492995 + ] + ], + [ + [ + -122.213166, + 37.492937 + ], + [ + -122.213401, + 37.492952 + ], + [ + -122.213408, + 37.492799 + ], + [ + -122.213365, + 37.492549 + ], + [ + -122.21324, + 37.492303 + ], + [ + -122.213013, + 37.491993 + ], + [ + -122.2127, + 37.491592 + ], + [ + -122.212375, + 37.49116 + ], + [ + -122.212103, + 37.490751 + ], + [ + -122.212033, + 37.490579 + ], + [ + -122.211996, + 37.490332 + ], + [ + -122.212007, + 37.490186 + ], + [ + -122.212029, + 37.49 + ], + [ + -122.212099, + 37.489832 + ], + [ + -122.212285, + 37.489543 + ], + [ + -122.2125, + 37.489362 + ], + [ + -122.212739, + 37.489185 + ], + [ + -122.21242, + 37.489094 + ], + [ + -122.212055, + 37.489366 + ], + [ + -122.211835, + 37.489766 + ], + [ + -122.211707, + 37.490192 + ], + [ + -122.211717, + 37.490553 + ], + [ + -122.211868, + 37.490919 + ], + [ + -122.212093, + 37.49132 + ], + [ + -122.212506, + 37.49178 + ], + [ + -122.212758, + 37.492116 + ], + [ + -122.213007, + 37.49244 + ], + [ + -122.213098, + 37.492602 + ], + [ + -122.213141, + 37.492747 + ], + [ + -122.213166, + 37.492937 + ] + ], + [ + [ + -122.212832, + 37.489151 + ], + [ + -122.212496, + 37.489059 + ], + [ + -122.212617, + 37.488989 + ], + [ + -122.212918, + 37.489082 + ], + [ + -122.212832, + 37.489151 + ] + ], + [ + [ + -122.212977, + 37.489023 + ], + [ + -122.212646, + 37.488923 + ], + [ + -122.21277, + 37.488857 + ], + [ + -122.21304, + 37.488939 + ], + [ + -122.212977, + 37.489023 + ] + ], + [ + [ + -122.213206, + 37.488798 + ], + [ + -122.213115, + 37.488873 + ], + [ + -122.212947, + 37.488836 + ], + [ + -122.212845, + 37.488793 + ], + [ + -122.213228, + 37.488517 + ], + [ + -122.213582, + 37.488249 + ], + [ + -122.213742, + 37.488053 + ], + [ + -122.213776, + 37.487978 + ], + [ + -122.21383, + 37.487844 + ], + [ + -122.213902, + 37.487672 + ], + [ + -122.213916, + 37.48761 + ], + [ + -122.214013, + 37.487071 + ], + [ + -122.21423, + 37.486209 + ], + [ + -122.214327, + 37.485777 + ], + [ + -122.214514, + 37.485335 + ], + [ + -122.214784, + 37.485394 + ], + [ + -122.214617, + 37.485695 + ], + [ + -122.214543, + 37.486004 + ], + [ + -122.214366, + 37.486657 + ], + [ + -122.214258, + 37.486987 + ], + [ + -122.214228, + 37.487179 + ], + [ + -122.214116, + 37.48772 + ], + [ + -122.21396, + 37.488093 + ], + [ + -122.213827, + 37.488265 + ], + [ + -122.21369, + 37.488412 + ], + [ + -122.213466, + 37.488609 + ], + [ + -122.213329, + 37.488705 + ], + [ + -122.213206, + 37.488798 + ] + ], + [ + [ + -122.21638, + 37.487131 + ], + [ + -122.216375, + 37.487065 + ], + [ + -122.21597, + 37.487087 + ], + [ + -122.215817, + 37.487048 + ], + [ + -122.215637, + 37.487048 + ], + [ + -122.215286, + 37.487058 + ], + [ + -122.214916, + 37.487058 + ], + [ + -122.21482, + 37.487056 + ], + [ + -122.214664, + 37.487046 + ], + [ + -122.214434, + 37.48702 + ], + [ + -122.214264, + 37.486998 + ], + [ + -122.214242, + 37.487141 + ], + [ + -122.214345, + 37.487154 + ], + [ + -122.214541, + 37.48718 + ], + [ + -122.214734, + 37.487203 + ], + [ + -122.214871, + 37.48722 + ], + [ + -122.21504, + 37.487216 + ], + [ + -122.215429, + 37.487218 + ], + [ + -122.215759, + 37.487199 + ], + [ + -122.215981, + 37.487146 + ], + [ + -122.21638, + 37.487131 + ] + ], + [ + [ + -122.21401, + 37.487066 + ], + [ + -122.214024, + 37.487003 + ], + [ + -122.2137, + 37.48695 + ], + [ + -122.213358, + 37.486895 + ], + [ + -122.212991, + 37.486835 + ], + [ + -122.21241, + 37.486741 + ], + [ + -122.212399, + 37.486802 + ], + [ + -122.212859, + 37.48688 + ], + [ + -122.213534, + 37.486991 + ], + [ + -122.21401, + 37.487066 + ] + ], + [ + [ + -122.216351, + 37.485607 + ], + [ + -122.216373, + 37.485539 + ], + [ + -122.215059, + 37.485403 + ], + [ + -122.214902, + 37.485182 + ], + [ + -122.214873, + 37.485253 + ], + [ + -122.214841, + 37.485329 + ], + [ + -122.21476, + 37.48547 + ], + [ + -122.214607, + 37.485758 + ], + [ + -122.214814, + 37.485543 + ], + [ + -122.215059, + 37.485462 + ], + [ + -122.216351, + 37.485607 + ] + ], + [ + [ + -122.214463, + 37.485408 + ], + [ + -122.212797, + 37.485189 + ], + [ + -122.212198, + 37.485085 + ], + [ + -122.212247, + 37.485015 + ], + [ + -122.212979, + 37.485136 + ], + [ + -122.214499, + 37.485333 + ], + [ + -122.214463, + 37.485408 + ] + ], + [ + [ + -122.214789, + 37.485384 + ], + [ + -122.214503, + 37.485323 + ], + [ + -122.214675, + 37.485049 + ], + [ + -122.21485, + 37.484831 + ], + [ + -122.215058, + 37.484615 + ], + [ + -122.215222, + 37.484482 + ], + [ + -122.215469, + 37.48434 + ], + [ + -122.215862, + 37.484105 + ], + [ + -122.216041, + 37.483994 + ], + [ + -122.21652, + 37.484048 + ], + [ + -122.216173, + 37.484227 + ], + [ + -122.215791, + 37.484439 + ], + [ + -122.215472, + 37.484666 + ], + [ + -122.215208, + 37.484854 + ], + [ + -122.214876, + 37.485188 + ], + [ + -122.214789, + 37.485384 + ] + ], + [ + [ + -122.213429, + 37.493741 + ], + [ + -122.21316, + 37.493741 + ], + [ + -122.21316, + 37.493012 + ], + [ + -122.213429, + 37.493004 + ], + [ + -122.213429, + 37.493741 + ] + ], + [ + [ + -122.213155, + 37.493033 + ], + [ + -122.213157, + 37.492925 + ], + [ + -122.21306, + 37.492927 + ], + [ + -122.212978, + 37.4929 + ], + [ + -122.212926, + 37.492843 + ], + [ + -122.212883, + 37.492736 + ], + [ + -122.212821, + 37.492602 + ], + [ + -122.212715, + 37.492451 + ], + [ + -122.212602, + 37.492295 + ], + [ + -122.212417, + 37.492041 + ], + [ + -122.212282, + 37.491871 + ], + [ + -122.212009, + 37.491496 + ], + [ + -122.211824, + 37.491197 + ], + [ + -122.211645, + 37.49087 + ], + [ + -122.211404, + 37.490541 + ], + [ + -122.210974, + 37.489995 + ], + [ + -122.210877, + 37.490028 + ], + [ + -122.211283, + 37.490534 + ], + [ + -122.211478, + 37.490771 + ], + [ + -122.211678, + 37.491093 + ], + [ + -122.211939, + 37.491585 + ], + [ + -122.212091, + 37.491778 + ], + [ + -122.212417, + 37.49219 + ], + [ + -122.21268, + 37.49253 + ], + [ + -122.212864, + 37.49289 + ], + [ + -122.212941, + 37.492973 + ], + [ + -122.213045, + 37.493005 + ], + [ + -122.213155, + 37.493033 + ] + ], + [ + [ + -122.218373, + 37.489149 + ], + [ + -122.216585, + 37.488927 + ], + [ + -122.216749, + 37.488814 + ], + [ + -122.218452, + 37.489013 + ], + [ + -122.218373, + 37.489149 + ] + ], + [ + [ + -122.213944, + 37.490193 + ], + [ + -122.213926, + 37.490155 + ], + [ + -122.213887, + 37.490164 + ], + [ + -122.213714, + 37.490418 + ], + [ + -122.213582, + 37.490584 + ], + [ + -122.213495, + 37.49092 + ], + [ + -122.213457, + 37.491191 + ], + [ + -122.213455, + 37.491191 + ], + [ + -122.213456, + 37.491502 + ], + [ + -122.213398, + 37.492136 + ], + [ + -122.213413, + 37.492622 + ], + [ + -122.213416, + 37.492873 + ], + [ + -122.213407, + 37.492949 + ], + [ + -122.213475, + 37.492947 + ], + [ + -122.21347, + 37.49236 + ], + [ + -122.213468, + 37.492121 + ], + [ + -122.213493, + 37.491752 + ], + [ + -122.213506, + 37.491431 + ], + [ + -122.213506, + 37.491431 + ], + [ + -122.213559, + 37.491005 + ], + [ + -122.213606, + 37.490766 + ], + [ + -122.213638, + 37.490602 + ], + [ + -122.213767, + 37.490437 + ], + [ + -122.213944, + 37.490193 + ] + ] + ], + "walkTimeFactor": 1, + "accessGroup": "caltrans", + "nonce": "64d3e70c42109e49b2ff5fbb", + "createdAt": "2023-08-09T16:40:57.363Z", + "createdBy": "natalie.amberg@dot.ca.gov", + "updatedBy": "natalie.amberg@dot.ca.gov", + "updatedAt": "2023-08-09T19:20:44.235Z" + }, + { + "_id": "64d3bc9defcc673224977aa1", + "description": "", + "name": "US101_Woodside_Bike_Ped_New", + "projectId": "64c940f29130944b08dfceae", + "type": "add-streets", + "allowedModes": [ + "BICYCLE", + "WALK" + ], + "bikeTimeFactor": 1, + "bikeLts": 1, + "carSpeedKph": 30, + "lineStrings": [ + [ + [ + -122.213929, + 37.490161 + ], + [ + -122.21453, + 37.489691 + ], + [ + -122.214751, + 37.489564 + ], + [ + -122.215018, + 37.48945 + ], + [ + -122.215312, + 37.48933 + ], + [ + -122.215061, + 37.489174 + ], + [ + -122.215402, + 37.488997 + ], + [ + -122.215657, + 37.488963 + ], + [ + -122.215975, + 37.488921 + ], + [ + -122.216654, + 37.488838 + ] + ], + [ + [ + -122.215402, + 37.488997 + ], + [ + -122.215038, + 37.488986 + ], + [ + -122.214905, + 37.488989 + ], + [ + -122.214847, + 37.488979 + ], + [ + -122.214814, + 37.488962 + ], + [ + -122.21474, + 37.488902 + ] + ] + ], + "walkTimeFactor": 1, + "accessGroup": "caltrans", + "nonce": "64d3bdf89c34e90a49adc8a8", + "createdAt": "2023-08-09T16:19:41.305Z", + "createdBy": "natalie.amberg@dot.ca.gov", + "updatedBy": "natalie.amberg@dot.ca.gov", + "updatedAt": "2023-08-09T16:25:28.497Z" + } + ] +} \ No newline at end of file diff --git a/project_prioritization/accessibility/central_ca_projects/eb_greenway_files/project_location.json b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/project_location.json similarity index 100% rename from project_prioritization/accessibility/central_ca_projects/eb_greenway_files/project_location.json rename to project_prioritization/accessibility/central_ca_projects/santacruz_modifications/project_location.json diff --git a/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb index 877ffa42b..68336a7f8 100644 --- a/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb +++ b/project_prioritization/accessibility/central_ca_projects/santacruz_modifications/rewrite_project_files_santacruz_watsonville.ipynb @@ -7,13 +7,13 @@ "metadata": {}, "outputs": [], "source": [ - "import os\n", - "os.environ[\"CALITP_BQ_MAX_BYTES\"] = str(800_000_000_000) " + "# import os\n", + "# os.environ[\"CALITP_BQ_MAX_BYTES\"] = str(800_000_000_000) " ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "8a0f9f1b-174e-431b-9131-84c111a3b238", "metadata": {}, "outputs": [ @@ -21,15 +21,15 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:123: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", + "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:124: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", " warnings.warn(\n", - "/tmp/ipykernel_309/3465571729.py:2: UserWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas will still use PyGEOS by default for now. To force to use and test Shapely 2.0, you have to set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", + "/tmp/ipykernel_438/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", "\n", "import os\n", "os.environ['USE_PYGEOS'] = '0'\n", "import geopandas\n", "\n", - "In a future release, GeoPandas will switch to using Shapely by default. If you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", + "In the next release, GeoPandas will switch to using Shapely by default, even if PyGEOS is installed. If you only have PyGEOS installed to get speed-ups, this switch should be smooth. However, if you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", " import geopandas as gpd\n" ] } @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "84de755f-2d67-4dbf-b6ca-620c8d633572", "metadata": {}, "outputs": [], @@ -52,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "62473c52-3c7a-40cb-846a-f554be252fb9", "metadata": {}, "outputs": [], @@ -62,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "86291e8c-4b80-46b7-99eb-ef2f43b5bff8", "metadata": {}, "outputs": [], @@ -72,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "58f6be83-d014-49c1-923f-d415e4ead66d", "metadata": {}, "outputs": [], @@ -82,7 +82,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "c8f53fea-68b1-4908-80a6-9a537e7c074c", "metadata": {}, "outputs": [], @@ -92,22 +92,67 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "56f90c33-af6f-4b47-b2f0-defb427fc141", "metadata": {}, "outputs": [], "source": [ - "# file = (pd.read_json(\"santacruz_auxiliary_lane.geojson\"))" + "file = (pd.read_json(\"santacruz_auxiliary_lane.geojson\"))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "7c169ff8-8111-4d97-84eb-338f16913303", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
typefeatures
0FeatureCollection{'geometry': {'type': 'MultiLineString', 'coor...
\n", + "
" + ], + "text/plain": [ + " type features\n", + "0 FeatureCollection {'geometry': {'type': 'MultiLineString', 'coor..." + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# file" + "file" ] }, { @@ -120,13 +165,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "id": "95957c78-fa7a-4272-a8c8-79f9184bff15", "metadata": {}, "outputs": [], "source": [ "# import json\n", - "# with open('project_location2.json') as json_file: \n", + "# with open('project_location.json') as json_file: \n", "# data = json.load(json_file) \n", "# print(data['polygons'][0]['geometry']['coordinates'][0])" ] @@ -134,26 +179,350 @@ { "cell_type": "code", "execution_count": null, - "id": "dfc99d3c-bcf1-4cf3-be07-8e86cb3dfad9", + "id": "759d0709-f645-4c7b-9c3e-9ebbc4205dbc", "metadata": {}, "outputs": [], + "source": [ + "#### Reading in json using pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "dfc99d3c-bcf1-4cf3-be07-8e86cb3dfad9", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "All arrays must be of the same length", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[37], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m## error reading due to len of arrays not matching\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m line \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_json\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mproject_location.json\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/util/_decorators.py:211\u001b[0m, in \u001b[0;36mdeprecate_kwarg.._deprecate_kwarg..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 210\u001b[0m kwargs[new_arg_name] \u001b[38;5;241m=\u001b[39m new_arg_value\n\u001b[0;32m--> 211\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/util/_decorators.py:331\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments..decorate..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 325\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[1;32m 326\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[1;32m 327\u001b[0m msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39m_format_argument_list(allow_args)),\n\u001b[1;32m 328\u001b[0m \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[1;32m 329\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mfind_stack_level(),\n\u001b[1;32m 330\u001b[0m )\n\u001b[0;32m--> 331\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/io/json/_json.py:757\u001b[0m, in \u001b[0;36mread_json\u001b[0;34m(path_or_buf, orient, typ, dtype, convert_axes, convert_dates, keep_default_dates, numpy, precise_float, date_unit, encoding, encoding_errors, lines, chunksize, compression, nrows, storage_options)\u001b[0m\n\u001b[1;32m 754\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m json_reader\n\u001b[1;32m 756\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m json_reader:\n\u001b[0;32m--> 757\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mjson_reader\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/io/json/_json.py:915\u001b[0m, in \u001b[0;36mJsonReader.read\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 913\u001b[0m obj \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_object_parser(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_combine_lines(data_lines))\n\u001b[1;32m 914\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 915\u001b[0m obj \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_object_parser\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 916\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclose()\n\u001b[1;32m 917\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m obj\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/io/json/_json.py:937\u001b[0m, in \u001b[0;36mJsonReader._get_object_parser\u001b[0;34m(self, json)\u001b[0m\n\u001b[1;32m 935\u001b[0m obj \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 936\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m typ \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mframe\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m--> 937\u001b[0m obj \u001b[38;5;241m=\u001b[39m \u001b[43mFrameParser\u001b[49m\u001b[43m(\u001b[49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 939\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m typ \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mseries\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mor\u001b[39;00m obj \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 940\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(dtype, \u001b[38;5;28mbool\u001b[39m):\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/io/json/_json.py:1064\u001b[0m, in \u001b[0;36mParser.parse\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1062\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parse_numpy()\n\u001b[1;32m 1063\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 1064\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_parse_no_numpy\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1066\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1067\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/io/json/_json.py:1320\u001b[0m, in \u001b[0;36mFrameParser._parse_no_numpy\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1317\u001b[0m orient \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39morient\n\u001b[1;32m 1319\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m orient \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcolumns\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m-> 1320\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj \u001b[38;5;241m=\u001b[39m \u001b[43mDataFrame\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1321\u001b[0m \u001b[43m \u001b[49m\u001b[43mloads\u001b[49m\u001b[43m(\u001b[49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprecise_float\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprecise_float\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\n\u001b[1;32m 1322\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1323\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m orient \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msplit\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 1324\u001b[0m decoded \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 1325\u001b[0m \u001b[38;5;28mstr\u001b[39m(k): v\n\u001b[1;32m 1326\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, v \u001b[38;5;129;01min\u001b[39;00m loads(json, precise_float\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprecise_float)\u001b[38;5;241m.\u001b[39mitems()\n\u001b[1;32m 1327\u001b[0m }\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/core/frame.py:664\u001b[0m, in \u001b[0;36mDataFrame.__init__\u001b[0;34m(self, data, index, columns, dtype, copy)\u001b[0m\n\u001b[1;32m 658\u001b[0m mgr \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_init_mgr(\n\u001b[1;32m 659\u001b[0m data, axes\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mindex\u001b[39m\u001b[38;5;124m\"\u001b[39m: index, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcolumns\u001b[39m\u001b[38;5;124m\"\u001b[39m: columns}, dtype\u001b[38;5;241m=\u001b[39mdtype, copy\u001b[38;5;241m=\u001b[39mcopy\n\u001b[1;32m 660\u001b[0m )\n\u001b[1;32m 662\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m 663\u001b[0m \u001b[38;5;66;03m# GH#38939 de facto copy defaults to False only in non-dict cases\u001b[39;00m\n\u001b[0;32m--> 664\u001b[0m mgr \u001b[38;5;241m=\u001b[39m \u001b[43mdict_to_mgr\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcolumns\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtyp\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmanager\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 665\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, ma\u001b[38;5;241m.\u001b[39mMaskedArray):\n\u001b[1;32m 666\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mma\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmrecords\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mmrecords\u001b[39;00m\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/core/internals/construction.py:493\u001b[0m, in \u001b[0;36mdict_to_mgr\u001b[0;34m(data, index, columns, dtype, typ, copy)\u001b[0m\n\u001b[1;32m 489\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 490\u001b[0m \u001b[38;5;66;03m# dtype check to exclude e.g. range objects, scalars\u001b[39;00m\n\u001b[1;32m 491\u001b[0m arrays \u001b[38;5;241m=\u001b[39m [x\u001b[38;5;241m.\u001b[39mcopy() \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(x, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdtype\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01melse\u001b[39;00m x \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m arrays]\n\u001b[0;32m--> 493\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43marrays_to_mgr\u001b[49m\u001b[43m(\u001b[49m\u001b[43marrays\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcolumns\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtyp\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconsolidate\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/core/internals/construction.py:118\u001b[0m, in \u001b[0;36marrays_to_mgr\u001b[0;34m(arrays, columns, index, dtype, verify_integrity, typ, consolidate)\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m verify_integrity:\n\u001b[1;32m 116\u001b[0m \u001b[38;5;66;03m# figure out the index, if necessary\u001b[39;00m\n\u001b[1;32m 117\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m index \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 118\u001b[0m index \u001b[38;5;241m=\u001b[39m \u001b[43m_extract_index\u001b[49m\u001b[43m(\u001b[49m\u001b[43marrays\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 119\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 120\u001b[0m index \u001b[38;5;241m=\u001b[39m ensure_index(index)\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/pandas/core/internals/construction.py:666\u001b[0m, in \u001b[0;36m_extract_index\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 664\u001b[0m lengths \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(\u001b[38;5;28mset\u001b[39m(raw_lengths))\n\u001b[1;32m 665\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(lengths) \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m--> 666\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAll arrays must be of the same length\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 668\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m have_dicts:\n\u001b[1;32m 669\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 670\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMixing dicts with non-Series may lead to ambiguous ordering.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 671\u001b[0m )\n", + "\u001b[0;31mValueError\u001b[0m: All arrays must be of the same length" + ] + } + ], "source": [ "## error reading due to len of arrays not matching\n", - "# line = pd.read_json(\"eb_greenway_files/project_location.json\")" + "line = pd.read_json(\"project_location.json\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, + "id": "627ddf66-a527-43f2-b97e-92e0072be0d5", + "metadata": {}, + "outputs": [], + "source": [ + "input_file=json.load(open(\"project_location.json\", \"r\", encoding=\"utf-8\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "05469f5b-c960-4fa7-a701-b352b6bcd2a2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'description': '',\n", + " 'name': 'East_Bay_Greenway2',\n", + " 'allowedModes': ['BICYCLE', 'WALK', 'CAR'],\n", + " 'bikeTimeFactor': 1,\n", + " 'bikeLts': 1,\n", + " 'carSpeedKph': 64,\n", + " 'lineStrings': [[[-122.264614, 37.798344],\n", + " [-122.253103, 37.790666],\n", + " [-122.236232, 37.782242],\n", + " [-122.226696, 37.776169],\n", + " [-122.226997, 37.775288],\n", + " [-122.216908, 37.770577],\n", + " [-122.207489, 37.762719],\n", + " [-122.195695, 37.752455],\n", + " [-122.189072, 37.747044]],\n", + " [[-122.188866, 37.747123],\n", + " [-122.166714, 37.72922],\n", + " [-122.161212, 37.723988],\n", + " [-122.158006, 37.718641],\n", + " [-122.150451, 37.713519],\n", + " [-122.145514, 37.713248],\n", + " [-122.142809, 37.715351],\n", + " [-122.130088, 37.706307],\n", + " [-122.119125, 37.698943],\n", + " [-122.106279, 37.689975],\n", + " [-122.084974, 37.673342],\n", + " [-122.08177, 37.670128]]],\n", + " 'walkTimeFactor': 1}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "input_file" + ] + }, + { + "cell_type": "code", + "execution_count": 21, "id": "a8ae713f-d001-4b18-bb61-0bc5583ff98d", "metadata": {}, "outputs": [], + "source": [ + "data = pd.json_normalize(input_file, max_level=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "ad65e799-fcf4-4846-8a8a-c663837a2aa9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
descriptionnameallowedModesbikeTimeFactorbikeLtscarSpeedKphlineStringswalkTimeFactor
0East_Bay_Greenway2[BICYCLE, WALK, CAR]1164[[[-122.264614, 37.798344], [-122.253103, 37.7...1
\n", + "
" + ], + "text/plain": [ + " description name allowedModes bikeTimeFactor \\\n", + "0 East_Bay_Greenway2 [BICYCLE, WALK, CAR] 1 \n", + "\n", + " bikeLts carSpeedKph lineStrings \\\n", + "0 1 64 [[[-122.264614, 37.798344], [-122.253103, 37.7... \n", + "\n", + " walkTimeFactor \n", + "0 1 " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.sample()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "9c1e3d7d-bb36-43d1-9a52-5e7cd4dd0a8d", + "metadata": {}, + "outputs": [], + "source": [ + "from siuba import *" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "ff06194d-37e6-4c60-94e3-4029258990bd", + "metadata": {}, + "outputs": [], + "source": [ + "data = data>>select(_.name, _.lineStrings)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "a026e0f3-1834-47c5-997b-04261b26f843", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namelineStrings
0East_Bay_Greenway2[[[-122.264614, 37.798344], [-122.253103, 37.7...
\n", + "
" + ], + "text/plain": [ + " name lineStrings\n", + "0 East_Bay_Greenway2 [[[-122.264614, 37.798344], [-122.253103, 37.7..." + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "36b2851b-9055-4c17-83dd-fba06ce4c0aa", + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "Input must be valid geometry objects: [[[-122.264614, 37.798344], [-122.253103, 37.790666], [-122.236232, 37.782242], [-122.226696, 37.776169], [-122.226997, 37.775288], [-122.216908, 37.770577], [-122.207489, 37.762719], [-122.195695, 37.752455], [-122.189072, 37.747044]], [[-122.188866, 37.747123], [-122.166714, 37.72922], [-122.161212, 37.723988], [-122.158006, 37.718641], [-122.150451, 37.713519], [-122.145514, 37.713248], [-122.142809, 37.715351], [-122.130088, 37.706307], [-122.119125, 37.698943], [-122.106279, 37.689975], [-122.084974, 37.673342], [-122.08177, 37.670128]]]", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[38], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m### Putting into a geodataframe\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m geo_data \u001b[38;5;241m=\u001b[39m \u001b[43mgpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mGeoDataFrame\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mlineStrings\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/geopandas/geodataframe.py:191\u001b[0m, in \u001b[0;36mGeoDataFrame.__init__\u001b[0;34m(self, data, geometry, crs, *args, **kwargs)\u001b[0m\n\u001b[1;32m 183\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[1;32m 184\u001b[0m \u001b[38;5;28mhasattr\u001b[39m(geometry, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcrs\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 185\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m geometry\u001b[38;5;241m.\u001b[39mcrs\n\u001b[1;32m 186\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m crs\n\u001b[1;32m 187\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m geometry\u001b[38;5;241m.\u001b[39mcrs \u001b[38;5;241m==\u001b[39m crs\n\u001b[1;32m 188\u001b[0m ):\n\u001b[1;32m 189\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(crs_mismatch_error)\n\u001b[0;32m--> 191\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_geometry\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgeometry\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minplace\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m geometry \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m crs:\n\u001b[1;32m 194\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 195\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAssigning CRS to a GeoDataFrame without a geometry column is not \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 196\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msupported. Supply geometry using the \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgeometry=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m keyword argument, \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 197\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mor by providing a DataFrame with column name \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgeometry\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 198\u001b[0m )\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/geopandas/geodataframe.py:348\u001b[0m, in \u001b[0;36mGeoDataFrame.set_geometry\u001b[0;34m(self, col, drop, inplace, crs)\u001b[0m\n\u001b[1;32m 345\u001b[0m level\u001b[38;5;241m.\u001b[39mcrs \u001b[38;5;241m=\u001b[39m crs\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# Check that we are using a listlike of geometries\u001b[39;00m\n\u001b[0;32m--> 348\u001b[0m level \u001b[38;5;241m=\u001b[39m \u001b[43m_ensure_geometry\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlevel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 349\u001b[0m \u001b[38;5;66;03m# update _geometry_column_name prior to assignment\u001b[39;00m\n\u001b[1;32m 350\u001b[0m \u001b[38;5;66;03m# to avoid default is None warning\u001b[39;00m\n\u001b[1;32m 351\u001b[0m frame\u001b[38;5;241m.\u001b[39m_geometry_column_name \u001b[38;5;241m=\u001b[39m geo_column_name\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/geopandas/geodataframe.py:56\u001b[0m, in \u001b[0;36m_ensure_geometry\u001b[0;34m(data, crs)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data, Series):\n\u001b[0;32m---> 56\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[43mfrom_shapely\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masarray\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcrs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m GeoSeries(out, index\u001b[38;5;241m=\u001b[39mdata\u001b[38;5;241m.\u001b[39mindex, name\u001b[38;5;241m=\u001b[39mdata\u001b[38;5;241m.\u001b[39mname)\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/geopandas/array.py:158\u001b[0m, in \u001b[0;36mfrom_shapely\u001b[0;34m(data, crs)\u001b[0m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfrom_shapely\u001b[39m(data, crs\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 143\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 144\u001b[0m \u001b[38;5;124;03m Convert a list or array of shapely objects to a GeometryArray.\u001b[39;00m\n\u001b[1;32m 145\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 156\u001b[0m \n\u001b[1;32m 157\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 158\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m GeometryArray(\u001b[43mvectorized\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_shapely\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m, crs\u001b[38;5;241m=\u001b[39mcrs)\n", + "File \u001b[0;32m/opt/conda/lib/python3.9/site-packages/geopandas/_vectorized.py:148\u001b[0m, in \u001b[0;36mfrom_shapely\u001b[0;34m(data)\u001b[0m\n\u001b[1;32m 146\u001b[0m out\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInput must be valid geometry objects: \u001b[39m\u001b[38;5;132;01m{0}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(geom))\n\u001b[1;32m 150\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m compat\u001b[38;5;241m.\u001b[39mUSE_PYGEOS:\n\u001b[1;32m 151\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m np\u001b[38;5;241m.\u001b[39marray(out, dtype\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mobject\u001b[39m)\n", + "\u001b[0;31mTypeError\u001b[0m: Input must be valid geometry objects: [[[-122.264614, 37.798344], [-122.253103, 37.790666], [-122.236232, 37.782242], [-122.226696, 37.776169], [-122.226997, 37.775288], [-122.216908, 37.770577], [-122.207489, 37.762719], [-122.195695, 37.752455], [-122.189072, 37.747044]], [[-122.188866, 37.747123], [-122.166714, 37.72922], [-122.161212, 37.723988], [-122.158006, 37.718641], [-122.150451, 37.713519], [-122.145514, 37.713248], [-122.142809, 37.715351], [-122.130088, 37.706307], [-122.119125, 37.698943], [-122.106279, 37.689975], [-122.084974, 37.673342], [-122.08177, 37.670128]]]" + ] + } + ], + "source": [ + "### Putting into a geodataframe\n", + "geo_data = gpd.GeoDataFrame(data, geometry='lineStrings')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "a41533e0-dc29-4fea-816a-eb92c4d53fee", + "metadata": {}, + "outputs": [], + "source": [ + "result = data.to_json(orient=\"index\")" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "112185b0-9b5e-4859-88ee-f78886cbda7f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'{\"0\":{\"name\":\"East_Bay_Greenway2\",\"lineStrings\":[[[-122.264614,37.798344],[-122.253103,37.790666],[-122.236232,37.782242],[-122.226696,37.776169],[-122.226997,37.775288],[-122.216908,37.770577],[-122.207489,37.762719],[-122.195695,37.752455],[-122.189072,37.747044]],[[-122.188866,37.747123],[-122.166714,37.72922],[-122.161212,37.723988],[-122.158006,37.718641],[-122.150451,37.713519],[-122.145514,37.713248],[-122.142809,37.715351],[-122.130088,37.706307],[-122.119125,37.698943],[-122.106279,37.689975],[-122.084974,37.673342],[-122.08177,37.670128]]]}}'" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7be5d75d-cd1c-4bdf-83d7-9fd16ea4845c", + "metadata": {}, + "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, - "id": "a026e0f3-1834-47c5-997b-04261b26f843", + "id": "34e2379d-38ad-424b-b7a6-98785ddbb811", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "379e8591-c16c-459e-9e38-3ca5c6ede4c2", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6958c5c-4a7f-49ce-bbff-e7b863eda1db", "metadata": {}, "outputs": [], "source": [] diff --git a/project_prioritization/accessibility/us101_woodside.geojson b/project_prioritization/accessibility/central_ca_projects/us101_woodside.geojson similarity index 100% rename from project_prioritization/accessibility/us101_woodside.geojson rename to project_prioritization/accessibility/central_ca_projects/us101_woodside.geojson diff --git a/project_prioritization/accessibility/us101_woodside_locations.zip b/project_prioritization/accessibility/central_ca_projects/us101_woodside_locations.zip similarity index 100% rename from project_prioritization/accessibility/us101_woodside_locations.zip rename to project_prioritization/accessibility/central_ca_projects/us101_woodside_locations.zip diff --git a/project_prioritization/accessibility/conveyal_US101_Woodside_BikePed-new-alignments.geojson b/project_prioritization/accessibility/conveyal_US101_Woodside_BikePed-new-alignments.geojson new file mode 100644 index 000000000..8ebef9a50 --- /dev/null +++ b/project_prioritization/accessibility/conveyal_US101_Woodside_BikePed-new-alignments.geojson @@ -0,0 +1,4 @@ +{ + "type": "FeatureCollection", + "features": [] +} \ No newline at end of file diff --git a/project_prioritization/accessibility/rewrite_project_files.ipynb b/project_prioritization/accessibility/rewrite_project_files.ipynb index 4910b4271..05dcf18eb 100644 --- a/project_prioritization/accessibility/rewrite_project_files.ipynb +++ b/project_prioritization/accessibility/rewrite_project_files.ipynb @@ -1,32 +1,25 @@ { "cells": [ + { + "cell_type": "markdown", + "id": "417263bf-3588-49d2-aea0-845a7554fc2d", + "metadata": {}, + "source": [ + "# Converting Jsons to Zipped GeoJsons" + ] + }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "id": "8a0f9f1b-174e-431b-9131-84c111a3b238", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.9/site-packages/geopandas/_compat.py:124: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.1-CAPI-1.16.0). Conversions between both will be slow.\n", - " warnings.warn(\n", - "/tmp/ipykernel_316/3465571729.py:2: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", - "\n", - "import os\n", - "os.environ['USE_PYGEOS'] = '0'\n", - "import geopandas\n", - "\n", - "In the next release, GeoPandas will switch to using Shapely by default, even if PyGEOS is installed. If you only have PyGEOS installed to get speed-ups, this switch should be smooth. However, if you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", - " import geopandas as gpd\n" - ] - } - ], + "outputs": [], "source": [ "import pandas as pd\n", "import geopandas as gpd\n", - "import matplotlib.pyplot as plt" + "import matplotlib.pyplot as plt\n", + "\n", + "import _utils" ] }, { @@ -41,225 +34,275 @@ }, { "cell_type": "code", - "execution_count": 3, - "id": "15202851-6cf5-42be-ba27-021e536c15eb", + "execution_count": 4, + "id": "dfc99d3c-bcf1-4cf3-be07-8e86cb3dfad9", "metadata": {}, "outputs": [], "source": [ - "# import geojson\n" + "## error reading due to len of arrays not matching\n", + "# line = pd.read_json(\"eb_greenway_files/project_location.json\")" ] }, { "cell_type": "code", - "execution_count": 4, - "id": "56f90c33-af6f-4b47-b2f0-defb427fc141", + "execution_count": null, + "id": "a8ae713f-d001-4b18-bb61-0bc5583ff98d", "metadata": {}, "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a026e0f3-1834-47c5-997b-04261b26f843", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "495dd1aa-05b7-4dda-9769-d1a5ae3a3ab8", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, "source": [ - "file = (pd.read_json(\"eb_greenway_files/project_location2.json\"))" + "#### EB Greenway Shape file" ] }, { "cell_type": "code", - "execution_count": 5, - "id": "7c169ff8-8111-4d97-84eb-338f16913303", + "execution_count": null, + "id": "671ebcf6-7e64-4dec-ac7a-6a669036f6e6", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
descriptionnameallowedModesbikeTimeFactorbikeLtscarSpeedKphpolygonswalkTimeFactor
0East_Bay_Greenway_modifyBICYCLE1156[[-122.264843, 37.798396], [-122.226477, 37.77...1
\n", - "
" - ], - "text/plain": [ - " description name allowedModes bikeTimeFactor bikeLts \\\n", - "0 East_Bay_Greenway_modify BICYCLE 1 1 \n", - "\n", - " carSpeedKph polygons \\\n", - "0 56 [[-122.264843, 37.798396], [-122.226477, 37.77... \n", - "\n", - " walkTimeFactor \n", - "0 1 " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], + "source": [ + "# proj_ebgreenway = gpd.read_file('eb_greenway_files/project_location_3.geojson')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a6f45547-9eda-42c2-9836-9aabc6336ea9", + "metadata": {}, + "outputs": [], + "source": [ + "# proj_ebgreenway" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "08935f2a-d932-42e0-ba03-f3af9ba6620e", + "metadata": {}, + "outputs": [], "source": [ - "file" + "# ax = proj_ebgreenway.plot(color='blue')" ] }, { "cell_type": "code", "execution_count": null, - "id": "4ef23f03-4efb-42d8-a8e8-f61a61f2fb87", + "id": "d4a88e9d-1597-4059-a269-3d45b1bf4817", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 6, - "id": "95957c78-fa7a-4272-a8c8-79f9184bff15", + "execution_count": 10, + "id": "a3f83bc1-6a3c-4103-a96f-7277f7458c06", "metadata": {}, "outputs": [], "source": [ - "# import json\n", - "# with open('project_location2.json') as json_file: \n", - "# data = json.load(json_file) \n", - "# print(data['polygons'][0]['geometry']['coordinates'][0])" + "# _utils.read_and_create_shpfiles('eb_greenway_files/project_location_3.geojson', \"eb_greenway.zip\")" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "dfc99d3c-bcf1-4cf3-be07-8e86cb3dfad9", + "execution_count": null, + "id": "49174287-58ec-48f3-9194-88925f28a67f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "cf57fa32-4c3c-4f6a-b808-bc1e443cf34d", "metadata": {}, "outputs": [], "source": [ - "## error reading due to len of arrays not matching\n", - "# line = pd.read_json(\"eb_greenway_files/project_location.json\")" + "# proj_ebgreenway.to_file('EB_Greenway_project_location.shp') " ] }, { "cell_type": "code", "execution_count": null, - "id": "a8ae713f-d001-4b18-bb61-0bc5583ff98d", + "id": "29249880-a5a7-4cd3-9ebb-f9e8c90a1d2f", "metadata": {}, "outputs": [], "source": [] }, + { + "cell_type": "markdown", + "id": "d2316f80-182d-4000-82e1-a512e67b1980", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "#### Project 210 Median Shapefile" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "3402d9c1-6575-4c88-86fe-a0a699f8674b", + "metadata": {}, + "outputs": [], + "source": [ + "# proj_210median = gpd.read_file('210_files/210median.geojson')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "165ba392-977e-499d-9f9b-839aaebdf2ad", + "metadata": {}, + "outputs": [], + "source": [ + "# ax = proj_210median.plot(color='blue')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "4dfb982b-a00e-4582-a93c-a96217975217", + "metadata": {}, + "outputs": [], + "source": [ + "# proj_210median.to_file('proj_210median.shp') " + ] + }, { "cell_type": "code", "execution_count": null, - "id": "a026e0f3-1834-47c5-997b-04261b26f843", + "id": "c9b4d8ae-9d87-4326-bd8a-981119cec6fd", "metadata": {}, "outputs": [], "source": [] }, { - "cell_type": "markdown", - "id": "495dd1aa-05b7-4dda-9769-d1a5ae3a3ab8", + "cell_type": "code", + "execution_count": 15, + "id": "68aaec2d-004d-4a90-9cd8-10b700c0fc97", "metadata": {}, + "outputs": [], "source": [ - "#### EB Greenway Shape file" + "# _utils.read_and_create_shpfiles('yolo_80_50_bikepath.geojson', 'yolo80_50_bikepath')" ] }, { "cell_type": "code", - "execution_count": 8, - "id": "671ebcf6-7e64-4dec-ac7a-6a669036f6e6", + "execution_count": null, + "id": "fdf7f513-537c-49f2-8bae-5a3b5504fcf7", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "77fd58d5-65d0-4c0c-808f-cc7e313018ba", "metadata": {}, "outputs": [], "source": [ - "proj_ebgreenway = gpd.read_file('eb_greenway_files/project_location_3.geojson')" + "# _utils.read_and_create_shpfiles('us101_cc_pedundercrossing.geojson', 'us101_cc_ped_undercrossing')" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "a6f45547-9eda-42c2-9836-9aabc6336ea9", + "execution_count": null, + "id": "eec8a2ad-cc96-4ab2-baa0-783cfbff4ad0", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
geometry
0POLYGON ((-122.26427 37.79894, -122.25929 37.7...
\n", - "
" - ], - "text/plain": [ - " geometry\n", - "0 POLYGON ((-122.26427 37.79894, -122.25929 37.7..." - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "7ac57753-7a4c-407b-a2ae-cc4fbca7d41c", + "metadata": {}, + "outputs": [], "source": [ - "proj_ebgreenway" + "# test = gpd.read_file('us101_woodside.geojson')\n", + "# ax = test.plot(color='blue')" ] }, { "cell_type": "code", - "execution_count": 10, - "id": "08935f2a-d932-42e0-ba03-f3af9ba6620e", + "execution_count": 19, + "id": "a5306d86-b691-4c48-800f-8b0ce242b4b7", + "metadata": {}, + "outputs": [], + "source": [ + "# _utils.read_and_create_shpfiles('us101_woodside.geojson', 'us101_woodside_locations')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2beca20d-1965-4f61-9323-7fe9b98a3358", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "39f1192c-f6b6-4188-b51e-38c7f1d1be41", + "metadata": {}, + "outputs": [], + "source": [ + "## error to read in json\n", + "# test_json = gpd.read_file('us101_cc_bike.json')\n", + "# ax_json = test_geojson.plot(color='blue')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0f50aa1e-d1b7-4313-895d-37cef23ac7af", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7febe43-f14b-4a12-a010-bdacc7d968f1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "feb23034-8500-4b9c-8580-bc68c94ee539", + "metadata": {}, + "source": [ + "#### Project US 101 connected communities" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0659377f-f646-4749-9f03-9253f86f2d2f", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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RMT/jt8tnmPVoL6+HrvdzqJFi5g1a5bbe7GxsSxbtozx48c3+fmGULV//37y8/MbDVUVFRWMHDmSIUOGsGbNGo9DlYiIiMiF4FGwysjIICkpCYvFQm1tLevWraOgoIDc3FwiIyMbnbBusVjo3bu3a7l///5kZmYyceJEHA4HkydPxmq1snXrVurq6qiurgacVxsGBgZSUVHBiBEj6NWrF08++ST/+te/XH21dIK8iIiIyPngUbA6evQoaWlpVFVVER4eTlxcHLm5uYwZM6bZfZSXl2Oz2QDnSFROTg4A8fHxbu3y8/MZMWIE27dv58CBAxw4cIDo6Gi3Nq08iykiIiLiVa2eY+Uv/O0crYiIiPjf8VuTlURERES8RMFKREREWqWqCr75xtdVtA0KViIiItIqGRkwcCA4HL6uxPcUrERERKTFTp+GvXth2jTo2NHX1fheq+9jJSIiIhevDh2gsBBOnvR1JW2DRqxERESkVUwmCA72dRVtg4KViIiIiJcoWImIiIh4iYKViIiIiJcoWImIiIh4iYKViIiIiJcoWImIiIh4iYKViIiIiJdcNDcINQwDcD4lW0RERPxDw3G74Tje1l00waq2thaAmJgYH1ciIiIinqqtrSU8PNzXZZyTyfCXCNhK9fX1VFZW0rlzZ0wmk6/LcampqSEmJoYvvvgCs9ns63J8RttB2wC0DUDbALQNQNugQcN2+Oijj+jXrx8BAW1/BtNFM2IVEBBAdHS0r8toktlsvqj/8TTQdtA2AG0D0DYAbQPQNmhw+eWX+0WoAk1eFxEREfEaBSsRERERL1Gw8rGgoCAWLlxIUFCQr0vxKW0HbQPQNgBtA9A2AG2DBv64HS6ayesiIiIi55tGrERERES8RMFKRERExEsUrERERES8RMFKRERExEsUrDywePFiEhMTCQkJoUuXLo22uffeexkyZAhBQUHEx8c32ub1118nPj6ekJAQevXqxdKlS8/6vZ9//jkzZ86kd+/eBAcH06dPHxYuXMipU6fc2n344YcMHz6cTp06ERMTw+9///sz+tqwYQP9+/enU6dOxMbG8te//rVZv/v3+Wo7NOe7165di8lkavR19OhRAAoKChp9v7q6urmboE1vA6DR32/9+vVubQoKCrj66qsJCgqib9++rF279pzf7WkdvtoGH3zwAampqcTExBAcHMyPf/xjnn76abc2F8N+cPjwYW655RZCQkLo0aMHDz74IKdPn3Zr48/7wddff83tt9+O2WymS5cuzJw5k2PHjrnef/zxxxv9bxwaGupq09jfjE6dOrWbbfD55583ug3ee+89t378/dhwru1QUFBAcnIyUVFRhIaGEh8fz2uvvebWhzf2BVCw8sipU6eYMmUKv/zlL8/a7j/+4z+49dZbG31v27Zt3H777cydO5e9e/fy3HPPsWzZMp599tkm+/v444+pr6/nhRdeoKysjGXLlvH888/zm9/8xtWmpqaGG2+8kV69erFnzx6WLl3K448/zh//+EdXm507d5KamsrMmTMpLi4mJSWFlJQU9u7d6xfboTnffeutt1JVVeX2Gjt2LNdffz09evRwa1teXu7W7ofvt6aOBr7YBg3WrFnj9vulpKS43vvss8+45ZZbGDlyJCUlJdx///3MmjWL3Nzcs/bZkjp8sQ327NlDjx49ePXVVykrK+ORRx4hIyOj0X7b635QV1fHLbfcwqlTp9i5cycvv/wya9eu5bHHHnO18ff94Pbbb6esrIzt27ezdetW/v73v3PXXXe53v/P//zPM/4eDBgwgClTprj1Yzab3docOnSomb+9U1veBg3efvttt99xyJAhrvfaw7HhXNth586dxMXFsWnTJj788ENmzJhBWloaW7dudeuntfsCAIZ4bM2aNUZ4ePhZ2yxcuNAYNGjQGetTU1ONyZMnu61bsWKFER0dbdTX1ze7ht///vdG7969XcvPPfec0bVrV8Nut7vWpaenG/369XMtT5061bjlllvc+hk2bJgxZ86cZn/v9/lyOzTnuw3DMI4ePWp07NjReOWVV1zr8vPzDcD45ptvzvl5b9Thi20AGNnZ2U1+9qGHHjIGDhzotu7WW281xo4de87v9aSOBr7eDwzDMO6++25j5MiRruX2vh/89a9/NQICAozq6mrXuqysLMNsNrv+TvjzfvDRRx8ZgFFYWOhat23bNsNkMhkVFRWNfqakpMQAjL///e8e1d1cbXEbfPbZZwZgFBcXN1mTvx8bWrIvGIZh3HzzzcaMGTM8qrs5NGJ1gdnt9jOGFoODgzly5IhHydhmsxEREeFa3rVrFz//+c8JDAx0rRs7dizl5eV88803rjajR49262fs2LHs2rWrJb9Kq3hrO5zLK6+8QkhICJMnTz7jvfj4eKKiohgzZgzvvvuu176zuc73Nrjnnnu49NJLGTp0KKtXr8b43i3r2sq+cKH2Azjz30yD9rof7Nq1i9jYWC677DLXurFjx1JTU0NZWZmrjb/uB7t27aJLly5cc801rnWjR48mICCA3bt3N/qZVatWcdVVVzF8+HC39ceOHaNXr17ExMSQnJzs2j4X0vneBhMmTKBHjx5cd9115OTknNFPW9gP4MLtC9D43wRv7AsKVhfY2LFj2bx5M++88w719fV88sknPPXUUwBUVVU1q48DBw7wzDPPMGfOHNe66upqtz+ggGu5Yc5IU208mVPiLd7YDs3x0ksvMW3aNIKDg13roqKieP7559m0aRObNm0iJiaGESNGYLVavfa9zXE+t8Fvf/tbXn/9dbZv386kSZO4++67eeaZZ1zvN7Uv1NTU8N1337Xquz1xofaDnTt38pe//MXt1EB73w9a8zfBH/aD6urqM07bdujQgYiIiEb/pp08eZLXXnuNmTNnuq3v168fq1ev5o033uDVV1+lvr6exMREjhw54qXfrnnO1zYICwvjqaeeYsOGDbz55ptcd911pKSkuIUrfz82eLovgHMeV2FhITNmzHCt89a+cNEHq4cffrjJyc4Nr48//thr3zd79mx+9atfMW7cOAIDA7n22mu57bbbAJr15O6KigpuuukmpkyZwuzZs71Wl79th+bYtWsX+/bta/QP6Zw5cxgyZAiJiYmsXr2axMRE0tLS2s02WLBgAT/72c8YPHgw6enpPPTQQ82aAAoQEhLSLrZBg71795KcnMzChQu58cYbXesvhv2gNdrbfpCdnU1tbS3Tp093W5+QkEBaWhrx8fFcf/31bN68me7du3Prrbe2i/3g0ksvZf78+QwbNoyf/vSnLFmyhF/84hfN/nvQHo8N+fn5zJgxgxdffJGBAwe61je1L7zwwgse9d/BK1X6sQceeIA777zzrG2uuOIKr32fyWTiiSee4L//+7+prq6me/fuvPPOO836nsrKSkaOHEliYqLbpHSAyMhI/vnPf7qta1iOjIw8a5vIyEi/2g7NtWrVKuLj490maTZl6NCh5Ofns2/fvrO287dt0GDYsGH87ne/w263ExQU1OS+EBYWRmFh4Vn78qdt8NFHH3HDDTdw11138eijj56zfXvaDyIjI3n//ffd1jX3b4I/7AeRkZGuK30bnD59mq+//tr1+33fqlWrGDdu3BkjMz/UsWNHBg8ezOnTp9v8fuDpNmgwbNgwtm/f7taPPx8bPNkOO3bsYPz48Sxbtoy0tLSz1tKwLxw4cMCj3+GiD1bdu3ene/fuF/x7L7nkEi6//HIA/vznP5OQkHDWOioqKhg5ciRDhgxhzZo1ZyT3hIQEHnnkERwOBx07dgRg+/bt9OvXj65du7ravPPOO9x///2uz23fvt313f6wHZrr2LFjvP7662RmZjarfUlJCRaLhf79+7f6uz11vrbB95WUlNC1a1fXg0wTEhLOuJx6+/bt/OxnP2s326CsrIxRo0Yxffp0Fi9e3KzPtKf9ICEhgcWLF3P06FHXaZLt27djNpsZMGCAq42/7gcJCQl8++237Nmzx/V/nvLy8qivr2fYsGFubT/77DPy8/PPmFvUmLq6OkpLS7n55pvb1Tb4vpKSEqKiotz68edjQ3O3Q0FBAePGjeOJJ55o9MrJH/r+vuCRVk9/v4gcOnTIKC4uNhYtWmSEhYUZxcXFRnFxsVFbW+tqs3//fqO4uNiYM2eOcdVVV7naNFyF869//cvIysoy9u3bZxQXFxv33nuv0alTJ2P37t2uPnbv3m3069fPOHLkiGEYhnHkyBGjb9++xg033GAcOXLEqKqqcr0afPvtt8Zll11m3HHHHcbevXuN9evXGyEhIcYLL7zgavPuu+8aHTp0MJ588klj3759xsKFC42OHTsapaWlfrEdmvvdhmEYq1atMjp16tToFV/Lli0ztmzZYuzfv98oLS017rvvPiMgIMB4++2328U2yMnJMV588UWjtLTU2L9/v/Hcc88ZISEhxmOPPebq4+DBg0ZISIjx4IMPGvv27TNWrlxpXHLJJcZbb73VLrZBaWmp0b17d+MXv/iF27+Xo0ePuvpo7/vB6dOnjZ/85CfGjTfeaJSUlBhvvfWW0b17dyMjI8PVh7/vBzfddJMxePBgY/fu3cY//vEP48orrzRSU1PPqPHRRx81evbsaZw+ffqM9xYtWmTk5uYan376qbFnzx7jtttuMzp16mSUlZW1i22wdu1aY926dca+ffuMffv2GYsXLzYCAgKM1atXu9q0h2PDubZDXl6eERISYmRkZLj9Tfjqq69cbbyxLxiGYShYeWD69OkGcMYrPz/f1eb6669vtM1nn31mGIZzp7n22muN0NBQIyQkxLjhhhuM9957z+17Gi4Db/jMmjVrGu3zh7n4gw8+MK677jojKCjIuPzyy40lS5ac8Tu8/vrrxlVXXWUEBgYaAwcONN58802/2Q7N/W7DMIyEhARj2rRpjdb/xBNPGH369DE6depkREREGCNGjDDy8vLazTbYtm2bER8fb4SFhRmhoaHGoEGDjOeff96oq6s7o+/4+HgjMDDQuOKKK4w1a9a0m22wcOHCRt/v1auXq4/2vh8YhmF8/vnnRlJSkhEcHGxceumlxgMPPGA4HI4z+vbX/eCrr74yUlNTjbCwMMNsNhszZsw44/9k1dXVGdHR0cZvfvObRuu///77DYvFYgQGBhqXXXaZcfPNNxtWq7XdbIO1a9caP/7xj42QkBDDbDYbQ4cONTZs2HDG7+Dvx4ZzbYemarv++utdbbyxLxiGYZgM43vXYIuIiIhIi130VwWKiIiIeIuClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiX/H/8sX+wEBrMNQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -269,326 +312,499 @@ } ], "source": [ - "ax = proj_ebgreenway.plot(color='blue')" + "test_geojson = gpd.read_file('us101cc_bikeped.geojson')\n", + "ax_geojson = test_geojson.plot(color='blue')\n", + "\n", + "## geojson works" ] }, { "cell_type": "code", - "execution_count": 11, - "id": "403042d9-b747-4cee-99d0-c90cb3b601fa", + "execution_count": 5, + "id": "5cca3910-9b2f-4272-bec1-d7fe07adb99c", "metadata": {}, "outputs": [], "source": [ - "import _utils" + "# _utils.read_and_create_shpfiles('us101cc_bikeped.geojson', 'us101cc_bikeped_locations')" ] }, { "cell_type": "code", - "execution_count": 14, - "id": "a3f83bc1-6a3c-4103-a96f-7277f7458c06", + "execution_count": null, + "id": "f605eb56-f955-4c07-bc7d-3942fe11431b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "c84b0133-7c7a-422a-b804-36665235f75e", + "metadata": {}, + "source": [ + "### testing way to get json to geojson without manually manipulating \n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "fbafab4d-b8a5-464d-a6c4-1a16b46c281d", "metadata": {}, + "outputs": [], + "source": [ + "input_file=json.load(open(\"us101_cc_bike.json\", \"r\", encoding=\"utf-8\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "859a6f9f-9517-4aa6-ab7f-a0229fc5ab10", + "metadata": { + "scrolled": true, + "tags": [] + }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Path name: eb_greenway.zip\n", - "Dirname (1st element of path): eb_greenway\n", - "Shapefile name: eb_greenway.shp\n", - "Shapefile component parts folder: eb_greenway/eb_greenway.shp\n" - ] + "data": { + "text/plain": [ + "{'description': 'do not use for analyses',\n", + " 'name': ' US101CCCR_BikeTrail_Location_only',\n", + " 'allowedModes': ['BICYCLE', 'WALK'],\n", + " 'bikeTimeFactor': 1,\n", + " 'bikeLts': 1,\n", + " 'carSpeedKph': 30,\n", + " 'lineStrings': [[[-119.20599, 34.250277], [-119.196317, 34.251772]],\n", + " [[-119.196948, 34.251643],\n", + " [-119.195589, 34.251858],\n", + " [-119.194615, 34.25208],\n", + " [-119.193859, 34.252327],\n", + " [-119.193069, 34.25265],\n", + " [-119.192468, 34.25296],\n", + " [-119.192388, 34.253005],\n", + " [-119.1916, 34.253455],\n", + " [-119.190431, 34.254183],\n", + " [-119.189196, 34.254962],\n", + " [-119.187524, 34.255969],\n", + " [-119.185058, 34.257473]],\n", + " [[-119.185329, 34.257272],\n", + " [-119.182834, 34.258829],\n", + " [-119.180142, 34.260506],\n", + " [-119.177185, 34.262288]],\n", + " [[-119.177373, 34.262152],\n", + " [-119.176, 34.263],\n", + " [-119.173854, 34.264333],\n", + " [-119.173536, 34.26451],\n", + " [-119.172733, 34.265006]],\n", + " [[-119.172865, 34.264891],\n", + " [-119.171317, 34.265883],\n", + " [-119.170109, 34.266607],\n", + " [-119.169344, 34.267059],\n", + " [-119.167152, 34.268394]],\n", + " [[-119.167385, 34.268291],\n", + " [-119.166173, 34.269023],\n", + " [-119.164632, 34.269948],\n", + " [-119.162433, 34.27128],\n", + " [-119.161232, 34.272059],\n", + " [-119.159627, 34.273002],\n", + " [-119.157879, 34.274092],\n", + " [-119.156145, 34.27514],\n", + " [-119.155026, 34.275816]],\n", + " [[-119.155166, 34.27571],\n", + " [-119.154719, 34.275994],\n", + " [-119.154347, 34.276339],\n", + " [-119.153807, 34.277018],\n", + " [-119.153314, 34.277704],\n", + " [-119.152896, 34.278161],\n", + " [-119.152191, 34.279007]],\n", + " [[-119.152286, 34.278935],\n", + " [-119.15145, 34.279547],\n", + " [-119.150667, 34.280309],\n", + " [-119.149598, 34.281301],\n", + " [-119.148436, 34.282379]],\n", + " [[-119.148769, 34.282122], [-119.147707, 34.283067]],\n", + " [[-119.147796, 34.282964],\n", + " [-119.146577, 34.284136],\n", + " [-119.146163, 34.284508],\n", + " [-119.144731, 34.285896],\n", + " [-119.144226, 34.286324],\n", + " [-119.143708, 34.286844]],\n", + " [[-119.033554, 34.216947], [-119.033039, 34.216747]]],\n", + " 'walkTimeFactor': 1}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "_utils.read_and_create_shpfiles('eb_greenway_files/project_location_3.geojson', \"eb_greenway.zip\")" + "(input_file)" ] }, { "cell_type": "code", "execution_count": null, - "id": "49174287-58ec-48f3-9194-88925f28a67f", + "id": "21890e5d-cc7c-427c-803f-c0129dec3ec0", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 17, - "id": "cf57fa32-4c3c-4f6a-b808-bc1e443cf34d", + "execution_count": null, + "id": "22ed0d6c-b30a-4baa-9375-94d8b4624814", "metadata": {}, "outputs": [], - "source": [ - "# proj_ebgreenway.to_file('EB_Greenway_project_location.shp') " - ] + "source": [] }, { "cell_type": "code", "execution_count": null, - "id": "29249880-a5a7-4cd3-9ebb-f9e8c90a1d2f", + "id": "f7176f70-d268-4da2-9a50-dc54e2e185ac", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", - "id": "d2316f80-182d-4000-82e1-a512e67b1980", + "id": "04e271cc-daa3-453f-8f68-8baf780eded6", "metadata": {}, "source": [ - "#### Project 210 Median Shapefile" + "#### Convert to string then to geojson\n", + "attempting to convert file to text using `json.dumps`, extract the part of the json I want to keep, then add the geojson parts" ] }, { "cell_type": "code", - "execution_count": 12, - "id": "3402d9c1-6575-4c88-86fe-a0a699f8674b", + "execution_count": 30, + "id": "ab29d2bc-d6bc-4bfd-a017-3b648033b229", "metadata": {}, "outputs": [], "source": [ - "proj_210median = gpd.read_file('210_files/210median.geojson')" + "import re" ] }, { "cell_type": "code", - "execution_count": 13, - "id": "165ba392-977e-499d-9f9b-839aaebdf2ad", + "execution_count": 31, + "id": "9aea30b3-a021-46b2-8d4f-a4f556b2ca4b", + "metadata": {}, + "outputs": [], + "source": [ + "text = json.dumps(input_file)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "d2acb700-d693-4245-a4cc-56083843ef9d", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", "text/plain": [ - "
" + "'{\"description\": \"do not use for analyses\", \"name\": \" US101CCCR_BikeTrail_Location_only\", \"allowedModes\": [\"BICYCLE\", \"WALK\"], \"bikeTimeFactor\": 1, \"bikeLts\": 1, \"carSpeedKph\": 30, \"lineStrings\": [[[-119.20599, 34.250277], [-119.196317, 34.251772]], [[-119.196948, 34.251643], [-119.195589, 34.251858], [-119.194615, 34.25208], [-119.193859, 34.252327], [-119.193069, 34.25265], [-119.192468, 34.25296], [-119.192388, 34.253005], [-119.1916, 34.253455], [-119.190431, 34.254183], [-119.189196, 34.254962], [-119.187524, 34.255969], [-119.185058, 34.257473]], [[-119.185329, 34.257272], [-119.182834, 34.258829], [-119.180142, 34.260506], [-119.177185, 34.262288]], [[-119.177373, 34.262152], [-119.176, 34.263], [-119.173854, 34.264333], [-119.173536, 34.26451], [-119.172733, 34.265006]], [[-119.172865, 34.264891], [-119.171317, 34.265883], [-119.170109, 34.266607], [-119.169344, 34.267059], [-119.167152, 34.268394]], [[-119.167385, 34.268291], [-119.166173, 34.269023], [-119.164632, 34.269948], [-119.162433, 34.27128], [-119.161232, 34.272059], [-119.159627, 34.273002], [-119.157879, 34.274092], [-119.156145, 34.27514], [-119.155026, 34.275816]], [[-119.155166, 34.27571], [-119.154719, 34.275994], [-119.154347, 34.276339], [-119.153807, 34.277018], [-119.153314, 34.277704], [-119.152896, 34.278161], [-119.152191, 34.279007]], [[-119.152286, 34.278935], [-119.15145, 34.279547], [-119.150667, 34.280309], [-119.149598, 34.281301], [-119.148436, 34.282379]], [[-119.148769, 34.282122], [-119.147707, 34.283067]], [[-119.147796, 34.282964], [-119.146577, 34.284136], [-119.146163, 34.284508], [-119.144731, 34.285896], [-119.144226, 34.286324], [-119.143708, 34.286844]], [[-119.033554, 34.216947], [-119.033039, 34.216747]]], \"walkTimeFactor\": 1}'" ] }, + "execution_count": 38, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "ax = proj_210median.plot(color='blue')" + "text" ] }, { "cell_type": "code", - "execution_count": 14, - "id": "4dfb982b-a00e-4582-a93c-a96217975217", + "execution_count": 33, + "id": "cd779331-b816-4877-aa33-7e8e1fde47b7", "metadata": {}, "outputs": [], "source": [ - "# proj_210median.to_file('proj_210median.shp') " + "# my_keword1 = \", \"\n", + "# text_split = text.split(my_keword1)\n", + "# text_split" ] }, { "cell_type": "code", "execution_count": null, - "id": "c9b4d8ae-9d87-4326-bd8a-981119cec6fd", + "id": "4c3c69d7-52c7-41f4-9fd3-34b3acc5db2f", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 6, - "id": "3b06f841-35ae-4bd8-ad44-f297a24df0b1", + "execution_count": 34, + "id": "3413938f-637f-4a5d-861b-a2f402db76ad", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "text2 = json.loads(json.dumps(input_file))" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "d63b8192-3bfc-4cbb-afe4-b132f08f531a", "metadata": {}, "outputs": [], "source": [ - "import _utils" + "# text2" ] }, { "cell_type": "code", - "execution_count": 5, - "id": "68aaec2d-004d-4a90-9cd8-10b700c0fc97", + "execution_count": 39, + "id": "ba3be98a-b1bc-414a-b0ff-51dcdeb5fd11", + "metadata": {}, + "outputs": [], + "source": [ + "m = re.search('lineStrings\": (.+?), \"walkTimeFactor', text)\n", + "if m:\n", + " found = m.group(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "ca5957b1-537f-4260-a0b8-4452b2173724", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Path name: yolo80_50_bikepath\n", - "Dirname (1st element of path): yolo80_50_bikepath\n", - "Shapefile name: yolo80_50_bikepath.shp\n", - "Shapefile component parts folder: yolo80_50_bikepath/yolo80_50_bikepath.shp\n" - ] + "data": { + "text/plain": [ + "'[[[-119.20599, 34.250277], [-119.196317, 34.251772]], [[-119.196948, 34.251643], [-119.195589, 34.251858], [-119.194615, 34.25208], [-119.193859, 34.252327], [-119.193069, 34.25265], [-119.192468, 34.25296], [-119.192388, 34.253005], [-119.1916, 34.253455], [-119.190431, 34.254183], [-119.189196, 34.254962], [-119.187524, 34.255969], [-119.185058, 34.257473]], [[-119.185329, 34.257272], [-119.182834, 34.258829], [-119.180142, 34.260506], [-119.177185, 34.262288]], [[-119.177373, 34.262152], [-119.176, 34.263], [-119.173854, 34.264333], [-119.173536, 34.26451], [-119.172733, 34.265006]], [[-119.172865, 34.264891], [-119.171317, 34.265883], [-119.170109, 34.266607], [-119.169344, 34.267059], [-119.167152, 34.268394]], [[-119.167385, 34.268291], [-119.166173, 34.269023], [-119.164632, 34.269948], [-119.162433, 34.27128], [-119.161232, 34.272059], [-119.159627, 34.273002], [-119.157879, 34.274092], [-119.156145, 34.27514], [-119.155026, 34.275816]], [[-119.155166, 34.27571], [-119.154719, 34.275994], [-119.154347, 34.276339], [-119.153807, 34.277018], [-119.153314, 34.277704], [-119.152896, 34.278161], [-119.152191, 34.279007]], [[-119.152286, 34.278935], [-119.15145, 34.279547], [-119.150667, 34.280309], [-119.149598, 34.281301], [-119.148436, 34.282379]], [[-119.148769, 34.282122], [-119.147707, 34.283067]], [[-119.147796, 34.282964], [-119.146577, 34.284136], [-119.146163, 34.284508], [-119.144731, 34.285896], [-119.144226, 34.286324], [-119.143708, 34.286844]], [[-119.033554, 34.216947], [-119.033039, 34.216747]]]'" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "_utils.read_and_create_shpfiles('yolo_80_50_bikepath.geojson', 'yolo80_50_bikepath')" + "found" ] }, { "cell_type": "code", "execution_count": null, - "id": "fdf7f513-537c-49f2-8bae-5a3b5504fcf7", + "id": "f0b5d10e-e9e5-4b60-a7d4-28c1da5e8cf3", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 5, - "id": "77fd58d5-65d0-4c0c-808f-cc7e313018ba", + "execution_count": 41, + "id": "9eb51b0f-863b-46c8-be63-5481f822b1bb", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Path name: us101_cc_ped_undercrossing\n", - "Dirname (1st element of path): us101_cc_ped_undercrossing\n", - "Shapefile name: us101_cc_ped_undercrossing.shp\n", - "Shapefile component parts folder: us101_cc_ped_undercrossing/us101_cc_ped_undercrossing.shp\n" - ] - } - ], + "outputs": [], "source": [ - "_utils.read_and_create_shpfiles('us101_cc_pedundercrossing.geojson', 'us101_cc_ped_undercrossing')" + "start_text = ('{\"type\": \"FeatureCollection\", \"features\": [{\"geometry\": { \"type\": \"MultiLineString\", \"coordinates\":')" ] }, { "cell_type": "code", - "execution_count": null, - "id": "3fd7469d-cb9a-436f-b828-fba779b239dc", + "execution_count": 42, + "id": "cba4035f-5a25-4457-b7dc-5b547bdeb51a", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "end_text = ('}, \"type\": \"Feature\", }] }')" + ] }, { "cell_type": "code", - "execution_count": null, - "id": "eec8a2ad-cc96-4ab2-baa0-783cfbff4ad0", + "execution_count": 43, + "id": "98220914-eead-4f29-a7cb-71387e5b0f46", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "new_file = start_text + found + end_text" + ] }, { "cell_type": "code", - "execution_count": 3, - "id": "7ac57753-7a4c-407b-a2ae-cc4fbca7d41c", + "execution_count": 44, + "id": "9ad6ade6-ee70-468e-8851-c0802383ca8e", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", "text/plain": [ - "
" + "'{\"type\": \"FeatureCollection\", \"features\": [{\"geometry\": { \"type\": \"MultiLineString\", \"coordinates\":[[[-119.20599, 34.250277], [-119.196317, 34.251772]], [[-119.196948, 34.251643], [-119.195589, 34.251858], [-119.194615, 34.25208], [-119.193859, 34.252327], [-119.193069, 34.25265], [-119.192468, 34.25296], [-119.192388, 34.253005], [-119.1916, 34.253455], [-119.190431, 34.254183], [-119.189196, 34.254962], [-119.187524, 34.255969], [-119.185058, 34.257473]], [[-119.185329, 34.257272], [-119.182834, 34.258829], [-119.180142, 34.260506], [-119.177185, 34.262288]], [[-119.177373, 34.262152], [-119.176, 34.263], [-119.173854, 34.264333], [-119.173536, 34.26451], [-119.172733, 34.265006]], [[-119.172865, 34.264891], [-119.171317, 34.265883], [-119.170109, 34.266607], [-119.169344, 34.267059], [-119.167152, 34.268394]], [[-119.167385, 34.268291], [-119.166173, 34.269023], [-119.164632, 34.269948], [-119.162433, 34.27128], [-119.161232, 34.272059], [-119.159627, 34.273002], [-119.157879, 34.274092], [-119.156145, 34.27514], [-119.155026, 34.275816]], [[-119.155166, 34.27571], [-119.154719, 34.275994], [-119.154347, 34.276339], [-119.153807, 34.277018], [-119.153314, 34.277704], [-119.152896, 34.278161], [-119.152191, 34.279007]], [[-119.152286, 34.278935], [-119.15145, 34.279547], [-119.150667, 34.280309], [-119.149598, 34.281301], [-119.148436, 34.282379]], [[-119.148769, 34.282122], [-119.147707, 34.283067]], [[-119.147796, 34.282964], [-119.146577, 34.284136], [-119.146163, 34.284508], [-119.144731, 34.285896], [-119.144226, 34.286324], [-119.143708, 34.286844]], [[-119.033554, 34.216947], [-119.033039, 34.216747]]]}, \"type\": \"Feature\", }] }'" ] }, + "execution_count": 44, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "test = gpd.read_file('us101_woodside.geojson')\n", - "ax = test.plot(color='blue')" + "new_file" ] }, { "cell_type": "code", - "execution_count": 6, - "id": "a5306d86-b691-4c48-800f-8b0ce242b4b7", + "execution_count": 50, + "id": "08de06de-2399-45ce-84f6-dbfb0f9c8d9e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Path name: us101_SR92_locations\n", - "Dirname (1st element of path): us101_SR92_locations\n", - "Shapefile name: us101_SR92_locations.shp\n", - "Shapefile component parts folder: us101_SR92_locations/us101_SR92_locations.shp\n" - ] - } - ], + "outputs": [], "source": [ - "_utils.read_and_create_shpfiles('us101_woodside.geojson', 'us101_woodside_locations')" + "## the format were looking for" ] }, { "cell_type": "code", "execution_count": null, - "id": "cb27fa6f-03e3-4b0c-ae62-840d043dbce4", + "id": "5dfd99c0-d5a0-46a9-8ca9-1fc1bb10353a", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 4, - "id": "0659377f-f646-4749-9f03-9253f86f2d2f", + "execution_count": null, + "id": "9b79a647-92a8-4764-89c9-6d182b5e6687", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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RMT/jt8tnmPVoL6+HrvdzqJFi5g1a5bbe7GxsSxbtozx48c3+fmGULV//37y8/MbDVUVFRWMHDmSIUOGsGbNGo9DlYiIiMiF4FGwysjIICkpCYvFQm1tLevWraOgoIDc3FwiIyMbnbBusVjo3bu3a7l///5kZmYyceJEHA4HkydPxmq1snXrVurq6qiurgacVxsGBgZSUVHBiBEj6NWrF08++ST/+te/XH21dIK8iIiIyPngUbA6evQoaWlpVFVVER4eTlxcHLm5uYwZM6bZfZSXl2Oz2QDnSFROTg4A8fHxbu3y8/MZMWIE27dv58CBAxw4cIDo6Gi3Nq08iykiIiLiVa2eY+Uv/O0crYiIiPjf8VuTlURERES8RMFKREREWqWqCr75xtdVtA0KViIiItIqGRkwcCA4HL6uxPcUrERERKTFTp+GvXth2jTo2NHX1fheq+9jJSIiIhevDh2gsBBOnvR1JW2DRqxERESkVUwmCA72dRVtg4KViIiIiJcoWImIiIh4iYKViIiIiJcoWImIiIh4iYKViIiIiJcoWImIiIh4iYKViIiIiJdcNDcINQwDcD4lW0RERPxDw3G74Tje1l00waq2thaAmJgYH1ciIiIinqqtrSU8PNzXZZyTyfCXCNhK9fX1VFZW0rlzZ0wmk6/LcampqSEmJoYvvvgCs9ns63J8RttB2wC0DUDbALQNQNugQcN2+Oijj+jXrx8BAW1/BtNFM2IVEBBAdHS0r8toktlsvqj/8TTQdtA2AG0D0DYAbQPQNmhw+eWX+0WoAk1eFxEREfEaBSsRERERL1Gw8rGgoCAWLlxIUFCQr0vxKW0HbQPQNgBtA9A2AG2DBv64HS6ayesiIiIi55tGrERERES8RMFKRERExEsUrERERES8RMFKRERExEsUrDywePFiEhMTCQkJoUuXLo22uffeexkyZAhBQUHEx8c32ub1118nPj6ekJAQevXqxdKlS8/6vZ9//jkzZ86kd+/eBAcH06dPHxYuXMipU6fc2n344YcMHz6cTp06ERMTw+9///sz+tqwYQP9+/enU6dOxMbG8te//rVZv/v3+Wo7NOe7165di8lkavR19OhRAAoKChp9v7q6urmboE1vA6DR32/9+vVubQoKCrj66qsJCgqib9++rF279pzf7WkdvtoGH3zwAampqcTExBAcHMyPf/xjnn76abc2F8N+cPjwYW655RZCQkLo0aMHDz74IKdPn3Zr48/7wddff83tt9+O2WymS5cuzJw5k2PHjrnef/zxxxv9bxwaGupq09jfjE6dOrWbbfD55583ug3ee+89t378/dhwru1QUFBAcnIyUVFRhIaGEh8fz2uvvebWhzf2BVCw8sipU6eYMmUKv/zlL8/a7j/+4z+49dZbG31v27Zt3H777cydO5e9e/fy3HPPsWzZMp599tkm+/v444+pr6/nhRdeoKysjGXLlvH888/zm9/8xtWmpqaGG2+8kV69erFnzx6WLl3K448/zh//+EdXm507d5KamsrMmTMpLi4mJSWFlJQU9u7d6xfboTnffeutt1JVVeX2Gjt2LNdffz09evRwa1teXu7W7ofvt6aOBr7YBg3WrFnj9vulpKS43vvss8+45ZZbGDlyJCUlJdx///3MmjWL3Nzcs/bZkjp8sQ327NlDjx49ePXVVykrK+ORRx4hIyOj0X7b635QV1fHLbfcwqlTp9i5cycvv/wya9eu5bHHHnO18ff94Pbbb6esrIzt27ezdetW/v73v3PXXXe53v/P//zPM/4eDBgwgClTprj1Yzab3docOnSomb+9U1veBg3efvttt99xyJAhrvfaw7HhXNth586dxMXFsWnTJj788ENmzJhBWloaW7dudeuntfsCAIZ4bM2aNUZ4ePhZ2yxcuNAYNGjQGetTU1ONyZMnu61bsWKFER0dbdTX1ze7ht///vdG7969XcvPPfec0bVrV8Nut7vWpaenG/369XMtT5061bjlllvc+hk2bJgxZ86cZn/v9/lyOzTnuw3DMI4ePWp07NjReOWVV1zr8vPzDcD45ptvzvl5b9Thi20AGNnZ2U1+9qGHHjIGDhzotu7WW281xo4de87v9aSOBr7eDwzDMO6++25j5MiRruX2vh/89a9/NQICAozq6mrXuqysLMNsNrv+TvjzfvDRRx8ZgFFYWOhat23bNsNkMhkVFRWNfqakpMQAjL///e8e1d1cbXEbfPbZZwZgFBcXN1mTvx8bWrIvGIZh3HzzzcaMGTM8qrs5NGJ1gdnt9jOGFoODgzly5IhHydhmsxEREeFa3rVrFz//+c8JDAx0rRs7dizl5eV88803rjajR49262fs2LHs2rWrJb9Kq3hrO5zLK6+8QkhICJMnTz7jvfj4eKKiohgzZgzvvvuu176zuc73Nrjnnnu49NJLGTp0KKtXr8b43i3r2sq+cKH2Azjz30yD9rof7Nq1i9jYWC677DLXurFjx1JTU0NZWZmrjb/uB7t27aJLly5cc801rnWjR48mICCA3bt3N/qZVatWcdVVVzF8+HC39ceOHaNXr17ExMSQnJzs2j4X0vneBhMmTKBHjx5cd9115OTknNFPW9gP4MLtC9D43wRv7AsKVhfY2LFj2bx5M++88w719fV88sknPPXUUwBUVVU1q48DBw7wzDPPMGfOHNe66upqtz+ggGu5Yc5IU208mVPiLd7YDs3x0ksvMW3aNIKDg13roqKieP7559m0aRObNm0iJiaGESNGYLVavfa9zXE+t8Fvf/tbXn/9dbZv386kSZO4++67eeaZZ1zvN7Uv1NTU8N1337Xquz1xofaDnTt38pe//MXt1EB73w9a8zfBH/aD6urqM07bdujQgYiIiEb/pp08eZLXXnuNmTNnuq3v168fq1ev5o033uDVV1+lvr6exMREjhw54qXfrnnO1zYICwvjqaeeYsOGDbz55ptcd911pKSkuIUrfz82eLovgHMeV2FhITNmzHCt89a+cNEHq4cffrjJyc4Nr48//thr3zd79mx+9atfMW7cOAIDA7n22mu57bbbAJr15O6KigpuuukmpkyZwuzZs71Wl79th+bYtWsX+/bta/QP6Zw5cxgyZAiJiYmsXr2axMRE0tLS2s02WLBgAT/72c8YPHgw6enpPPTQQ82aAAoQEhLSLrZBg71795KcnMzChQu58cYbXesvhv2gNdrbfpCdnU1tbS3Tp093W5+QkEBaWhrx8fFcf/31bN68me7du3Prrbe2i/3g0ksvZf78+QwbNoyf/vSnLFmyhF/84hfN/nvQHo8N+fn5zJgxgxdffJGBAwe61je1L7zwwgse9d/BK1X6sQceeIA777zzrG2uuOIKr32fyWTiiSee4L//+7+prq6me/fuvPPOO836nsrKSkaOHEliYqLbpHSAyMhI/vnPf7qta1iOjIw8a5vIyEi/2g7NtWrVKuLj490maTZl6NCh5Ofns2/fvrO287dt0GDYsGH87ne/w263ExQU1OS+EBYWRmFh4Vn78qdt8NFHH3HDDTdw11138eijj56zfXvaDyIjI3n//ffd1jX3b4I/7AeRkZGuK30bnD59mq+//tr1+33fqlWrGDdu3BkjMz/UsWNHBg8ezOnTp9v8fuDpNmgwbNgwtm/f7taPPx8bPNkOO3bsYPz48Sxbtoy0tLSz1tKwLxw4cMCj3+GiD1bdu3ene/fuF/x7L7nkEi6//HIA/vznP5OQkHDWOioqKhg5ciRDhgxhzZo1ZyT3hIQEHnnkERwOBx07dgRg+/bt9OvXj65du7ravPPOO9x///2uz23fvt313f6wHZrr2LFjvP7662RmZjarfUlJCRaLhf79+7f6uz11vrbB95WUlNC1a1fXg0wTEhLOuJx6+/bt/OxnP2s326CsrIxRo0Yxffp0Fi9e3KzPtKf9ICEhgcWLF3P06FHXaZLt27djNpsZMGCAq42/7gcJCQl8++237Nmzx/V/nvLy8qivr2fYsGFubT/77DPy8/PPmFvUmLq6OkpLS7n55pvb1Tb4vpKSEqKiotz68edjQ3O3Q0FBAePGjeOJJ55o9MrJH/r+vuCRVk9/v4gcOnTIKC4uNhYtWmSEhYUZxcXFRnFxsVFbW+tqs3//fqO4uNiYM2eOcdVVV7naNFyF869//cvIysoy9u3bZxQXFxv33nuv0alTJ2P37t2uPnbv3m3069fPOHLkiGEYhnHkyBGjb9++xg033GAcOXLEqKqqcr0afPvtt8Zll11m3HHHHcbevXuN9evXGyEhIcYLL7zgavPuu+8aHTp0MJ588klj3759xsKFC42OHTsapaWlfrEdmvvdhmEYq1atMjp16tToFV/Lli0ztmzZYuzfv98oLS017rvvPiMgIMB4++2328U2yMnJMV588UWjtLTU2L9/v/Hcc88ZISEhxmOPPebq4+DBg0ZISIjx4IMPGvv27TNWrlxpXHLJJcZbb73VLrZBaWmp0b17d+MXv/iF27+Xo0ePuvpo7/vB6dOnjZ/85CfGjTfeaJSUlBhvvfWW0b17dyMjI8PVh7/vBzfddJMxePBgY/fu3cY//vEP48orrzRSU1PPqPHRRx81evbsaZw+ffqM9xYtWmTk5uYan376qbFnzx7jtttuMzp16mSUlZW1i22wdu1aY926dca+ffuMffv2GYsXLzYCAgKM1atXu9q0h2PDubZDXl6eERISYmRkZLj9Tfjqq69cbbyxLxiGYShYeWD69OkGcMYrPz/f1eb6669vtM1nn31mGIZzp7n22muN0NBQIyQkxLjhhhuM9957z+17Gi4Db/jMmjVrGu3zh7n4gw8+MK677jojKCjIuPzyy40lS5ac8Tu8/vrrxlVXXWUEBgYaAwcONN58802/2Q7N/W7DMIyEhARj2rRpjdb/xBNPGH369DE6depkREREGCNGjDDy8vLazTbYtm2bER8fb4SFhRmhoaHGoEGDjOeff96oq6s7o+/4+HgjMDDQuOKKK4w1a9a0m22wcOHCRt/v1auXq4/2vh8YhmF8/vnnRlJSkhEcHGxceumlxgMPPGA4HI4z+vbX/eCrr74yUlNTjbCwMMNsNhszZsw44/9k1dXVGdHR0cZvfvObRuu///77DYvFYgQGBhqXXXaZcfPNNxtWq7XdbIO1a9caP/7xj42QkBDDbDYbQ4cONTZs2HDG7+Dvx4ZzbYemarv++utdbbyxLxiGYZgM43vXYIuIiIhIi130VwWKiIiIeIuClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiXKFiJiIiIeImClYiIiIiX/H/8sX+wEBrMNQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "a22fd8c3-888a-4e6f-8800-305d285f4324", + "metadata": { + "tags": [] + }, + "outputs": [], "source": [ - "test = gpd.read_file('us101cc_bikeped.geojson')\n", - "ax = test.plot(color='blue')\n" + "# from geojson import dump" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "5cca3910-9b2f-4272-bec1-d7fe07adb99c", + "execution_count": 48, + "id": "cd8d2b3c-8de8-48c7-88f3-441215b9fb8d", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Path name: us101cc_bikeped_locations\n", - "Dirname (1st element of path): us101cc_bikeped_locations\n", - "Shapefile name: us101cc_bikeped_locations.shp\n", - "Shapefile component parts folder: us101cc_bikeped_locations/us101cc_bikeped_locations.shp\n" - ] - } - ], + "outputs": [], "source": [ - "_utils.read_and_create_shpfiles('us101cc_bikeped.geojson', 'us101cc_bikeped_locations')" + "# new_file.to_file('testfile.geojson', driver='GeoJSON')" ] }, { "cell_type": "code", "execution_count": null, - "id": "9cb6514d-998b-499d-88a8-082d19831ed9", + "id": "74a99223-c3c6-467d-a1ab-562be28fdadf", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 4, - "id": "c731db6e-8d51-4b7f-b72c-61011db95055", + "execution_count": null, + "id": "3393da36-6ec9-49f8-949c-ead5e2fc5a5b", "metadata": {}, "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "b20fbddd-23b9-4531-8b67-d51a7d8eb186", + "metadata": {}, "source": [ - "## mapping this first" + "### Reading in Conveyal's scenario which has a geojson export option" ] }, { "cell_type": "code", - "execution_count": 6, - "id": "55af1a25-fc42-4ba1-828f-b0d9b1896313", + "execution_count": 26, + "id": "cf7e9350-5f11-4112-b509-c67df7df51b3", "metadata": {}, "outputs": [], "source": [ - "# ontario = gpd.read_file('ontario_transit_tunnel.geojson')\n", - "# ax = ontario.plot(color='blue')" + "scenario_geojson = gpd.read_file('CSIS-3.0 Accessibility Analysis-US101_Woodside_BikePed-new-stops.geojson')" ] }, + { + "cell_type": "code", + "execution_count": 27, + "id": "e6448926-999b-4b12-aeb1-f539ee584c22", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
geometry
\n", + "
" + ], + "text/plain": [ + "Empty GeoDataFrame\n", + "Columns: [geometry]\n", + "Index: []" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scenario_geojson" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "92a9c12f-681f-4ff6-88d0-23dd2671c4e1", + "metadata": {}, + "outputs": [], + "source": [ + "## empty.." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2238b085-9d7d-4186-9234-c70192ac1445", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, - "id": "656f258a-6e04-4f55-b228-396c2c77ef7a", + "id": "9ee9eccb-d758-431a-871f-5126180b5888", "metadata": {}, "outputs": [], "source": [] diff --git a/project_prioritization/accessibility/ontario_transit_tunnel.geojson b/project_prioritization/accessibility/southern_ca_projects/ontario_transit_tunnel.geojson similarity index 100% rename from project_prioritization/accessibility/ontario_transit_tunnel.geojson rename to project_prioritization/accessibility/southern_ca_projects/ontario_transit_tunnel.geojson diff --git a/project_prioritization/accessibility/us101cc_bikeped_locations.zip b/project_prioritization/accessibility/southern_ca_projects/us101cc_bikeped_locations.zip similarity index 100% rename from project_prioritization/accessibility/us101cc_bikeped_locations.zip rename to project_prioritization/accessibility/southern_ca_projects/us101cc_bikeped_locations.zip diff --git a/project_prioritization/accessibility/us101_cc_bike.json b/project_prioritization/accessibility/us101_cc_bike.json new file mode 100644 index 000000000..d31a8c390 --- /dev/null +++ b/project_prioritization/accessibility/us101_cc_bike.json @@ -0,0 +1,272 @@ +{ + "description": "do not use for analyses", + "name": " US101CCCR_BikeTrail_Location_only", + "allowedModes": [ + "BICYCLE", + "WALK" + ], + "bikeTimeFactor": 1, + "bikeLts": 1, + "carSpeedKph": 30, + "lineStrings": [ + [ + [ + -119.20599, + 34.250277 + ], + [ + -119.196317, + 34.251772 + ] + ], + [ + [ + -119.196948, + 34.251643 + ], + [ + -119.195589, + 34.251858 + ], + [ + -119.194615, + 34.25208 + ], + [ + -119.193859, + 34.252327 + ], + [ + -119.193069, + 34.25265 + ], + [ + -119.192468, + 34.25296 + ], + [ + -119.192388, + 34.253005 + ], + [ + -119.1916, + 34.253455 + ], + [ + -119.190431, + 34.254183 + ], + [ + -119.189196, + 34.254962 + ], + [ + -119.187524, + 34.255969 + ], + [ + -119.185058, + 34.257473 + ] + ], + [ + [ + -119.185329, + 34.257272 + ], + [ + -119.182834, + 34.258829 + ], + [ + -119.180142, + 34.260506 + ], + [ + -119.177185, + 34.262288 + ] + ], + [ + [ + -119.177373, + 34.262152 + ], + [ + -119.176, + 34.263 + ], + [ + -119.173854, + 34.264333 + ], + [ + -119.173536, + 34.26451 + ], + [ + -119.172733, + 34.265006 + ] + ], + [ + [ + -119.172865, + 34.264891 + ], + [ + -119.171317, + 34.265883 + ], + [ + -119.170109, + 34.266607 + ], + [ + -119.169344, + 34.267059 + ], + [ + -119.167152, + 34.268394 + ] + ], + [ + [ + -119.167385, + 34.268291 + ], + [ + -119.166173, + 34.269023 + ], + [ + -119.164632, + 34.269948 + ], + [ + -119.162433, + 34.27128 + ], + [ + -119.161232, + 34.272059 + ], + [ + -119.159627, + 34.273002 + ], + [ + -119.157879, + 34.274092 + ], + [ + -119.156145, + 34.27514 + ], + [ + -119.155026, + 34.275816 + ] + ], + [ + [ + -119.155166, + 34.27571 + ], + [ + -119.154719, + 34.275994 + ], + [ + -119.154347, + 34.276339 + ], + [ + -119.153807, + 34.277018 + ], + [ + -119.153314, + 34.277704 + ], + [ + -119.152896, + 34.278161 + ], + [ + -119.152191, + 34.279007 + ] + ], + [ + [ + -119.152286, + 34.278935 + ], + [ + -119.15145, + 34.279547 + ], + [ + -119.150667, + 34.280309 + ], + [ + -119.149598, + 34.281301 + ], + [ + -119.148436, + 34.282379 + ] + ], + [ + [ + -119.148769, + 34.282122 + ], + [ + -119.147707, + 34.283067 + ] + ], + [ + [ + -119.147796, + 34.282964 + ], + [ + -119.146577, + 34.284136 + ], + [ + -119.146163, + 34.284508 + ], + [ + -119.144731, + 34.285896 + ], + [ + -119.144226, + 34.286324 + ], + [ + -119.143708, + 34.286844 + ] + ], + [ + [ + -119.033554, + 34.216947 + ], + [ + -119.033039, + 34.216747 + ] + ] + ], + "walkTimeFactor": 1 +} \ No newline at end of file diff --git a/project_prioritization/accessibility/us101cc_scenario.geojson b/project_prioritization/accessibility/us101cc_scenario.geojson new file mode 100644 index 000000000..8ebef9a50 --- /dev/null +++ b/project_prioritization/accessibility/us101cc_scenario.geojson @@ -0,0 +1,4 @@ +{ + "type": "FeatureCollection", + "features": [] +} \ No newline at end of file