[OSM-dev-fr] selection noeud a l'interieur d'un surface
Frédéric Rodrigo
fred.rodrigo at gmail.com
Mar 23 Aou 09:20:12 BST 2011
Le 23 août 2011 09:09, Nicolas Dumoulin
<nicolas_openstreetmap.org at dumoulin63.net> a écrit :
> Le Lundi 22 Août 2011 20:08:48 didier2020 at free.fr, vous avez écrit :
>> pour une utilisation locale,
>> je voudrais savoir si un way est
>> + une route en raze campagne
>> + en zone urbaine
>> + les deux
>>
>> j'ai un extract de route (highway=primary & primary_link) et de way
>> (landuse=residential)
>>
>> maintenant je ne sais pas comment proceder
>> script, base de données ? les deux me sont pour l'instant inconnus...
>
> Je veux principalement deux solutions :
> - la plus évidente (à mon sens) est d'importer tes données dans une base
> postgis, tu auras alors tous les outils pour faire des requêtes sur la
> topologie de tes données. Il existe des outils tout faits pour importer des
> données OSM dans la base.
Cette solution reste la plus simple.
Il te faut monter un base de données postgres avec postgis pour
pouvoir l'utiliser avec osmosis. (Une autre solution est d'utiliser
osm2pgsql).
http://wiki.openstreetmap.org/wiki/Osmosis/PostGIS_Setup
Une fois que tes données sont dans la base tu vas pouvoir faire des
requêtes sur la topologie.
Il te faut utiliser ST_Contains et ST_Intersects
http://www.postgis.org/docs/ST_Contains.html
http://www.postgis.org/docs/ST_Intersects.html
Les requêtes à exécuter vont être du genre de :
SELECT
highway.id
FROM
ways AS landuse
JOIN ways AS highway ON
landuse.geom && highway.geom AND
ST_Contains(landuse.geom, highway.geom)
WHERE
landuse.tags?'landuse' AND
highway.tags?'highway'
;
Mais tu risques d'avoir des problèmes avec les multopygones qu'il
faudrait d'abord reconstituer. Par contre tu n'auras pas ce problème
avec osm2pgsql.
Fred
Plus d'informations sur la liste de diffusion dev-fr