File size: 1,923 Bytes
cb23aba 86d2f2e 3ae828c baec762 3ae828c baec762 3ae828c baec762 3ae828c cb23aba 8f0e835 3ae828c baec762 8f0e835 cb23aba baec762 cb23aba 3ae828c baec762 |
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 |
from geopy.geocoders import Nominatim
import gradio as gr
from validation_submission.utils_individual import add_data_to_individual
from geolocalisation.class_geolocalisation import Geolocalisation
def create_geolocalisation_object(lat, long, name):
try:
geolocalisation = Geolocalisation(
longitude={"type": "longitude", "value": long},
latitude={"type": "latitude", "value": lat},
name=name
)
except:
print("Pydantic Error for Geolocalisation")
return geolocalisation
def save_geolocalisation_to_json(geolocalisation, individual):
geo_dict = geolocalisation.dict()
individual = add_data_to_individual("geolocalisation", geo_dict, individual)
return individual
def get_location(address, individual):
try:
# calling the Nominatim tool
loc = Nominatim(user_agent="GetLoc")
# entering the location name
getLoc = loc.geocode(address)
# latitude and longitude
lat = getLoc.latitude
lon = getLoc.longitude
# Save values
geolocalisation = create_geolocalisation_object(lat, lon, address)
individual = save_geolocalisation_to_json(geolocalisation, individual)
#display location processing
value = "Latitude = " + str(lat) + "\n" + "Longitude = " + str(lon)
identified_location= gr.Textbox(visible=True, interactive=False,
label="Identified GPS Location",
value=value)
return identified_location, individual
except:
error = "Please try another less precise location."
identified_location= gr.Textbox(visible=True, interactive=False,
label="Identified GPS Location",
value=error)
return identified_location, individual |