Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import requests | |
| import geopandas as gpd | |
| from shapely.geometry import Point | |
| import pandas as pd | |
| def process_input(address, selected_option, additional_input): | |
| transport_analysis_needed = True | |
| response = requests.get( | |
| f"https://geosearch.planninglabs.nyc/v2/autocomplete?text={address}" | |
| ) | |
| data = response.json() | |
| address = data["features"][0]["properties"]["label"] | |
| output_address = f"{address}" | |
| output_option = f"{selected_option}" | |
| x = data["features"][0]["geometry"]["coordinates"] | |
| # Load the GeoJSON file into a GeoDataFrame | |
| geodata = gpd.read_file("./zone_data.geojson") | |
| # Create a Point for the given coordinates | |
| location_point = Point(x[0], x[1]) | |
| # Find the zone that the location point is in | |
| zone = geodata[geodata.geometry.contains(location_point)]["id"].values.item() | |
| # Load Zone Table of Transportation Analysis | |
| df = pd.read_csv("./zone_table.csv") | |
| df = df.loc[df['Development Type']==selected_option] | |
| threshold_value = df.loc[:, f"Zone {zone}"].values.item() | |
| if additional_input < threshold_value: | |
| transport_analysis_needed = False | |
| if selected_option in ["Off-Street Parking Facility", "Residential"]: | |
| output_additional = f"Number of Units/Spaces:\n{additional_input}" | |
| else: | |
| output_additional = f"Area (in 1000 GSF):\n{additional_input}" | |
| if (transport_analysis_needed): | |
| output_transport_analysis = ( | |
| f"{transport_analysis_needed} (Because proposed developing units/space is larger than {threshold_value})" | |
| ) | |
| else: | |
| output_transport_analysis = ( | |
| f"{transport_analysis_needed} (Because proposed developing units/space is smaller than {threshold_value})" | |
| ) | |
| output_zone = f"{zone}" | |
| return ( | |
| output_address, | |
| output_option, | |
| output_additional, | |
| output_transport_analysis, | |
| output_zone, | |
| ) | |
| iface = gr.Interface( | |
| fn=process_input, | |
| inputs=[ | |
| gr.inputs.Textbox(label="Enter your address"), | |
| gr.inputs.Radio( | |
| [ | |
| "Residential", | |
| "Office", | |
| "Regional Retail", | |
| "Local Retail", | |
| "Sit Down/High Turnover Restaurant", | |
| "Fast Food/without Drive Through", | |
| "Community Facility", | |
| "Off-Street Parking Facility", | |
| ], | |
| label="Select an option", | |
| ), | |
| gr.inputs.Number( | |
| label="Number of Units/Spaces or Area (in 1000 GSF)", default=1 | |
| ), # Default value is 1 | |
| ], | |
| outputs=[ | |
| gr.outputs.Textbox(label="Address"), | |
| gr.outputs.Textbox(label="Selected Option"), | |
| gr.outputs.Textbox(label="Number of Units/Spaces or Area"), | |
| gr.outputs.Textbox(label="Transport Analysis Needed"), | |
| gr.outputs.Textbox(label="Zone"), | |
| ], | |
| ) | |
| iface.launch() | |