OpenStreetMap

Géocodage d'établissements scolaires

Posted by Cdrik_69 on 8 October 2017 in French (Français)

Avant-propos

Cette méthode a été utilisée, à défaut de mieux. Au préalable, j'ai consulté la liste nationale des contributeurs OpenStreetMap. Peut-être existe-t-il une solution bien plus simple...? Merci de me dire cela en commentaires.

Problématique

Faire une géolocalisation de stagiaires venant à une formation sur Lyon afin de faciliter le co-voiturage. Le stagiaire étant associé à son établissement.

Difficultés

  • Nous disposons uniquement du nom de l'établissement et de sa commune.
  • Nous ne disposons pas des coordonnées GPS des établissements, ce qui est indispensable avec uMap

La solution simple aurait été de faire une carte GoogleMaps...

Mise en place

Je dispose d'un fichier .csv de la forme : nom_etablissement,commune,Nom,Prenom,Courriel

Site permettant de récupérer les coordonnées GPS

Je trouve un site internet qui dispose d'une API et qui permet, grâce à une requête sur le nom et la commune, de récupérer un fichier JSON. Au départ, quelques requêtes ne donnaient aucun résultat, pourtant sur OpenStreetMap, c'était ok. Après contact avec l'administrateur du site, toutes mes recherches aboutissent normalement !

Exemple de requête

Ma requête sur le lycée Récamier à Lyon : http://photon.komoot.de/api/?q=lyc%C3%A9e%20juliette%20r%C3%A9camier%20lyon%202&lang=fr

Le fichier JSON en retour

Le fichier JSON en retour comporte les coordonnées GPS : {"features":[{"geometry":{"coordinates":[4.830498683911657,45.7495013],"type":"Point"},"type":"Feature","properties":{"osm_id":258128918,"osm_type":"W","extent":[4.8298975,45.7499687,4.8311069,45.7491155],"country":"France","osm_key":"amenity","city":"Lyon","street":"Cours Verdun Recamier","osm_value":"school","postcode":"69002","name":"Lycée Juliette Récamier","state":"Auvergne-Rhône-Alpes"}}],"type":"FeatureCollection"}

Avec cela, je vais pouvoir donc extraire la Latitude et la Longitude de chaque établissement.

Script Python

Ayant un peu de connaissances en Python3, je crée un script, pas bô mais fonctionnel, mes excuses..., qui me permet de générer un nouveau fichier .csv avec les coordonnées de chaque établissement. Je ne touche pas au fichier initial.

Avec ce nouveau fichier, il ne me reste plus qu'à générer une nouvelle carte uMap en important ces données.

Extension

Cette même méthode m'a permis de créer une carte de tous les établissements de l'académie de Lyon.

Si vous connaissez une méthode plus simple, n'hésitez pas à me la communiquer en commentaires :)

Comment from Verdy_p on 8 October 2017 at 19:51

La conversion en CSV n'est pas nécessaire pour uMap qui peut lire les GeoJSON directement avec les propriétés incluses dans chaque "Feature" importé dans la collection "FeatureCollection".

Dans uMap tu trouves ces propriétés directement dans les champs "avancés", sous lors forme "type":"valeur". Cependant "extent":[x1,y1,x2,y2] n'est pas utilisable directement. Et il te permet d'utiliser ces champs de propriété aussi dans la mise en forme de la description. Tu peux aussi utiliser un ou plusieurs des champs pour le tri automatique. Le JSON peut être téléchargé directement depuis son producteur avec l'URL de sa requête sans avoir à l'importer dans uMap. uMap sait aussi utiliser la "geometry" indiquée dans un des types supportés : "Node", "LineString" pour une courbe continue / ou "MultiLineString" pour les courbes discontinues ou maillées, "Polygon" pour une surface délimitée par un contour externe (éventuellement avec des trous délimités aussi par des contour fermés), ou "MultiPolygon" pour plusieurs surfaces disjointes (chacune avec ou sans trous).

Hide this comment

Comment from schontosaure on 8 October 2017 at 20:45

Bonsoir,

pour les informations sur les établissements scolaire UAI, coordonnées .... https://www.data.gouv.fr/fr/datasets/etablissements-denseignement-secondaire-2/ mise à jour en septembre 201

Hide this comment

Comment from PierZen on 10 October 2017 at 20:59

Voici une requête Overpass qui permet d'interroger OSM simplement. Umap permet également des requêtes dynamiques vers Overpass. http://overpass-turbo.eu/s/sg7

Hide this comment

Comment from Verdy_p on 10 October 2017 at 23:42

Je sais très bien que UMap peut lire les requêtes Overpass, ce n'est pas la question. Ici je commentais le fait que "extent":[x1,y1,x2,y2] ne correspond à rien dans UMap, c'est une bounding box, pas une géométrie représentable. UMap détermine lui même les bounding box pour déterminer un niveau de zoom par défaut. Mais il ne sait pas quoi faire d'une propriété qui ne serait pas une "string" en valeur ou une valeur numérique : y mettre un tableau (JSON) ne donne rien, la propriété est ignorée et OSM ne permet pas de coder des tableaux de données en valeurs, et si on y met du JSON, ce sera une "string" (limitée à 255 caractères) et ce n'est pas une valeur d'attribut OSM standard. Note que par Overpass on n'obtiendra que les attributs des objets codés dans les "properties" d'un objet "Feature" geoJSON. Overpass cependant peut aussi retourner des données en format OSM-JSON qui n'est PAS le geoJSON (format très différent notamment pour les relations inexistantes en geoJSON, et la représentation des surfaces, geoJSON ne décomposant pas les ways et surfaces pour leur associer les noeuds membres et n'identifiant pas les noeuds fusionnés, les géométries GeoJSON sont totalement autonomes et reliées à rien d'autre que le "Feature" qui inclue chaque géométrie)

Hide this comment

Leave a comment

Parsed with Markdown

  • Headings

    # Heading
    ## Subheading

  • Unordered list

    * First item
    * Second item

  • Ordered list

    1. First item
    2. Second item

  • Link

    [Text](URL)
  • Image

    ![Alt text](URL)

Login to leave a comment