Pour construire une adresse.

Bonjour,

Je dois utiliser les données OSM pour faire construire un catalogue d’adresse. (numéro, nom d’adresse, et un code postal)
cette base doit au final répondre mon besoin d’auto complétion.

J’ai commencé à importer les données dans le Postgresql avec osm2pgsql.
le donné doit contenir au minimum un pays (La France entière).

Ceci m’a créé 4 tables, planet_osm_point, planet_osm_line, planet_osm_roads, planet_osm_polygon.
Est ce que j’aurais besoin de ces quatres tables?
Si oui, comment je pourrais faire la relation entre ces tables? ou il y en a pas besoin.

Les tags que j’ai utilisé sont “addr:housenumber”, “addr:interpolation”, “addr:street”, “addr:postcode”, “addr:country” .
Est ce que ces tags sont suffisantes?

J’ai fait quelque simple requête, et j’ai constaté que nombreuses noeud ne contiennent seulement le nom de la rue, et je ne peux pas avoir les informations sur le numéro et le code postal.
J’ai vu sur la page wiki de OSM, qu’il existe un méthode grâce à addr:interpolation de construire une rue complète, pour avoir tous les numéros, mais est-ce qu’il est possible de faire ça avec sql? plsql probablement?
Et comment on peut utiliser associatedStreet ? Comment on peut importer cette association?
Il y aurait-t-il des exemples concrets qui utilise un interpolation ou associatedstreet avec SGBD?

PS : J’ai trouvé Nominatim qui fait la même chose, et presque ce que je veux faire, mais je n’ai pas compris comment il a résolu ce problème de manque de numéro. Il a créé apparemment une nouvelle table, qui contient toutes les informations, (Est ce que je me trompe?)

Avant d’approfondir, il faut signaler qu’ OSM ne contient pas beaucoup d’adresses, y compris en France. Donc, si tu ne trouves pas d’adresses dans une rue test, c’est que celles-ci n’y sont tout simplement pas (il faut regarder si les numéros de cette rue sont dans OSM avec un éditeur comme JOSM ou ID).
Si tu veux une base plus complète, il faut voir du côté de BANO. Christian t’en dira sans doute un peu plus ici.

Sinon, osm2pgsql est utilisé par défaut pour faire le rendu mapnik. Il y a donc de nombreuses données importées dans la base qui te seront inutiles puisqu’elles ne concernent pas les adresses. Pour nominatim, une version spéciale de osm2pgsql appelée gazetter, doit être utilisée pour le geocoding (nominatim le fait depuis un script php setup.php):
http://wiki.openstreetmap.org/wiki/Nominatim#Source_Code
http://wiki.openstreetmap.org/wiki/Nominatim/Installation#PostgreSQL

C’est un meilleur point de départ que l’osm2pqsql utilisé pour mapnik.

Bonjour

Plusieurs remarques :

  • Les adresses sont modélisées dans OSM suivants plusieurs schémas, une norme générale ne se dégageant pas vraiment. En France on a en gros 4 variantes : n° porté par un point ou par un chemin, et nom de rue porté par une relation regroupant les n°, ou porté par chaque n°.
  • osm2pgsql crée les tables suivant un schéma adapté au rendu, suivant des normes GIS (points, lignes, polygones), pas forcément au traitement des données OSM (points, chemins, relations). Je suis sûr (à 99% :wink:) que dans sa configuration standard osm2pgsql perd la notion de nom de rue porté par relation.
  • Le nb d’adresses présentes dans OSM est encore loin de ce que l’on a dans des bases privés. Dans certaines agglomérations/régions la couverture est beaucoup précise et complète que Google, mais ce reste aujourd’hui des exceptions

Ceci étant je ne peut que t’orienter vers BANO qui est porté par l’association OpenStreetMap FR, et qui est presque_mais_pas_tout_à_fait compatible OSM.

  • Beaucoup plus d’addresse que dans OSM.
  • Format de fichier très simple à exploiter.
  • cquest qui est sur ce forum répondra à toutes tes questions :slight_smile:

