From 065c5824211c3bd77dc1ea610baecdec10ef71c4 Mon Sep 17 00:00:00 2001 From: Lachlan Perrier Date: Fri, 2 Aug 2024 11:05:07 -0400 Subject: [PATCH 1/2] this works with python 3.7, I was having issues --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 2dc2366..e73fe59 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ lark-parser jupyter +pywin32 == 306 notebook numpy pandas > 1.0 From 6a59f83f83a3e645ddbdac5b8aad8490ec352d67 Mon Sep 17 00:00:00 2001 From: Lachlan Perrier Date: Tue, 20 Aug 2024 16:44:57 -0400 Subject: [PATCH 2/2] updates for compatibility with lasso --- notebooks/Ranch-Demo.ipynb | 25 +++++++++++++++++++++---- ranch/roadway.py | 15 +++++++++++++-- ranch/utils.py | 5 ++++- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/notebooks/Ranch-Demo.ipynb b/notebooks/Ranch-Demo.ipynb index 7dec4ad..4455522 100644 --- a/notebooks/Ranch-Demo.ipynb +++ b/notebooks/Ranch-Demo.ipynb @@ -171,10 +171,22 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 1, "id": "186f2501", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'external_dir' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mC:\\Users\\LOCAL_~1\\Temp/ipykernel_26752/3410258116.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m input_polygon_file = os.path.join(\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mexternal_dir\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[1;34m\"sharedstreets_extract\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;34m\"merced.shp\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'external_dir' is not defined" + ] + } + ], "source": [ "# the polygon file for the area\n", "\n", @@ -187,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "86536141", "metadata": {}, "outputs": [ @@ -879,7 +891,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.7.10 64-bit ('env_tm2')", "language": "python", "name": "python3" }, @@ -894,6 +906,11 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" + }, + "vscode": { + "interpreter": { + "hash": "9f2482f23d4c236f44d514af3ad984f5be74b05148b9f5e6233ac2798070880b" + } } }, "nbformat": 4, diff --git a/ranch/roadway.py b/ranch/roadway.py index 3a43f35..2bebf10 100644 --- a/ranch/roadway.py +++ b/ranch/roadway.py @@ -917,6 +917,12 @@ def build_centroid_connectors( "Missing taz node file, will use input taz polygon centroid" ) + if "county_gdf" not in self.__dict__.keys(): + print('counhty not initialised') + self.county_gdf = gpd.read_file(r"\\corp.pbwan.net\us\CentralData\DCCLDA00\Standard\sag\projects\MTC\31000152\Network_Rebuild\LP_Local_folders\data\external\county_boundaries\county.shp") + self.county_variable_name = "NAME" + + taz_polygon_gdf = gpd.sjoin( taz_polygon_gdf, self.county_gdf[['geometry', self.county_variable_name]], @@ -994,7 +1000,7 @@ def build_centroid_connectors( "Missing maz node file, will use input maz polygon centroid" ) - maz_node_gdf = maz_polygon_gdf["geometry"].representative_centroids() + maz_node_gdf = maz_polygon_gdf["geometry"].centroid # convert to lat-long maz_polygon_gdf = maz_polygon_gdf.to_crs(self.parameters.standard_crs) @@ -1045,7 +1051,8 @@ def build_taz_drive_connector( # geometries (not reference) - good intersections taz_good_intersection_df = Roadway.get_nodes_in_zones( - node_two_geometry_df, taz_polygon_df + node_two_geometry_df.drop(columns=["index_left", "index_right"], errors="ignore"), + taz_polygon_df.drop(columns=["index_left", "index_right"], errors="ignore") ) # step 3 @@ -1199,6 +1206,10 @@ def get_nodes_in_zones(nodes_gdf, zones_gdf): nodes_gdf: nodes geo data frame, points zones_gdf: zones geo data frame, polygons """ + + nodes_gdf = nodes_gdf.drop(columns=["index_left", "index_right"], errors="ignore") + zones_gdf = zones_gdf.drop(columns=["index_left", "index_right"], errors="ignore") + polygon_buffer_gdf = zones_gdf.copy() polygon_buffer_gdf["geometry_buffer"] = polygon_buffer_gdf["geometry"].apply( diff --git a/ranch/utils.py b/ranch/utils.py index e4a4f82..e02faff 100644 --- a/ranch/utils.py +++ b/ranch/utils.py @@ -380,6 +380,9 @@ def generate_centroid_connectors_shape(zone_loading_node_df): columns={"osm_node_id": "u", "model_node_id_x": "A", "model_node_id_y": "B"} ) + if ("A" not in new_cc_gdf.columns ) and ("B" not in new_cc_gdf.columns): + new_cc_gdf = new_cc_gdf.rename(columns={"X": "A", "Y": "B"}) + new_cc_gdf = new_cc_gdf[ ["A", "B", "u", "fromIntersectionId", "shstGeometryId", "id", "geometry"] ] @@ -667,7 +670,7 @@ def get_non_near_connectors(all_cc_link_gdf, num_connectors_per_centroid, zone_i centroid = zone_cc_gdf.c_point.iloc[0] # if the zone has less than 4 cc, keep all - if len(zone_cc_gdf) <= num_connectors_per_centroid: + if len(zone_cc_gdf) <= 4: keep_cc_gdf = keep_cc_gdf.append(zone_cc_gdf, sort=False, ignore_index=True) # if the zone has more than 4 cc