Giter Site home page Giter Site logo

api-geo's Introduction

API Géo

Informations et documentation

Consulter la fiche sur api.gouv.fr

Pré-requis

  • Node.js >= 10
  • yarn (optionnel, peut être remplacé par npm)
  • wget
  • bash

Installation

yarn # (--prod)
yarn build

Démarrage de l'API

yarn start

Lancer les tests

yarn test

Docker

docker-compose up

Utilisations de l'API géo

L'API géo est notamment utilisée par Etalab et beta.gouv.fr. Les usages cités ici ne sont pas exhaustifs. Si vous utiliser l'API Géo, n'hésitez pas à le mentionner ici.

Licence

MIT

api-geo's People

Contributors

jdesboeufs avatar thomasg77 avatar tmerlier avatar nicolasleger avatar agarrone avatar

Stargazers

Yanis Benekaa avatar  avatar Antonin Rouxel avatar  avatar 'lo avatar  avatar Mario Restuccia avatar Guillaume Attard avatar  avatar WiseM avatar Fabien Antoine avatar Benjamin Levesque avatar Verlhac Gaëtan avatar eric regnier avatar romjerome avatar FrancelWebdev avatar Erdong avatar jeanfei avatar  avatar  avatar  avatar kevded avatar Thomas Kientz avatar Emmanuel Pelletier avatar Sylvain Dumont avatar Yuan Yu avatar Petr Bouchal avatar Hugo Lafitte avatar Dimitri DO BAIRRO avatar Arnaud Didry avatar Vancoillie avatar Jennifer Proust avatar Eonm avatar Jonathan Montane avatar Jeremy Jumeau avatar Julien Langlois avatar Kévin DUBUC avatar Rémy Auricoste avatar Félix Jullien avatar gabssnake avatar  avatar  avatar Maxence Collard-Lagalle avatar  avatar Régis Gaidot avatar Antoine PHILIPPE avatar Nicolas Lassalle avatar

Watchers

 avatar James Cloos avatar Thibaud Dauce avatar Pierre Pezziardi avatar Geoffrey Aldebert avatar  avatar Robert Rivière avatar  avatar  avatar

api-geo's Issues

Contours des départements (et autres objets géos retournés)

En utilisant l'API, je parviens bien à récupérer les contours des communes mais pas pour les départements. Cela implique donc une agrégation côté client.

