Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connexion à l'API Hub'EAU #107

Open
babastienne opened this issue Feb 15, 2023 · 12 comments
Open

Connexion à l'API Hub'EAU #107

babastienne opened this issue Feb 15, 2023 · 12 comments
Assignees
Labels
✨ Feature New feature or request

Comments

@babastienne
Copy link
Member

babastienne commented Feb 15, 2023

Besoin exprimé :

Il est souhaité pouvoir :

Réponse :

Les développements effectués sur GeoRivière incluront un ajout d’interconnexions entre l’API Hub’EAU et les modules métiers de l’application.
De la même manière que le travail déjà effectué par GeoRivière lors de la connexion avec l’API Qualité, un lien sera effectué entre le module Stations et l’API HydroBiologie, afin de remonter les stations existantes sur un territoire, ainsi que les données complémentaires associées : indices et taxons.
Concernant l’API Qualité, une mise à niveau pour se conformer à la dernière version de la spécification sera effectuée. Dans le cadre de cette montée de version, GeoRivière récupérera et associera aux stations existantes les fréquences de relevés et de transmission.
Les modifications sur l’interconnexion seront l’occasion d’ajouter trois champs supplémentaires destinés à accueillir des URLs (soit auto-générées, soit à saisir manuellement) :

  • Un lien renvoyant vers la plateforme NAIADES. Cette URL sera générée automatiquement en utilisant un formatage prédéfini. Il pourra être envisagé de rendre ce formatage paramétrable via une customisation de GeoRivière afin de palier à d’éventuelles évolutions à venir sans avoir besoin de recourir à une modification du code source de l’application. En amont de l’ajout de ce champ, il conviendra de s’assurer que le formatage est bien identique pour l’ensemble des trois API HydroBiologie, Qualité et Température.
  • Pour l’API Hydrométrie uniquement une URL sera formatée afin de renvoyer vers l’Hydroportail. De la même manière que pour le champ précédent, on pourra envisager de rendre ce formatage paramétrable.
  • Enfin un dernier champ de lien URL sera ajouté pour les stations d’hydrométrie uniquement, et laissé libre à la saisie afin de permettre un complément par le territoire. Il pourrait être envisagé de rendre ce champ libre disponible pour l’ensemble des stations (pas seulement d’hydrométrie) afin de couvrir un besoin futur similaire de territoires sur les autres type de données ? Cette question pourra être évoquée lors du démarrage du projet.
@thomasmagninfeysot
Copy link

Ok pour moi par contre

  • sur l'URL créée pour Opérations URI renvoyant vers hydroeaufrance, l'URL ne fonctionne pas avec le code de la station. En regardant, il faut prendre uniquement les 7 premiers chiffres du code station, possible ?
  • Toujours sur les stations hydro, petite faute d'orthographe : Annex URI > Annexe URI
  • Compléter la doc pour les imports des stations hydrobio
  • Lors de l'import des stations hydrobio, j'ai ça qui remonte (idem sur les station qualite)
    Import 353 stations from API https://hubeau.eaufrance.fr/api/v1/hydrobio/stations_hydrobio?format=json&size=1000&code_departement=39
    Traceback (most recent call last):
    File "/opt/georiviere-admin/manage.py", line 22, in
    main()
    File "/opt/georiviere-admin/manage.py", line 18, in main
    execute_from_command_line(sys.argv)
    File "/opt/venv/lib/python3.9/site-packages/django/core/management/init.py", line 401, in execute_from_command_line
    utility.execute()
    File "/opt/venv/lib/python3.9/site-packages/django/core/management/init.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
    File "/opt/venv/lib/python3.9/site-packages/django/core/management/base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
    File "/opt/venv/lib/python3.9/site-packages/django/core/management/base.py", line 371, in execute
    output = self.handle(*args, **options)
    File "/opt/georiviere-admin/georiviere/observations/management/commands/init.py", line 58, in handle
    self.create_or_update_stations(results, verbosity, with_parameters)
    File "/opt/georiviere-admin/georiviere/observations/management/commands/import_hydrobiologie_stations.py", line 60, in create_or_update_stations
    response_firstpage_content = response_firstpage.json()
    File "/opt/venv/lib/python3.9/site-packages/requests/models.py", line 910, in json
    return complexjson.loads(self.text, **kwargs)
    File "/usr/lib/python3.9/json/init.py", line 346, in loads
    return _default_decoder.decode(s)
    File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "/usr/lib/python3.9/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

