53 lines
1.4 KiB
Python
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'})
|