Projet

Général

Profil

Development #50935

Ajout d'un connecteur Photon

Ajouté par Nicolas Roche il y a environ 3 ans. Mis à jour il y a environ 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
07 février 2021
Echéance:
18 février 2021
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Connecteur qui implémente les endpoints de géocodage et géodage inversé (search et reverse, comme dans le connecteur base adresse).
Documentation : https://github.com/komoot/photon#search-api


Fichiers

Révisions associées

Révision 2d649b22 (diff)
Ajouté par Nicolas Roche il y a environ 3 ans

photon: new geographic information connector (#50935)

Historique

#1

Mis à jour par Nicolas Roche il y a environ 3 ans

J'ai quelques questions que je n'avais pas vu venir quand j'ai chiffré le connecteur :

  • Faut-il gérer la compatibilité avec wcs : ie que wcs puisse adresser photon via le connecteur de la même manière qu'il appelle (directement) la base adresse (je pense aux paramètres suivants qui me semblent être utilisés par wcs) ?
    • absence des paramètres "zoom" et "bounded"
    • le paramètre "viewbox" devient "bbox"
    • le paramètre "accept-language" devient "lang"
  • Faut-il retourner le même contenu que le connecteur base_adresse (parce que j'ai deux différences, une sur la forme et l'autre sur le contenu) ?
    • les résultats renvoyés ne retournent pas de champ "citycode" (le code insee)
    • le champ "city" contient aussi le numéro de l'arrondissement, ex: "Lyon 3ème Arrondissement"
  • un truc qui n'a rien à voir : pourquoi dans le endpoint "reverse" (que j'ai copié de la base adresse) on ne renvoie pas la première adresse retournée ?
            for feature in result_response.json().get('features'):
                if not feature['geometry']['type'] == 'Point':
                    continue  # skip unknown
                result = self.format_address_data(feature)
            return result
    
#2

Mis à jour par Nicolas Roche il y a environ 3 ans

Pour le premier point, je réalise que si l'on explicite les variables 'geocoding_service_url' et 'reverse_geocoding_service_url', on évite le code ( wcs/quomon/publisher.py ) qui utilise les attributs zoom , viewbox et bounded .
Mais on en utilise de toute façon d'autres attributs qui ne sont pasnon plus équivalent sur les 2 API : addressdetails et accept-language.
Et, on peut aussi vouloir tirer profit de la "bounding box" fournie par photon.

(zoom et addressdetails sont introduits en même temps que la géoloc : #5855, viewbox et bounded sont introduits par #46410)

Donc dans le connecteur j'ai traduit les paramètres qui ont leur équivalent côté photon, et ignoré les autres ( kwargs non utilisé).
  • zoom => ignoré
  • viewbox => bbox
  • bounded => ignoré
  • format => format (idem)
  • accept-language => lang
  • addressdetails => ignoré
Pour le second point, je dirais d'après mes tests que ça ne pose pas de problème :
1) géoloc inverse : clic sur une carte donne champs rue, ville...
  • dans un formulaire ajouter un champ carte
  • puis un champs texte préremplis avec "géolocalisation" + "rue" ou "ville" ou...
2) géoloc directe : dans un WF on qualifie lat/lon d'une demande (d'après un template, l'EXIF d'une photo...)
  • dans un formulaire activer la géolocalisation (pour avoir 2 champs lat et lon que l'on va remplir)
  • dans son workflow ajouter une action de géolocalisation

Mais bon, je rate peut-être d'autres cas d'usage.

#5

Mis à jour par Frédéric Péters il y a environ 3 ans

        description=_('Saerch API'),

Plutôt comme base adresse, faire description=_('Geocoding (Nominatim API)'), qu'on comprenne bien que c'est la même chose.

raimbow

rainbow; mais tant qu'à chercher n'importe quoi autant mettre quelque chose qui soit compris directement par la personne qui lira les logs (ex: passerelle status check).

super(Photon, self).hourly()

On peut zapper la partie Photon, self, juste écrire super().hourly().

Est-ce que ça a été testé avec l'instance déployée par GL ?

#6

Mis à jour par Nicolas Roche il y a environ 3 ans

(remarques prises en compte)

Est-ce que ça a été testé avec l'instance déployée par GL ?

oui, et via wcs :

Passerelle :

WCS :

$ cat /var/lib/wcs/wcs.dev.publik.love/site-options.cfg -n 20
[options]
...
nominatim_url = https://passerelle.dev.publik.love/photon/test
map-bounds-top-left = 45.753;4.830
map-bounds-bottom-right = 45.754;4.831

#7

Mis à jour par Frédéric Péters il y a environ 3 ans

Le truc moche de création d'un identifiant stable c'est parce que la BAN ne garantissait pas d'identifiant stable, ici on pourrait visiblement utiliser osm_id. Idéalement il y aurait aussi une API permettant de retrouver un élément via l'id, il n'y a pas ça ? (d'un rapide coup d'œil à leur doc et github je n'ai rien vu, ne perdons pas de temps ici). (mais utilise l'osm_id quand même, si jamais un jour ils ajoutent ou on trouve l'API).

#8

Mis à jour par Nicolas Roche il y a environ 3 ans

ici on pourrait visiblement utiliser osm_id

Merci, je suis complètement passé à côté.

#9

Mis à jour par Frédéric Péters il y a environ 3 ans

  • Statut changé de Solution proposée à Solution validée
#10

Mis à jour par Nicolas Roche il y a environ 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 2d649b2247e3b0529e601953b22619536551236b
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Sun Feb 7 21:34:04 2021 +0100

    photon: new geographic information connector (#50935)
#11

Mis à jour par Frédéric Péters il y a environ 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF