banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !

10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …

Faire un don 

Retrouver nos membres bienfaiteurs

#1 Tue 29 March 2022 19:40

didine44
Juste Inscrit !
Date d'inscription: 6 Dec 2020
Messages: 4

coller géométriquement des multipolygones via postgis

Bonjour,

je vous écrit concernant une problématique liée au traitement de multi-polygones.


j'ai une table dans laquelle plusieurs multi-polygones ont été constatés
j'ai crée un code en sql qui me permet de séparer les multi-polygones en plusieurs géométries (dans une table intermédiaire);

with ts as (
select
gid,
st_buffer (geom, 0) as geom
from
source.ppi_test
where
st_numgeometries(geom) > 1
), ts1 as (
select
gid,
ST_GeometryN(geom, generate_series(1, ST_NumGeometries(geom))) AS geom
from
ts
group by
gid, geom
)


en clair si on a un mulltipolygone (de 4 polygones) ayant l'identifiant 200 et bien on aura 4 polygones distincts ayant l'identifiant 200.

jusque là il n'y a pas de problème.
la problématique est surtout après dans la suite du code où je souhaite couvrir en un seul polygone tous les cas de multipolygones.

select
distinct
st_Concavehull(
st_collect  (array(
select
geom
from
ts1
)
),0.0
)


ici on aura un polygone qui viendra recouvrir l'ensemble des cas de multi polygones; alors que moi je souhaite de la même manière que dans la requête intermédiaire (en utilisant le générate séries)  couvrir distinctement les cas de multipolygones.

exemple :
un nouveau polygone viendrait recouvrir en un polygone unique l'étendue des multipolygones ayant l'identifiant 200, 300 etc..
sans crée une géométrie unique pour les cas 200, 300 etc...

je peux le faire pour un seul en mettant la clause wher gid in '200' mais si je met where gid in '200', '300' ça m'enveloppera les deux cas.

merci d'avance

Hors ligne

 

Pied de page des forums

Powered by FluxBB