Spaces:
Runtime error
Runtime error
| import folium | |
| import requests | |
| import gradio as gr | |
| from compute_yield import plot_yield | |
| from summary_test import get_summaries | |
| from visualize.visualize import get_plots | |
| # code from https://huggingface.co/spaces/gaia-mistral/pest-livestock-information | |
| def get_geolocation(adresse, latitude, longitude): | |
| """Return latitude, longitude & code INSEE from an adress. Latitude & longitude only if they are not specified in the function. | |
| Args: | |
| adresse (str): Adress or city for example | |
| Returns: | |
| Tuple(float, float, str): latitude, longitude & code INSEE | |
| """ | |
| if latitude is not None and longitude is not None: | |
| url = f"https://data.geopf.fr/geocodage/reverse?lon={longitude}&lat={latitude}&index=parcel" | |
| else: | |
| url = f"https://data.geopf.fr/geocodage/search?q={adresse}" | |
| response = requests.get(url) | |
| if response.status_code == 200: | |
| data = response.json()["features"][0] | |
| if "parcel" in url: | |
| properties = data["properties"] | |
| code_insee = properties["departmentcode"] + properties["municipalitycode"] | |
| else: | |
| coordinates = data["geometry"]["coordinates"] | |
| latitude, longitude = coordinates[1], coordinates[0] | |
| code_insee = data["properties"]["citycode"] | |
| return latitude, longitude, code_insee | |
| return None, None, None | |
| # code from https://huggingface.co/spaces/gaia-mistral/pest-livestock-information | |
| def on_init(lat, lon, address): | |
| map_html, lat, lon = show_map(lat, lon, address) | |
| return lat, lon, map_html | |
| def on_delete(lat, lon, address): | |
| address = lat = lon = None | |
| map_html, lat, lon = show_map(lat, lon, address) | |
| return lat, lon, address, map_html | |
| # code from https://huggingface.co/spaces/gaia-mistral/pest-livestock-information | |
| def show_map(lat, lon, address): | |
| if address: | |
| lat_tmp, lon_tmp, code_insee = get_geolocation(address, None, None) | |
| if lat_tmp or lon_tmp: | |
| lat, lon = lat_tmp, lon_tmp | |
| else: | |
| return "Adress not found. Please enter a valid address", "" | |
| lat = lat or 48.832408 | |
| lon = lon or 2.28619 | |
| if lat and lon: | |
| lat_tmp, lon_tmp, code_insee = get_geolocation(None, lat, lon) | |
| location_map = folium.Map(location=[lat, lon], zoom_start=14) | |
| folium.Marker([lat, lon]).add_to(location_map) | |
| map_html = location_map._repr_html_() | |
| return map_html, lat, lon | |
| def go_to_page_2(): | |
| return gr.Column(visible=False), gr.Column(visible=True) | |
| def launch_simulation(lat, lon, address, culture): | |
| current_situation_summary, agripv_summary = get_summaries() | |
| page1, page_2 = go_to_page_2() | |
| plot_1, plot_2, plot_3, plot_4, plot_5 = get_plots() | |
| current_plot_yields = plot_yield( | |
| latitude=lat, longitude=lon, culture=culture, shading_coef=0 | |
| ) | |
| shaded_plot_yields = plot_yield( | |
| latitude=lat, longitude=lon, culture=culture, shading_coef=0.2 | |
| ) | |
| return ( | |
| current_situation_summary, | |
| agripv_summary, | |
| plot_1, | |
| plot_2, | |
| plot_3, | |
| plot_4, | |
| plot_5, | |
| current_plot_yields, | |
| shaded_plot_yields, | |
| page1, | |
| page_2, | |
| gr.Button(visible=True), | |
| ) | |