[OSM-talk-fr] [Corine] Polygone geant (Attention SQL a faire peur)
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 ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] [Corine] Polygone geant (Attention SQL a faire peur)
Le lundi 12 octobre 2009 à 21:01 +0100, Emilie Laffray a écrit : > Bonsoir, 'soir > j'ai regardé ce soir comment résoudre le problème des polygones de > très grandes tailles. > > 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 > Je ne comprends absolument rien a cette requête oO Mais je te fais confiance ;o) Librement, -- Christophe Merlet (RedFox) signature.asc Description: Ceci est une partie de message numériquement signée ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] [Corine] Polygone geant (Attention SQL a faire peur)
Etienne Chové wrote: > Est ce que le gros polygone ne fait pas presque autant de taille que > l'original ? > > Le but est de générer 60 fichiers et des les envoyer un par un ? C'est > donc du multipolygone où un a un outer (le gros) et plein de inner (les > petits) ? Je crois que j'ai pas tout compris :-( > Le gros polygone est quasiment aussi gros que le principal. Toutefois, les autres polygones sont indépendants du principal du fait du coupure du polygone principal. Dans certains cas, la surface est négligeable, dans d'autres cas, elle ne l'est pas. Les inners ne rentrent pas en ligne de compte en fait, car ils font partie d'un polygone. La technique utilisée en fait ne résoud qu'un problème: importer un polygone qui est énorme et qui n'a plus les overlaps puisque je les ai enlevés. Il est possible de découper un gros polygone en plusieurs bouts mais ça implique d'écrire un petit programme en Python pour découper ça a posteriori, ce qui devrait être assez facile a faire. Après, on peut en théorie tout remettre dans le même fichier OSM, mais on ne change rien a la taille. Ou alors, on fait le travail en amont a partir de la base Corine, et on crée des entrées supplémentaires (centroid au final plus simple a trouver). Enfin, voila ce ne sont que des idées. Mais techniquement tout est possible. Emilie Laffray signature.asc Description: OpenPGP digital signature ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] [Corine] Polygone geant (Attention SQL a faire peur)
Je suis le débat avec attention. Quelle est donc la méthodologie à suivre? Car je peut vous dire que des poly landluse=farm de très grande taille j'en ai trouvé quelques uns en cherchant un peut. 2009/10/13 Emilie Laffray > Etienne Chové wrote: > > Est ce que le gros polygone ne fait pas presque autant de taille que > > l'original ? > > > > Le but est de générer 60 fichiers et des les envoyer un par un ? C'est > > donc du multipolygone où un a un outer (le gros) et plein de inner (les > > petits) ? Je crois que j'ai pas tout compris :-( > > > Le gros polygone est quasiment aussi gros que le principal. Toutefois, > les autres polygones sont indépendants du principal du fait du coupure > du polygone principal. Dans certains cas, la surface est négligeable, > dans d'autres cas, elle ne l'est pas. > Les inners ne rentrent pas en ligne de compte en fait, car ils font > partie d'un polygone. La technique utilisée en fait ne résoud qu'un > problème: importer un polygone qui est énorme et qui n'a plus les > overlaps puisque je les ai enlevés. > Il est possible de découper un gros polygone en plusieurs bouts mais ça > implique d'écrire un petit programme en Python pour découper ça a > posteriori, ce qui devrait être assez facile a faire. Après, on peut en > théorie tout remettre dans le même fichier OSM, mais on ne change rien a > la taille. Ou alors, on fait le travail en amont a partir de la base > Corine, et on crée des entrées supplémentaires (centroid au final plus > simple a trouver). > Enfin, voila ce ne sont que des idées. Mais techniquement tout est > possible. > > Emilie Laffray > > > > ___ > Talk-fr mailing list > Talk-fr@openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-fr > > -- Mon weblog - http://www.tenshu.fr/ Je soutiens le Logiciel Libre, j'adhère à l'APRIL ! ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr
Re: [OSM-talk-fr] [Corine] Polygone geant (Attention SQL a faire peur)
Emilie Laffray a écrit : > Celui ci est constitue d'un très gros polygone, et pleins de tous petits. Est ce que le gros polygone ne fait pas presque autant de taille que l'original ? Le but est de générer 60 fichiers et des les envoyer un par un ? C'est donc du multipolygone où un a un outer (le gros) et plein de inner (les petits) ? Je crois que j'ai pas tout compris :-( -- Etienne ___ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr