#1 Thu 04 April 2019 10:49
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 203
QGIS: Authentification avec Python sur API IGN
Bonjour à tous,
Tout d'abord je débute dans l'univers du développement python et pyQGIS.
Je cherche à créer un petit programme en python3 qui me renvoie l'altitude d'un point au format json via l'API REST de l'IGN.
Notre entreprise à une clé qui permet d'accéder à cette API, si je fais la requête suivante dans mon navigateur ça fonctionne très bien, mais je dois rentrer un login et un password :
Code:
https://wxs.ign.fr/MACLES/alti/rest/elevation.json?lon=3.22&lat=43.48&zonly=true
J'ai tenté de récupérer le résultat en python avec la ligne de code suivante :
Code:
contents = urllib.request.urlopen("https://MACLES/alti/rest/elevation.json?lon=3.22&lat=43.48&zonly=true").read()
Mais sans surprise ça ne fonctionne pas car il n'a pas le login et password dans ses paramètres.
J'ai cherché sur la toile mais je n'arrive pas à régler ce soucis de login, du moins à le retranscrire en python.
Pouvez-vous m'aiguiller svp ?
Merci
J.
Hors ligne
#2 Thu 04 April 2019 13:52
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 203
Re: QGIS: Authentification avec Python sur API IGN
Bon, j'ai réussi à m'identifier et a récupérer le résultat.
Par contre la réponse, censé être un json est en bytes :
Code:
b'{"elevations": [128.13]}
Une idée pour récupérer simplement le contenu du json ?
Merci !
J.
Hors ligne
#3 Thu 04 April 2019 14:50
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS: Authentification avec Python sur API IGN
Salut,
Pour passer du type bytes au type string utiliser la fonction decode(). Ensuite pour parser le json en dictionnaire python on utilise la fonction loads (pour load string) du module json.
Code:
import json data = json.loads(contents.decode())
Hors ligne
#4 Tue 09 April 2019 09:12
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 203
Re: QGIS: Authentification avec Python sur API IGN
Merci dominique.lys,
Je suis passé par une autre méthode que json.loads(), je n'avais pas vue ce message ... mais ça aurait peut-être été plus facile de passer cette fonction.
J'ai bien utilisé decode, ce qui me sort donc un string du type 'b'{"elevations": [128.13]}'
Puis via une boucle for et une expression régulière trouvée sur internet, j'isole les chiffres de la chaîne de caractère dans une liste :
Code:
result=[float(s) for s in re.findall(r'-?\d+\.?\d*', page)]
J'avance petit pas par petit pas ....
J.
Hors ligne
#5 Wed 19 May 2021 17:37
- jmbdeblois
- Juste Inscrit !
- Date d'inscription: 19 May 2021
- Messages: 1
Re: QGIS: Authentification avec Python sur API IGN
Bonjour
J'aimerais savoir comment tu as fait pour résoudre le problème de l'identifiant et du mot de passe pour interroger l'API ?
Merci
Hors ligne