[OSM-dev-fr] Postgis: selectionner les ways qui ne sont pas dans une relation
Gilles Bassière
gbassiere at gmail.com
Lun 5 Mar 21:25:58 GMT 2012
Le lundi 05 mars 2012 à 21:59 +0100, yvecai a écrit :
> Alors il me semble que j'arrive à trouver les way qui appartiennent à
> des relations:
> pistes-mapnik=# SELECT
> count(b.osm_id)
> FROM
> planet_osm_rels,
> planet_osm_line AS b
> WHERE
> b.osm_id = ANY(planet_osm_rels.parts)
> AND b."piste:type" IS NOT NULL
> AND b.osm_id>0;
> count
> -------
> 11098
> (1 row)
> Mais pas l'inverse:
> pistes-mapnik=# SELECT
> count(b.osm_id)
> FROM
> planet_osm_rels,
> planet_osm_line AS b
> WHERE
> b.osm_id = ANY(planet_osm_rels.parts)
> AND b."piste:type" IS NOT NULL
> AND b.osm_id>0;
> count
> ----------
> 75773488
> (1 row)
> C'est un peu beaucoup puisque je n'ai que 51'026 ways ... ??
>
> Yves
Bonsoir,
Tu dois pouvoir arriver à tes fins avec exists() :
SELECT count(*)
FROM planet_osm_line AS l
WHERE
NOT EXISTS (
SELECT *
FROM planet_osm_rels AS r
WHERE l.osm_id = ANY(r.parts)
)
AND l."piste:type" IS NOT NULL
AND l.osm_id > 0;
Dans le cas particulier des tableaux, il y a peut-être plus direct mais
je n'ai pas l'habitude de manipuler ces types de données.
Cordialement
--
Gilles Bassière - Web/GIS software engineer
http://gbassiere.free.fr/
Plus d'informations sur la liste de diffusion dev-fr