[OSM-dev-fr] Probléme Postgis pgsnapshot
Frédéric Rodrigo
fred.rodrigo at gmail.com
Jeu 20 Fév 21:04:59 UTC 2014
Je ne suis pas sûr sans tester. Mais tu cherches a avoir un résultat de
requête récursive sans écrire un requête récursive.
Selon ta méthode pour avoir l'aide d'une relation tu as besoin de l'aire
des sous relations, mais il fait d'abord les avoir calculé.
Essaye aussi d'écrire tes requêtes avec des jointures plutôt des sous,
sous requêtes imbriquées.
Frédéric.
Le 20/02/2014 21:35, yvecai a écrit :
> Salut,
>
> Il y a quelque chose qui m'échappe. J'ai un peu modifié le schéma
> pgsnapshot livré avec Osmosis pour gérer des géométries au niveau des
> relations (ST_linemerge pour les type=routes, st_convexhull pour les
> type=sites).
> Maintenant, j'ai une fonction pour mettre à jour ces géométries, du genre:
>
> UPDATE relations
> SET geom=(
> SELECT st_convexHull(st_collect(the_geom))
> FROM
> (
> SELECT relations.geom as the_geom from relations
> WHERE relations.id in (
> SELECT member_id FROM relation_members
> WHERE relation_id = relations.id
> )
> UNION
> SELECT ways.linestring as the_geom from ways
> WHERE ways.id in (
> SELECT member_id FROM relation_members
> WHERE relation_id = relations.id
> )
> ) as foo
> )
> WHERE tags->'site' = 'piste'; --all relations at import
>
>
> Qui permet de faire un polygone sur l'emprise d'une relation 'site'
> prenant en compte les géométrie de ses membres (ways + relations routes).
> Après avoir fait tourné,voici mon polygone:
>
> select st_area(geom)*1000 from relations where id=2764548;
> --~ ?column?
> --~ -------------------
> --~ 0.351100713594952
> --~ (1 row)
>
>
> Mais c'est la surface des ways, pas celle des ways + des routes:
> Surface des ways :
>
> SELECT ST_Area(ST_ConvexHull(st_collect(ways.linestring)))*1000 FROM
> ways
> WHERE ways.id in (
> SELECT member_id FROM relation_members WHERE relation_id =
> 2764548
> );
> --~ ?column?
> --~ -------------------
> --~ 0.351100713594952
> --~ (1 row)
>
>
> Surfaces des way + des routes :
>
> SELECT st_area(st_convexHull(st_collect(the_geom)))*1000
> FROM
> (
> SELECT ways.linestring as the_geom from ways
> WHERE ways.id in (
> SELECT member_id FROM relation_members WHERE
> relation_id = 2764548
> )
> UNION
> SELECT relations.geom as the_geom from relations
> WHERE relations.id in (
> SELECT member_id FROM relation_members WHERE
> relation_id = 2764548
> )
> ) as foo;
>
> --~ ?column?
> --~ ------------------
> --~ 4.32829936752993
>
> Je ne comprend pas pourquoi mon UPDATE ne prend pas en compte la
> géométrie des relations ????
>
>
>
> _______________________________________________
> dev-fr mailing list
> dev-fr at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/dev-fr
>
Plus d'informations sur la liste de diffusion dev-fr