Hackpads are smart collaborative documents. .

Christian Quest

4 days ago
Unfiled. Edited by Christian Quest 4 days ago
Mastodon par son côté décentralisé permet de sortir cette logique pilotée par le marché et surtout permet une reprise de contrôle direct, car tout le monde peut librement monter son instance.
 
30 days ago
Unfiled. Edited by Christian Quest 30 days ago
Christian Q Géonym : des adresses là où il n'y a pas d'adresses ?
Communiquer la position d'un lieu se fait en général par une adresse,  mais en l'absence d'adresse on ne peut que recourir en général qu'à des  coordonnées géographiques difficiles à mémoriser et trop variables dans  leurs formats (dégrés, dégrés+minutes, dégrés+minutes+secondes, X/Y,  etc).
 
Afin de combler ces deux manques, une position géographique  peut être traduite en une série de caractères, mémorisable et facile à  communiquer pour une livraison, des secours ou autre (comme le  déploiement de la fibre).
 
Contrairement à d'autres solutions (what3words, locpin, loc8, etc), Géonym est LIBRE,  basé sur un algorithme sous licence LGPL (openspostcode) et ne  dépendant pas d'une API. Le calcul est simple et peut se faire  directement côté client.
 
Comment ça marche ?
 
Une  grille fixe est choisie pour une région donnée. Dans notre cas cette  grille correspond à la France métropolitaine et englobe la majeure  partie des eaux territoriales.
 
Elle est découpée en 25 zones de (5 x 5), elles mêmes découpées en 25 et ainsi de suite. Voir: http://www.geonym.fr/visu pour visualiser les zones et le fonctionnement (n'hésitez pas à zoomer).
 
A  chaque zone on fait correspondre un chiffre ou une consonne (pris dans  un alphabet prédéfinit) qui forme ainsi une série de caractères. 
 
Plus cette série est longue, plus le  geonym correspond donc à une petite zone géographique (25 fois plus  petite en surface, donc des côtés 5  fois  plus petits).
 
  • P = zone de 234km x 234km
  • PP = zone de 47km x 47km inclue dans celle de 'P'
  • PP7 = zone de 9 x 9km inclue dans celle de 'PP'
  • ...
  • PP7K-RF4V = zone de 3m x 3m correspondant à l'entrée de la Tour Mirabeau à Paris
 
 
L'algorithme utilisé est identique à OpenPostcode (licence LGPL),  avec un alphabet différent limités aux chiffres de 0 à 9 et aux  consonnes non ambigües (0/O, 1/I, 2/Z, 4/A, 5/S, 6/G, 8/B). Un  caractère de contrôle peut s'ajouter en option pour vérifier que le  geonym est sans erreur.
 
Le  territoire couvert est ainsi découpé au final en milliards de carrés de  3m x 3m (plus de 60 milliards sur le territoire métropolitain).
 
Bien que le calcul soit relativement simple (il peut se faire sans problème sur le client et sans dépendance à une API externe), j'ai mis en place une petite API pour tester et apporter quelques services complémentaires. Bien entendu le code de cette API est lui aussi LIBRE, tout est sur github .
 
Bien entendu, pour permettre une réelle interropérabilité des Géonym, il est important que les paramètres de grille et d'alphabet soient fixés une fois pour toute !
 
API de conversion
Cette API permet de convertir un couple lat/lon ou X/Y (lambert) en geonym ainsi que l'inverse.
 
Elle permet aussi de trouver le geonym d'une adresse (via l'API de géocodage de la BAN ) et l'inverse, c'est à dire l'adresse la plus proche correspondant au geonym.
 
Conversion geonym > lat/lon:
 
Conversion lat/lon > geonym:
 
Conversion X/Y lambert > geonym:
 
Conversion adresse > geonym via géocodage intermédiaire:
 
La réponse est au format geojson et contient :
  • north/west/south/east : les limites du geonym (bbox)
  • lat/lon :  centre de la bbox du geonym
  • X/Y :  coordonnées Lambert 93 du centre de la bbox du geonym
  • params : paramètres de la grille (alphabet et limites géographiques)
  • geocode : réponse du géocodeur
  • reverse : l'adresse la plus proche trouvée  par géocodage inversé (pour les géonym d'au moins 6 caractères), sauf si  reverse=no passé en paramètre de la requête.
 
