Spaces:
Paused
Paused
import requests | |
import re | |
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 | |
def get_risques(code_insee): | |
"""Get list of risks from a 'code INSEE' | |
Args: | |
code_insee (str): Code INSEE | |
Returns: | |
List[str]: List of risks | |
""" | |
requete = f"https://georisques.gouv.fr/api/v1/gaspar/risques?code_insee={code_insee}" | |
response = requests.get(requete) | |
if response.status_code == 200: | |
risques = eval(response.content.decode().replace("null", "-1")) | |
if risques["results"] > 0: | |
risques = risques["data"] | |
risques = [r["libelle_risque_long"] | |
for r in risques[0]["risques_detail"]] | |
else: | |
risques = [] | |
else: | |
risques = None | |
return risques | |
if __name__ == "__main__": | |
lon, lat, code_insee = get_geolocation( | |
"6 allée de chartres 91370 Verrieres le Buisson", None, None) | |
print(get_risques(code_insee)) | |