2009/9/1 Vincent de Chateau-Thierry <v...@laposte.net>

>
> Je n'ai pas encore entré de POIs de ce type mais je serais plus pour
> positionner un POI (un node) systématiquement, que le restaurant soit
> l'unique vocation du bâtiment ou pas. J'ai l'impression que c'est ce que
> préconise le wiki [1], et dispatcher l'info entre points et lignes selon la
> connaissance des contours du batiment ne facilite pas l'utilisation par les
> applications des entités "restaurant" par la suite.
>

Si tu veux facilement extraire cette information sous Postgres avec un
schéma de type osm2pgsql, il suffit de faire les choses suivantes (a noter
que ce n'est pas la commande SQL exacte, car je n'ai pas de quoi la faire
tourner actuellement)

SELECT ST_AsText(ST_Centroid(nomdelacolonne)),
              name
FROM planet_osm_polygon
WHERE amenity='restaurant'
UNION
SELECT ST_AsText(nomdelacolonne),
              name
FROM planet_osm_point
WHERE amenity='restaurant';

C'est tout aussi simple que ça. Ça prend vraiment quelques instants de plus
a écrire. Ça tourne quasiment aussi rapidement puisque la table
planet_osm_polygon n'est pas forcement tres grosse. De plus si tu as un
index sur la colonne amenity (ou ce qui est vraiment, car je ne me rappelle
plus du schéma), tu auras une requête assez rapide.
ST_Centroid crée automatiquement un point du centre géométrique d'un
polygone, ou d'un line, ou encore un multi-line. Il faut noter que si par
malheur tu n'as pas de polygone de former, tu peux même créer la requête sur
planet_osm_line, et ça marchera tout aussi bien. De plus, avec la commande
UNION, tu as tout qui sort en un seul résultat.
De plus, maintenant que le renderer supporte correctement le rendu des
restaurants (avec a peu près la même requête), doubler le bâtiment d'un POI
est inefficace car une telle requête aura deux fois le même résultat avec
généralement deux coordonnées légèrement différentes.

Emilie Laffray
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr

Répondre à