File size: 2,522 Bytes
6bd4abf
70d8e68
 
 
 
6bd4abf
4edbe8b
70d8e68
 
 
 
 
7542d4a
fa1b69f
 
70d8e68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
621197c
fa1b69f
621197c
fa1b69f
 
70d8e68
 
 
 
59da0e7
fa1b69f
b10a27a
 
70d8e68
 
 
 
 
 
 
 
8a21b24
0fbe956
4edbe8b
0fbe956
4edbe8b
70d8e68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57af65a
fa1b69f
 
59da0e7
fa1b69f
b10a27a
70d8e68
fa1b69f
0fbe956
6bd4abf
57af65a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import gradio as gr
import requests
import geopandas as gpd
from shapely.geometry import Point


def process_input(address, selected_option, additional_input):
    transport_analysis_needed = selected_option in [
        "Residential",
        "Office",
        "Community Facility",
    ]

    output_address = f"You entered the address:\n{address}"
    output_option = f"Selected option:\n{selected_option}"

    response = requests.get(
        f"https://geosearch.planninglabs.nyc/v2/autocomplete?text={address}"
    )
    data = response.json()
    x = data["features"][0]["geometry"]["coordinates"]

    # Load the GeoJSON file into a GeoDataFrame
    geodata = gpd.read_file("/content/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()

    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}"

    output_transport_analysis = (
        f"Transport Analysis Needed:\n{transport_analysis_needed}"
    )

    # Replace 'Your Zone Calculation Logic' with the actual zone calculation code

    output_zone = f"Zone:\n{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()