2025-09-18 16:53:04 +02:00

53 lines
1.4 KiB
Python

import requests
import geopandas as gpd
def get_orb_token():
login = 'cgeier'
pwd = 'adm1n*cEn38'
url = "https://donnees.biodiversite-auvergne-rhone-alpes.fr/api/auth/login"
return requests.post(
url,
json={"login": login, "password": pwd},
headers={'Content-Type': 'application/json'}
)
def get_orb_sp(tok, params: dict = None, geo=None):
import json
print("LOAD ORB DATA ...")
url = "https://donnees.biodiversite-auvergne-rhone-alpes.fr/api/synthese/for_web?"
if geo:
params += {
# "geoIntersection":{"type":"Feature","properties":{},"geometry":_json_geo['features'][0]['geometry']},
"geoIntersection": geo.to_crs(4326).unary_union.wkt,
"with_areas": False
}
res = requests.post(
url,
headers={'Content-Type': 'application/json'},
cookies=tok.cookies,
json=params)
_orb_geo = gpd.read_file(res.text)
orb_geo = (
_orb_geo[_orb_geo.geom_type == 'Point']
.reset_index(drop=True)
.to_crs(2154))
orb_geo['cd_nom'] = [
[cd['cd_nom'] for cd in json.loads(o)]
for o in orb_geo.observations
]
orb = orb_geo.explode('cd_nom')
# orb.drop(['observations','cd_nom'],axis=1,inplace=True)
return orb
if __name__ == "__main__":
tok = get_orb_token()
orb = get_orb_sp(tok, params={'regne': 'Animalia'})