code postal et commune

Bonjour,
Je souhaiterais notamment utiliser OpenStreetMap:

a) pour obtenir la liste des communes associée à un code postal:

par exemple:
http://nominatim.openstreetmap.org/search?postalcode=85430&country=France&format=json&addressdetails=1

malheureusement je n’obtiens qu’une seule commune Aubigny (et il y a aussi Nieul-le-Dolent, la Boissière-des-Landes, les Clouzeaux)

b) et aussi obtenir au moins un code postal pour une commune:

par exemple:
http://nominatim.openstreetmap.org/search?town=Nieul-le-Dolent&country=France&format=json&addressdetails=1

et je n’obtiens pas de résultat.

Je souhaiterais savoir si ces résultats peuvent être obtenus à l’aide d’OpenStreetMap,
Laurent

C’est vrai, nominatim semble avoir un problème pour ce type de requête. Il ne retourne qu’une seule commune. C’est peut-etre aussi le but de ce genre d’application pour du geocoding… Je pense que le mieux pour toi serait d’utiliser un autre outil d’extraction des données d’OSM comme l’overpass-API:

http://wiki.openstreetmap.org/wiki/Overpass_API

Il existe aussi une interface graphique, overpass-turbo:
http://overpass-turbo.eu/

On peut alors requêter dans la base d’OSM (ou plutôt une de ses réplications pour être plus précis) sans avoir la base localement ni passer par ses propres requêtes sql/postgresql.
On peut utiliser une requête de ce genre:

<!--
This query looks for nodes, ways and relations 
with the given key/value combination.
Choose your region and hit the Run button above!
-->
{{key=addr:postcode}}
{{value=85430}}
<osm-script output="json">
  <union>
    <query type="node">
      <has-kv k="{{key}}" v="{{value}}"/>
    </query>
    <query type="relation">
      <has-kv k="{{key}}" v="{{value}}"/>
    </query>
  </union>
  <print mode="body"/>
  <recurse type="down"/>
  <print mode="skeleton"/>
</osm-script>

Les formats de sortie sont configubles (ici, json). Il faudrait aussi ajouter des critères supplémentaires pour ne sélectionner que des communes (type boundary=administrative + admin_level=8). Pour se limiter à la France, il faut soit ajouter une bbox sur une base globale, soit utiliser un overpass-api qui n’utiliser qu’une bdd limitée à la France (voir http://wiki.openstreetmap.org/wiki/FR:Servers/api.openstreetmap.fr)

Nominatim n’est pas vraiment conçu pour cela et gère de plus relativement mal les codes postaux.

Interroger la base de données OSM directement via overpass comme le suggère Pieren est beaucoup plus pertinent.

Ou ne sélectionner que les relations ayant un tag ref:INSEE.

Merci beaucoup de votre aide et en particulier des exemples de requêtes
Laurent