banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Thu 04 April 2019 10:49

jlavaure
Participant assidu
Date d'inscription: 20 Apr 2013
Messages: 202

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 smile

J.

Hors ligne

 

#2 Thu 04 April 2019 13:52

jlavaure
Participant assidu
Date d'inscription: 20 Apr 2013
Messages: 202

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: 202

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

 

Pied de page des forums

Powered by FluxBB