@LePetitTim
Copy link
Contributor

sur l'URL créée pour Opérations URI renvoyant vers hydroeaufrance, l'URL ne fonctionne pas avec le code de la station. En regardant, il faut prendre uniquement les 7 premiers chiffres du code station, possible ?

Je ne suis pas sure de comprendre la demande.
Sinous utilisons que 7 chiffres ce n'est plus le bon code de station

@thomasmagninfeysot
Copy link

Pour la station V241402001, dans l'URL, c'est le code site et pas le code station qu'il faut reprendre pour arriver sur sa fiche sur Hydro.eaufrance : https://www.hydro.eaufrance.fr/sitehydro/V2414020/series
image

@babastienne
Copy link
Member Author

Corrigé mais à priori l'URL n'est pas fonctionnelle

@thomasmagninfeysot
Copy link

@babastienne tu as une URL en exemple pour que je regarde ?

@babastienne
Copy link
Member Author

@thomaspnrhj ton commentaire avait été mal interprété par @LePetitTim, la PR #213 corrige le problème.

submarcos added a commit that referenced this issue Sep 14, 2023
…stations

Fix generated Operation URI for Hydrometric Stations (#107)
@thomasmagninfeysot
Copy link

Testé sur la 1.2.4 : toujours le problème d'URL

@babastienne
Copy link
Member Author

@thomaspnrhj peux-tu préciser le problème ? Sur quel objet observe tu le problème ? Peux-tu mettre une capture d'écran / un contexte ?

@thomasmagninfeysot
Copy link

Même exemple que en haut :
image

@thomasmagninfeysot
Copy link

C'est observé sur toutes les stations hydro, il faut générer l'url avec le code site et pas le code station (ou sinon ne pas prendre les deux derniers chiffres du code station) : https://www.hydro.eaufrance.fr/sitehydro/V2414020/series

@babastienne
Copy link
Member Author

De mon côté testé à l'instant, tout semble ok :

Station temperature

image

Station hydrometrie

image

Station qualité

image

Station hydrobio

image

Tout semble ok donc. Est-ce que tu as bien mis à jour les stations avec la commande d'import ?

@thomasmagninfeysot
Copy link

thomasmagninfeysot commented Oct 13, 2023

Merci de ton retour rapide, effectivement j'avais pas pensé à faire le réimport... C'est tout bon merci!
Par contre comme mentionné ci-dessus, j'ai toujours cette alerte qui pour l'import des stations qualite :

Import 617 stations from API https://hubeau.eaufrance.fr/api/v2/qualite_rivieres/station_pc?format=json&size=1000&code_departement=01
Traceback (most recent call last):
File "/opt/georiviere-admin/manage.py", line 22, in
main()
File "/opt/georiviere-admin/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/opt/venv/lib/python3.9/site-packages/django/core/management/init.py", line 401, in execute_from_command_line
utility.execute()
File "/opt/venv/lib/python3.9/site-packages/django/core/management/init.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/opt/venv/lib/python3.9/site-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/opt/venv/lib/python3.9/site-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/opt/georiviere-admin/georiviere/observations/management/commands/init.py", line 61, in handle
self.create_or_update_stations(results, verbosity, with_parameters)
File "/opt/georiviere-admin/georiviere/observations/management/commands/import_pcquality_stations.py", line 110, in create_or_update_stations
parameter_tracking, parameter_tracking_created = ParameterTracking.objects.get_or_create(
File "/opt/venv/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/opt/venv/lib/python3.9/site-packages/django/db/models/query.py", line 573, in get_or_create
return self.get(**kwargs), False
File "/opt/venv/lib/python3.9/site-packages/django/db/models/query.py", line 433, in get
raise self.model.MultipleObjectsReturned(
georiviere.observations.models.MultipleObjectsReturned: get() returned more than one ParameterTracking -- it returned 3!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feature New feature or request
Development

No branches or pull requests

3 participants