Bruno

BANO contient:

  • les adresses qu’on trouve dans OSM (un peu plus de 2 millions)
  • des adresses disponibles en opendata
  • des adresses collectées sur le cadastre.

Au final, il y a un peu plus de 15 millions d’adresses qu’on a “normalisé”, le tout disponible soit en CSV soit au format shapefile, département par département.

Les données sont là: http://bano.openstreetmap.fr/data et elles sont sous licence ODbL

Tout d’abord, merci pour votre réponse Pieren, BrunoC et cquest,

BANO semble une base sur la France seulement, si je ne trompe pas?

En effet, vu Nominatim a apparemment résolu le problème de manque d’information pour certaine case.

Par exemple, quand j’ai faire une requête dans la base sql, je cherche une rue qui s’appelle charlot, et pour toutes les rues de charlot qui se trouvent le 3ème arrondissement de Paris trouvé, les champs sur le pays, code postal, sont tous vide.
alors que si on cherche avec Nominatim, il peut nous le proposer.

C’est cette voie que je suis en train d’étudier, comment ils ont traité cette base, pour rendre les adresses plus complètes.

Oui, BANO c’est France only (et DOM).

Pour Nominatim, il fait un ENORME travail de traitement des données OSM. Sur une base monde cela prend plusieurs jours sur une machine correcte… et la base frôle les 1To si j’ai bonne mémoire.

Merci pour cette information :slight_smile:

Merci de relire ma réponse. Si tu utilises osm2pgsql standard pour remplir ta bdd, c’est normal. Celle-ci n’est pas destinée à la recherche d’adresse (geocoding). Par contre, nominatim utilise une version modifiée d’osm2pqsql (gazetter). C’est celle-là qu’il faut uilitser pour remplir la bdd dans le but de faire du geocoding.

Oui j’avais lu sur un article par rapport à cette version d’osm2pgsql.
Je vais me renseigner.

Merci encore.

Désolé, J’ai trouvé un exemple d’utilisation de osm2pgsql avec option gazetter
https://github.com/petewarden/osm2pgsql/tree/master/gazetteer

Mais, je ne sais pas si c’est à cause de version de mon postgresql, je n’arrive pas à bien utiliser gazetteer. (j’utilise la version 9.3)
Je suis bloqué dès le début au niveau de createlang, que mon sql ne peut pas reconnaître.

Je suis du coup obligé d’installer un pgsql 8.3?

Regarde la version actuelle de Nominatim. Je ne sais pas si osm2pgsql est toujours utilisé, il y a eu beaucoup d’évolutions.

Ca ne devrait pas poser de problème d’utiliser postgresql 9.3 à la place de la 8.3… en général la compatibilité ascendante est quelques chose à laquelle on fait très attention, c’est l’inverse qui peut poser des risques.

J’ai l’impression que ça pose quand même un petit souci à cause de version de PostgreSql.

https://github.com/petewarden/osm2pgsql/tree/master/gazetteer
PostgreSQL Version

Please be aware that various problems have been found running Nominatim
on PostgreSQL 8.4. It is currently recomended to use PostgreSQL 8.3
although there are some reports that version 9.0 might have resolved
the issues.


Je vais continuer à découvrir ce Gazetteer

la commande createLang est obsolète depuis postgres 9.1
Soit réinstalle une plus vieille version de postgres, soit remplace createLang par CREATE EXTENSION:
http://www.postgresql.org/docs/9.1/static/app-createlang.html

Ce fork sur github est ancien (last commit en 2011)… toujours remonter au projet initial !

http://wiki.openstreetmap.org/wiki/Nominatim#Source_Code indique:

https://github.com/twain47/Nominatim
et
https://github.com/openstreetmap/osm2pgsql

C’est comme les howto ou tutos… on trouve de tout, plus ou moins frais…

Je suis en train d’utiliser gazetteer, pour extraire des données,
Pour l’instant, il y n’a pas d’information utile dans les données, il me nécessite encore une étape de traitement,
Et j’espère que ça va marche.

Merci tout le monde.