Le 05/03/2012 22:25, Gilles Bassière a écrit :
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
Entretemps, j'était arrivé à çà:

   SELECT
        count(*)
   FROM
        planet_osm_line AS c
   WHERE
        c.osm_id not in (
        SELECT b.osm_id
        FROM
            planet_osm_rels,
            planet_osm_line AS b
        WHERE
            b.osm_id = ANY(planet_osm_rels.parts))
        AND c."piste:type" IS NOT NULL
        AND c.osm_id>0;

qui marche bien aussi, merci!
Yves

_______________________________________________
dev-fr mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/dev-fr

Répondre à