Postgres/Postgis: trasformare un layer Polygo in MultiPolygon

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Postgres/Postgis: trasformare un layer Polygo in MultiPolygon

mando
Ciao a tutti,

ho un layer in postgis di tipo Polygon, che ha una serie di geometrie in realtà appartenenti alla medesima entità, ma che sono disegnate separatamente in quanto il livello è di tipo Polygon.

E' possibile trasformare da dentro postgres il layer da Polygon a Multipolygon? Successivamente andrei a prendere una ad una quelle geometrie che afferiscono ad una medesima entità, e le mergerei con lo strumento di Qgis "Unisci le geometrie selezionate".

Ciao e grazie

Luca

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
502 iscritti all'11.2.2011
Reply | Threaded
Open this post in threaded view
|

Re: Postgres/Postgis: trasformare un layer Polygo in MultiPolygon

Luca Sigfrido Percich

Ciao Luca,

puoi usare direttamente gli operatori di aggregazione delle geometrie
insieme ad un group by sui campi che identificano l'oggetto a cui i
singoli poligoni appartengono per esempio:

select cod_provincia, st_multi(st_union(geom)) from comuni group by
cod_provincia.

La chiamata a ST_Multi() garantisce di ottenere sempre un multipolygon,
infatti se tutti i poligoni che combini sono adiacenti dovresti ottenere
un polygon.

Se invece non hai un codice che identifichi i gruppi di poligoni e vuoi
farlo a mano su dei multipoligoni, allora devi prima fare

update miolayer set geom = st_multi(geom)

Probabilmente devi disabilitare/modificare i constraint creati da
addgeometrycolumn(), tipicamente su un layer poligonale avrai

CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) =
'MULTIPOLYGON'::text

in caso contrario l'update a MultiPolygon fallirebbe.

Sig

Il giorno mer, 01/06/2011 alle 10.00 +0200, Luca Mandolesi ha scritto:

> Ciao a tutti,
>
>
> ho un layer in postgis di tipo Polygon, che ha una serie di geometrie
> in realtà appartenenti alla medesima entità, ma che sono disegnate
> separatamente in quanto il livello è di tipo Polygon.
>
>
> E' possibile trasformare da dentro postgres il layer da Polygon a
> Multipolygon? Successivamente andrei a prendere una ad una quelle
> geometrie che afferiscono ad una medesima entità, e le mergerei con lo
> strumento di Qgis "Unisci le geometrie selezionate".


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
502 iscritti all'11.2.2011
Reply | Threaded
Open this post in threaded view
|

Re: Postgres/Postgis: trasformare un layer Polygo in MultiPolygon

mando
Grazie Luca

2011/6/1 Luca Sigfrido Percich <[hidden email]>

Ciao Luca,

puoi usare direttamente gli operatori di aggregazione delle geometrie
insieme ad un group by sui campi che identificano l'oggetto a cui i
singoli poligoni appartengono per esempio:

select cod_provincia, st_multi(st_union(geom)) from comuni group by
cod_provincia.

La chiamata a ST_Multi() garantisce di ottenere sempre un multipolygon,
infatti se tutti i poligoni che combini sono adiacenti dovresti ottenere
un polygon.

Diciamo che le regole le ho, ma gli errori umani di inserimento dati ancora di più, quindi devo ricontrollare per forza 450 entità ripetute una ad una (per la cronaco parlo di US archeologiche, strati che dovrebbero essere di tipo polygon, ma che per ragioni pratiche alla fine sono disegnate come Multipolygon).

Se invece non hai un codice che identifichi i gruppi di poligoni e vuoi
farlo a mano su dei multipoligoni, allora devi prima fare

update miolayer set geom = st_multi(geom)

Probabilmente devi disabilitare/modificare i constraint creati da
addgeometrycolumn(), tipicamente su un layer poligonale avrai

CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) =
'MULTIPOLYGON'::text

in caso contrario l'update a MultiPolygon fallirebbe.

Sig

Perfetto, grazie mille!


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
502 iscritti all'11.2.2011