De façon plus générale, dans un souci de cohérence d'usage, je suggère que les objets renvoyés aient une structure pseudo-générique :

  • nom,
  • code,
  • code objets contenants (code région et code dpt pour une commune, code région pour un dpt)
  • codes objets contenus (codes communes dans un dpt par exemple)
  • surface
  • population (d'ailleurs la date de référence serait souhaitable)
  • centroïdes
  • contours (question subsidiaire : le nombre de décimales est-il constant dans les coordonnées renvoyées ?)

Pagination des résultats

Bonjour,

Je voudrais vous proposer d'implémenter une pagination des résultats qui permettrait en autre pour ceux qui n'ont pas besoin de tout charger de récupérer uniquement ce dont ils ont besoin (ex: uniquement les 10 premiers). En général, les API implémentent cela à l'aide de 2 paramètres offset/limit.
Comme ça, en cas de besoin, il est toujours possible de parcourir les autres résultats.

Merci de votre aide!

Ajout des départements

Départements

  • Ajout du département de rattachement pour chaque commune #27
  • Possibilité de restreindre la recherche de commune à un département #28
  • Route /departements? => Rechercher des départements #29
  • Route /departements/{code} => Obtenir les informations d'un département #30
  • Route /departements/{code}/communes => Lister les communes d'une région #31

Ajout des régions

Régions

  • Ajout de la région de rattachement pour chaque commune #35
  • Possibilité de restreindre la recherche de commune à une région #36
  • Route /regions? => Rechercher des régions #38
  • Route /regions/{code} => Obtenir les informations d'une région #39
  • Route /regions/{code}/departements => Lister les départements d'une région #40

Amélioration du script d'intégration

Actuellement l'intégration est une série de 3 promesses, intervenant sur des variables qu'elles partagent via une fermeture.
Pour faciliter l'ajout ultérieur de nouvelles données, il faut rendre cela plus modulaire.

Après réflexion je pars sur un modèle de pipeline, qui reproduit les étages actuels + une étape d'initialisation :

  • Initialisation
  • Chargement des communes
  • Chargement des codes postaux
  • Sérialisation

Chaque étage du pipeline partage cette interface :

function step(ctx, next) {
  // Mon code ici
  next(); // Avec une erreur, éventuellement
}

Le contexte ctx sert à passer des variables communes ou des helpers, tels que ctx.debug().

Communes à proximité

Bonjour,

Je voudrais proposer une fonctionnalité qui permet de rechercher des communes à proximité d'un point et pour un rayon de recherche donné. Les résultats seraient triés par rapport à la distance au centre des communes.

Ajout des départements

Départements

  • Ajout du département de rattachement pour chaque commune
  • Possibilité de restreindre la recherche de commune à un département
  • Route /departements? => Rechercher des départements
  • Route /departements/{code} => Obtenir les informations d'un département
  • Route /departements/{code}/communes => Lister les communes d'une région

Codes postaux 75000, 69000, 13000

Une demande d'un utilisateur : pourrait-on gérer ces codes postaux pour les trois métropoles à arrondissements ?

Il s'agit vraisemblablement de codes postaux factices fréquemment utilisés.

Peut-être pourrions-nous attendre quelques semaines et examiner les logs d'utilisation de l'API pour avoir une idée ?

API Geo - Recherche full text sur les codes

Bonjour,

J'ai une proposition d'amélioration pour votre web service.
L'auto-complétion du code postal comme celui utilisé par la commune.
Exemple : saisir 38 fourni toutes les communes avec le code postal 38.
Saisir 3808 fourni toutes les communes avec comme code postal 3808

Cordialement,
Jordan

Supporter les codes insee des communes fusionnees

Je vois le ticket #74, mais il serait pratique d'ajouter la notion des communes fusionnees dans l'API et ainsi amener une notion de millesime. https://api.gouv.fr/api/api-geo.html ne precise pas le millesime actuel, et un appel a la racine de l'API pourrait fournir l'info (ou fournir carrément une api versionnée par millésime ?)

Ex 63255 et 63266 ont fusionné en 2014 pour devenir 63255, https://geo.api.gouv.fr/communes/63266 me renvoie un 404.

Idealement, l'API devrait ou rediriger vers 63255 (avec un code 302 ?), et les infos renvoyees pour 63255 devrait faire apparaitre la notion de filiation avec 63266, ou renvoyer les anciennes infos pour 63266 avec un champ specifiant qu'elle a ete fusionnee avec 63255.

@jdesboeufs on en parle ?

Recherche multi-critères

Actuellement on peut recherche des communes :

  • Par code INSEE (retourne une commune ou zéro)
  • Par latitude et longitude (retourne une commune ou zéro)
  • Par code postal
  • Par nom

Pour les deux derniers critères il semble intéressant de pouvoir les cumuler, par exemple rechercher par nom et code postal, pour normaliser une base de donnée.
L'intérêt sera beaucoup plus fort lorsque davantage de critères seront disponibles (département, région, zone géographique arbitraire).

Mots contractés

Une demande utilisateur pour supporter les mots contractés usuels dans l'auto-complétion.

Dans le cas des communes, nous avons par exemple :

  • st => saint
  • ste => sainte

Suppression warning pipeline Lunr

Function is not registered with pipeline. This may cause problems when serialising the index.

Message intempestif, lors de l'exécution, lors des tests.

Erreur lors de jointures "departement "et "region"

E-mail reçu sur la boîte de support :

Bonjour,

Depuis maintenant plus d'une semaine, certaines API de la GéoAPI ne fonctionnent plus.
Sont concernés toutes les requêtes associées aux communes et aux départements.

J'ai peut-être des erreurs de mon côté, mais lorsque je fais l'appel à l'API des départements par exemple, j'obtiens l'erreur suivante:

TypeError: req.db.regions.queryByCode is not a function<br> 
&nbsp; &nbsp;at formatOne (/var/www/communes/lib/helpers.js:44:35)<br> 
&nbsp; &nbsp;at res.send.dbDepartements.search.map.departement (/var/www/communes/server.js:81:27)<br> 
&nbsp; &nbsp;at Array.map (native)<br> &nbsp; &nbsp;at /var/www/communes/server.js:81:8<br> 
&nbsp; &nbsp;at Layer.handle [as handle_request] (/var/www/communes/node_modules/express/lib/router/layer.js:95:5)<br> 
&nbsp; &nbsp;at next (/var/www/communes/node_modules/express/lib/router/route.js:131:13)<br> &nbsp; &nbsp;at /var/www/communes/lib/helpers.js:13:5<br> 
&nbsp; &nbsp;at Layer.handle [as handle_request] (/var/www/communes/node_modules/express/lib/router/layer.js:95:5)<br> 
&nbsp; &nbsp;at next (/var/www/communes/node_modules/express/lib/router/route.js:131:13)<br> 
&nbsp; &nbsp;at Route.dispatch (/var/www/communes/node_modules/express/lib/router/route.js:112:3)

Y-a-t-il quelque chose à faire de mon côté pour régler ce souci ?

Bordures

Bonjour,

afin de pouvoir exploiter un outil de visualisation plus simplement (sur le périmètre du territoire), j'éprouve quelques difficultés à sourcer les bonnes informations à propos des bordures pour procéder à l'intégration dans Gephi d'un fond de carte permettant une visualisation sur un périmètre "France" / "Région" / "Commune"
Le plugin est ici,
https://marketplace.gephi.org/plugin/maps-of-countries/
Les possibilités d'intégrations sont expliquées ici
https://exploreyourdata.wordpress.com/2013/09/24/new-gephi-plugin-add-background-maps-to-your-networks/
Quelques personnes de transformap ont déjà aidées pour mettre à jour et maintenir le script https://github.com/seinecle/Plugins-for-Gephi/issues
La dernière étape pour sourcer les bonnes informations pour les bordures reste bloquante.
L'API serait elle en mesure de fournir ces informations ?

Merci

Ajout des régions

Régions

  • Ajout de la région de rattachement pour chaque commune
  • Possibilité de restreindre la recherche de commune à une région
  • Route /regions? => Rechercher des régions
  • Route /regions/{code} => Obtenir les informations d'une région
  • Route /regions/{code}/departements => Lister les départements d'une région

Tests unitaire

Test à mettre en place

  • Intégration des données #17
  • Indexation et requêtes #18
  • API

Auto-complétion pour 1, 2 et 3 caractères

La recherche de communes par nom est trop lourde lorsqu'il y a moins de 3 caractères.
Hélas 205 communes ont 1, 2 ou 3 caractères, et elles doivent pouvoir être trouvées.

Proposition :

  • 1, 2 ou 3 caractères, on recherche par matching exact sur une forme dégradée du nom de la commune
  • 3 caractères : recherche ngram actuelle

API Geo - Traitement par lot (batch)

S'inspirer de l'API CSV de la BAN pour proposer une fonction similaire, appliquée aux communes.

Fonctionnalités intéressantes :

  • Retourner la commune englobant un Point
  • Pour un code INSEE et un Point, retourner true si le Point est bien situé dans la commune
  • Retourner la commune correspondante à partir des données fournies (nom, code postal, département)
  • Retourner un jeu de données géographiques à la commune à partir de listes de codes INSEE
  • Validation

Reboot Integration

L'utilisation de variable globales et l'inter-dépendances des functions rend l'intégration difficilement testable.

API Geo - Recherche par polygone

Bonjour,

pourrait-on interroger l'API avec un geojson et que celle-ci nous retourne la liste des communes, + EPCI, + départements, + régions ?

Merci

Docker

  • Ajout d'un Dockerfile
  • Publier sur Docker Hub Superseeded by #21
  • Documenter l'utilisation

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.