[OSM-talk-fr] [Corine] Polygone geant (Attention SQL a faire peur)
Emilie Laffray
emilie.laffray at gmail.com
Lun 12 Oct 20:01:02 UTC 2009
Bonsoir,
j'ai regardé ce soir comment résoudre le problème des polygones de très
grandes tailles. Tout n'est pas résolu mais le plus gros du travail
théorique est fait. J'ai donc essayé la technique sur le polygone de la
Seine Et Marne. La technique est de faire une différence entre les polygones
existants et le polygone Corine. Maintenant je peux étendre la requête a
tous les polygones qui ont une certaine taille et qui n'ont pas été
importés.
Je me pose la question sur comment on procède maintenant. Je vais continuer
a améliorer la requête mais il faut voir.
Maintenant, pour ceux qui veulent voir la requête qui fait peur, voila! A
noter que pour faire fonctionner la requête sur tous les polygones, il
faudra faire un group by et d'autres jolies requêtes imbriquées
supplémentaires, mais la requête est faite globalement.
SELECT p.geomdump,
p.pathdump[1]
FROM ( SELECT (ST_Dump(ST_Difference(l.the_geom, mp.way))).geom AS geomdump,
(ST_Dump(ST_Difference(l.the_geom, mp.way))).path AS
pathdump
FROM ( SELECT ST_Multi(ST_Union(pop.way)) AS way
FROM planet_osm_polygon AS pop
INNER JOIN
landuse AS l
ON l."CLC:id" = 'FR-6749'
AND ST_Intersects(pop.way, l.the_geom)
WHERE pop.landuse IS NOT NULL
OR pop.aeroway IS NOT NULL
OR pop.natural IS NOT NULL
OR pop.wood IS NOT NULL
OR pop.waterway='riverbank'
) AS mp,
landuse AS l
WHERE l."CLC:id" = 'FR-6749'
) AS p
Dans le cas présent, cette requête génère 60 polygones au lieu d'un seul.
Cela veut dire que de découper un polygone peut conduire a la création de
beaucoup plus de polygones. Celui ci est constitue d'un très gros polygone,
et pleins de tous petits.
Émilie Laffray
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20091012/508bd46d/attachment.htm>
Plus d'informations sur la liste de diffusion Talk-fr