IE-670 / spring2024

0 stars 0 forks source link

Zoning Data #6

Open arvindUB opened 5 months ago

arvindUB commented 5 months ago

Zoning data taken from: OpenData Buffalo NY

import geopandas as gpd
from shapely.geometry import Polygon
from shapely.wkt import loads

neighborhood_polygons = []
corrected_boundary = {}

# Order of lat, lon in boundary dict does not match the Zoning dataframe. We swap the order to match it.
for neighborhood, data in boundary.items():
    corrected_coords = [[lon, lat] for lat, lon in data['boundary']]
    corrected_boundary[neighborhood] = {'boundary': corrected_coords}

for neighborhood, data in corrected_boundary.items():
    neighborhood_polygons.append(Polygon(data['boundary']))

gdf_neighborhoods = gpd.GeoDataFrame({'neighborhood': list(boundary.keys()), 'geometry': neighborhood_polygons})

zoning_df['Geometry'] = zoning_df['Geometry'].apply(lambda x: loads(x) if pd.notnull(x) else None)

gdf_zoning = gpd.GeoDataFrame(zoning_df, geometry='Geometry')

result = gpd.sjoin(gdf_zoning, gdf_neighborhoods, how='inner', predicate='within')

The GeoDataFrame result only has zoning information within the scope boundary. Zoning within the scope boundary can be seen below: zoning_image