[Gfoss] Postgres e ... geometry contains non-closed rings

Pietro d'Orio pietro.dorio a r3-gis.com
Gio 5 Maggio 2011 13:20:22 CEST


Devi forzare la geometria in modo che rispetti i constraint di 
dimensioni  (2-3-4D) e tipo di geometria (POLYGON o MULTIPOLYGON). Solo 
in questo modo puoi correggere in maniera ottimale le geometrie e farle 
diventare valide all'interno della tabella... Ti riporto di nuovo la 
query che ti avevo scritto poco fa...


*update schema.tabella set the_geom = 
ST_Multi(ST_force_4d(ST_Buffer(the_geom,0)))*

La mia tabella è 4D di tipo MULTIPOLYGON. La query forza la geometria 
perchè rimanga Multipolygon e 4D, applica un buffer di 0 sulle 
geometrie. quelle corrotte vengono corrette.

Occhio che le geometrie potrebbero cambiare. Fai prima una select e 
guarda come cambierebbe la geometria.

La cosa funziona solo per i poligoni. Per le linee o vai in editing da 
un Desktop GIS e modifichi a mano la geometria oppure devi eliminarla


Pietro d'Orio

Il 05/05/2011 13:13, aperi2007 ha scritto:
> Il 05/05/2011 12:53, Luca Mandolesi ha scritto:
>> Ciao Andrea, e grazie dei preziosi consigli....
>>
>> La cosa strana è che al momento ho ripassato a mano tutte le tabelle 
>> e non vi sono più errori!!!
>>
>> ma il back up si pianta lo stesso....possibile???
>
> evidentemente lo e' ...
>
> conoscerlo in dettaglio rappresenterebbe un utilissimo
> "caso d'uso".
>
> Sospetto che in qualche maniera e involontariamente hai fatto entrare 
> nel DB una geometria che e' incompatibile con le strutture della tua 
> versione di DB.
> Ma anche cosi' i dubbi sono svariati ...
>
> Le tabelle di cui tenti il dump sono in public o in altro schema ?
>
> Per il futuro ti consiglio di non metterei mai le tue tabelle in 
> "public", ma piuttosto creati un altro schema e metti tutto li' 
> dentro, lasciando public solo alle tabelle che installa direttamente 
> postgis.
>
> Al riguardo questo blog di Ramsey e' veramente illuminante.
> http://blog.cleverelephant.ca/2010/09/postgis-back-up-restore.html
>
> In merito alla tua richiesta:
>
>> Come faccio a capire in quale tabella? C'è modo di fare un loop
>> dell'istruzione select * from miatabella where 
>> ST_IsValid(the_geom)=false su
>> tutte le tabelle del DB oppure devo rifarla su tutte una per una?
>
> Io ne ho gia' una che fa' questo genere di cose..
>
> Se ti fa comodo posso girartela.
>
>
> Andrea.
>
>
> _______________________________________________
> Iscriviti all'associazione GFOSS.it: 
> http://www.gfoss.it/drupal/iscrizione
> Gfoss a lists.gfoss.it
> 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
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20110505/ab04a847/attachment.html>


Maggiori informazioni sulla lista Gfoss