Exemple :
  • {
  •     "geocode": null,
  •     "geometry": {
  •         "coordinates": [
  •             2.2790806399999997,
  •             48.846832486400004
  •         ],
  •         "type": "Point"
  •     },
  •     "params": {
  •         "alpha": "456783NPR92MXTC1LWVD0KJHF",
  •         "max_lat": 51.45,
  •         "max_lon": 9.8,
  •         "min_lat": 40.91,
  •         "min_lon": -5.45
  •     },
  •     "properties": {
  •         "east": 2.2791001599999996,
  •         "geonym": "PP7KRF4R",
  •         "lat": 48.846832486400004,
  •         "lon": 2.2790806399999997,
  •         "north": 48.846845977600005,
  •         "south": 48.8468189952,
  •         "west": 2.2790611199999997,
  •         "x": 647094,
  •         "y": 6860995
  •     },
  •     "reverse": {
  •         "attribution": "BAN",
  •         "features": [
  •             {
  •                 "geometry": {
  •                     "coordinates": [
  •                         2.279092,
  •                         48.846828
  •                     ],
  •                     "type": "Point"
  •                 },
...
30 days ago
Unfiled. Edited by Christian Quest 30 days ago
 * le serveur en question est un Scaleway C1, à base de processeur ARM, avec 2Go de RAM et 50Go de stockage (l'équivallent d'un smartphone)... le tout pour moins de 3 euros par mois et il ne sert pas qu'à ça ! ;)
 
96 days ago
Unfiled. Edited by Christian Quest 96 days ago
Le bilan 2016 n'est pas meilleur que 2015. On a bien sûr une grosse vague au 1er janvier, mais des changements se sont poursuivis tout au long de l'année, à commencer le... 12 janvier 2016 !
 
Comme l'an passé, l'INSEE nous sortira un Code Officiel Géographique au mois de mars ou avril... et on ne peut pas leur jeter la pierre vu le manque d'organisation et l'anarchie qui règnent.
 
La source libre la plus complète reste aujourd'hui wikipédia, où ce travail de fourmis a été réalisé avec la collaboration de contributeurs OpenStreetMap. Du côté OpenStreetMap, les fusions de 2016 ont toutes été intégrées (et les découpages précédents conservés car ils restent utiles) et celles de 2017 sont désormais disponibles sur data.gouv.fr
 
108 days ago
Unfiled. Edited by Christian Quest 108 days ago
J'avais déjà géocodé ce fichier en préparation du hackathon opensirene qui s'était tenu le 15 novembre 2016, mais là c'est le grand jour, les données "du jour, à jour". Voici les principales étapes... (et les scripts sont sur github)
 
Une fois ce nettoyage fait (avec csvclean et csvcut de cskvit), on obtient un fichier CSV deux fois moins lourd (4.2Go au lieu de 8.5).
Pour paralléliser la suite des traitements, je le scinde aussi en un fichier par département (avec csvgrep) car vu la volumétrie il faut vraiment tirer au mieux parti de capacité de traitement parallèle des machines actuelles (dans mon cas une workstation bi-Xéon 6 coeurs, soit 24 coeurs en hyperthreading).
 
Si vous détectez des problèmes dans le géocodage, vous pouvez les signaler en ouvrant une "issue" sur github et n'hésitez pas aussi à proposer vos améliorations des scripts via des pull-requests et pourquoi pas des améliorations sur addok ou les données BAN, BANO, les POI... bref collaborons !
 
114 days ago
Unfiled. Edited by Christian Quest , Jean-Yvon 114 days ago
Christian Q Rendu OpenStreetMap "FR" v2017
Le fond de carte OpenStreetMap "à la française" maintenu par OpenStreetMap France vient d'être mis à jour dans sa livrée 2017. La dernière mise à jour datait de janvier 2016 !
Le style général est globalement conservé, c'est donc un ensemble de détails qui se sont accumulés au cours des derniers mois pour cette nouvelle mouture.
 
Voici les principales nouveautés résumées, le détail se trouve dans les commit de la feuille de style sur github.
Sur le plan technique, mapnik 2.x a aussi été remplacé par mapnik 3.0 qui apporte de nombreuses améliorations et la feuille de style principale est désormais au format YAML plus lisible et facile à maintenir que son équivalent JSON. Il a été produit à l'aide de Kosmtik. C'est toujours postgres/postgis avec une base au schéma osm2pgsql qui est utilisée pour générer les tuiles.
Mais assez pour la technique, passons au résultat !
 
Limites administratives
Elles sont plus lisibles, la précédente version superposait les différentes limites des niveaux administratifs, désormais c'est un unique pointillé différent qui est utilisé pour chaque niveau administratif ce qui est visuellement nettement plus propre et lisible.
Les noms bordant les limites sont aussi limités uniquement au découpage administratif, et incluent (pour la France) le type de limite (région, département, arrondissement).
 
Sur les côtes, ces limites sont supprimées jusqu'au zoom 11 pour plus de lisibilité.
 
 
Toponymes administratifs
Le placement des noms de villes, villages, hameaux, maisons isolées, fermes, lieux-dits a été grandement revu.
Aux premiers niveaux de zoom, il est mieux tenu compte de l'importance des villes, par la prise en compte de leur population.
 
Sur les zooms suivants, les noms des communes (noirs) sont complétés par les lieux-dits habités (gris), puis les autres lieux-dits.
 
Cours d'eau
Leur nom varie en taille en fonction de la classe de navigation (CEMT). Ils sont en gras lorsque le tronçon est navigable.
 
Zones côtières
Les zones découvertes par les marées sont désormais visibles avec différenciation des zones sableuses, rocheuses ou vaseuses (voir le tag tidal=* ). Les zones marécageuses ont aussi droit à un nouveau rendu.
 
 
Types de forêts
La trame change désormais avec le type d'arbres majoritaires (feuillus, résineux ou mixtes voir le tag leaf_type=* ).
 
Libellés de taille et couleur variable pour les grandes étendues
Ceci permet de mieux rendre visible les forêts, les parc, les zones d'activités (industrielles, commerciales, etc).
 
Icônes mises à jour
De nombreuses nouvelles icônes ont été reprises du style international (police, pompiers, fontaines, bornes de recharges électriques, différents commerces, etc).
 
Désormais visibles...
Les maisons de retraites, foyers, salles des fêtes, bâtiments publics sont désormais différenciés.
 
Désormais moins visibles...
Les commerces et autres objets en sous-sol (données "indoor") sont maintenant estompés en fonction des tag level et indoor.
 
Abréviations 
De nombreuses abréviations automatiques ont été ajoutées pour gagner de la place et permettre à la fois d'alléger le rendu et d'avoir plus d'informations utiles visibles.
C'est particulièrement visible sur les établissements scolaires.
 
Et plus...
  • les arrêts de bus proches sont désormais regroupés en un seul point.
  • les flèches de sens unique ne sont plus rendues sur les rond-points qu'à partir du zoom 17
et plein d'autres petits changements à découvrir !
 
N'hésitez pas si besoin à signaler des problèmes sur le projet github .
 
155 days ago
Unfiled. Edited by Christian Quest 155 days ago
Christian Q Quand la multitude bouche les trous...
Depuis le 15 Novembre 2016, le "Portail Officiel de la liste publique des organismes de formation" ne répond plus vraiment...
 
Revenez en mars 2017... et en attendant allez faire un tour sur data.gouv.fr
 
Premier problème
La liste en question n'était pas sur data.gouv.fr car le Ministère avait semble-t-il oublié de la publier.
Elle est désormais disponible sous forme d'un fichier Excel (format propriétaire donc et non conforme au RGI, le Référentiel Général d'Interropérabilité , que l'administration est tenue de respecter*... mais ne respecte pas souvent).
J'ai donc remis les données en CSV en ressource communautaire.
 
Deuxième problème
Un fichier Excel de 90000 lignes à la place d'un formulaire de recherche (par nom, numéro, etc).
 
Voilà à quoi il ressemblait (merci Internet Archive  ):
 
Comment dire ? Lamentable ? oui, je crois sincèrement
 
Une ébauche de solution
Donc pour les 5 mois à venir, voici une petite brique sous forme d'une API de recherche , il ne reste plus qu'à faire un peu d'interface, ce qui ne saurait tarder...
 
Cette API s'appuie sur le moteur de géocodage addok, les scripts de mise en forme des données sont sur github.
 
 * Il détermine notamment les répertoires de données, les normes et les standards qui doivent être utilisés par les autorités administratives. (Ordonnance à lire sur Légifrance )
 
 

Contact Support



Please check out our How-to Guide and FAQ first to see if your question is already answered! :)

If you have a feature request, please add it to this pad. Thanks!


Log in / Sign up