Postgres e ... geometry contains non-closed rings

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

Postgres e ... geometry contains non-closed rings

mando
Salve a tutti,
ho finito di passare tabella per tabella le geometrie contenute nel mio DB che presentavano problemi (tipo i terribili "fioccehtti") in postgres ma evidentemente qualcosa mi è sfuggito perchè quando faccio il back up mi becco un bel:

pg_dump: Error message from server: ERROR:  geometry contains non-closed rings

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?


ciao e grazzzzie


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 e ... geometry contains non-closed rings

Sandro Santilli
On Thu, May 05, 2011 at 11:20:27AM +0200, Luca Mandolesi wrote:
> Salve a tutti,
> ho finito di passare tabella per tabella le geometrie contenute nel mio DB
> che presentavano problemi (tipo i terribili "fioccehtti") in postgres ma
> evidentemente qualcosa mi è sfuggito perchè quando faccio il back up mi
> becco un bel:
>
> pg_dump: Error message from server: ERROR:  geometry contains non-closed
> rings

Bruttissimo problema. Un dump che si rifiuta di fare il dump non va.
Probabilmente si tratta del bug che ci ha fatto rilasciare la 1.4.2
e la 1.5.1. Mi confermi che hai una versione precedente ?
Se si, aggiorna all'ultima micro-release (make install) e riprova.

> 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?

Non credo sia possibile in SQL, puoi pero' fare uno script plpgsql.

--strk;

  ()   Free GIS & Flash consultant/developer
  /\   http://strk.keybit.net/services.html
_______________________________________________
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 e ... geometry contains non-closed rings

mando
nuuuuuuuuuuu...ma cosa mi dici maiiiii!!!! Infatti ho appena ripassato una per una le 20 tabelle e non ci sono più errori e ricevo lo stesso l'errore......panicccc

Sono su postgres 8.4 e credo di avere su postgis 1.4.4 (?). Ho postgres su un server linux e di solito non ci metto le mani direttamente, ma chiamo un tecnico per aggiornamenti e altro prima di fare danni....

ora provo....il back di una singola tabella me la farà, visto che ho anche tabelle di soli dati....

2011/5/5 Sandro Santilli <[hidden email]>
On Thu, May 05, 2011 at 11:20:27AM +0200, Luca Mandolesi wrote:
> Salve a tutti,
> ho finito di passare tabella per tabella le geometrie contenute nel mio DB
> che presentavano problemi (tipo i terribili "fioccehtti") in postgres ma
> evidentemente qualcosa mi è sfuggito perchè quando faccio il back up mi
> becco un bel:
>
> pg_dump: Error message from server: ERROR:  geometry contains non-closed
> rings

Bruttissimo problema. Un dump che si rifiuta di fare il dump non va.
Probabilmente si tratta del bug che ci ha fatto rilasciare la 1.4.2
e la 1.5.1. Mi confermi che hai una versione precedente ?
Se si, aggiorna all'ultima micro-release (make install) e riprova.

> 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?

Non credo sia possibile in SQL, puoi pero' fare uno script plpgsql.

--strk;

 ()   Free GIS & Flash consultant/developer
 /\   http://strk.keybit.net/services.html


_______________________________________________
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 e ... geometry contains non-closed rings

mando
azzz....non mi permette nemmeno di fare il backup della singola tabella ... e ora....provo ad esportare come shape da qgis

_______________________________________________
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 e ... geometry contains non-closed rings

Andrea Peri
In reply to this post by mando
>azzz....non mi permette nemmeno di fare il backup della singola tabella ...
>e ora....provo ad esportare come shape da qgis

Mi permetto di darti qualche suggerimento,
ma prima alcuni avvertimenti:

Non conosco il tuo DB, ma fai attenzione che esportando su shapefile potresti avere delle differenze intollerabili.

lo shapefile non consente campi piu' lunghi di 255 caratteri e tutto cio' in piu' viene troncato.
La somma dei contenuti di un record su un dbf non deve superare i 2Kbyte.

I nomi dei campi vengono troncati a 10 caratteri.

Inoltre, ci sono delle differenze nelle strutturazione delle geometrie ammissibili.

In merito a come fare il recupero delle geometrie io opererei cosi':

io piuttosto che qgis, per esportare da postgis vista la situazione di emergenza,
scaricherei l'ultimissima versione stabile di gdal (1.8) e userei quella direttamente.

con la sintassi:

ogr2ogr.exe -f "ESRI Shapefile" tabella.shp -progress PG:"dbname='nome_database' active_schema=schema_db schemas=schema_db,public host='localhost' port='5432' user='username' password='password' " -sql "select * from tabella where ST_IsValid(geom)=true"

In particolare fai attenzione alla stringa sql:

prima ti scarichi tutto cio' che e' valido usando come stringa sql:

"select * from tabella where ST_IsValid(geom)=true"

poi in altra cartella ti scarichi tutto quello che non e' valido, con questa altra sintassi

"select * from tabella where ST_IsValid(geom)=false"

cosi' , ammesso che te le scarichi su shapefile, hai le invalidita' da una parte e puoi lavorarle meglio...

auguri...

Andrea.




_______________________________________________
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 e ... geometry contains non-closed rings

mando
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???

_______________________________________________
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 e ... geometry contains non-closed rings

PietroR3
Puoi risolvere i problemi sulle tabelle con geometrie corrotte con questa query.

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

In questo caso applicata a poligoni 4d MULTIPOLYGON.

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

Dott. Pietro d'Orio
R3 GIS Srl - GmbH
Via Johann Kravogl-Str. 2
I-39012 Meran/Merano (BZ)
web: www.r3-gis.com
Email: [hidden email]
Tel. : +39 0473 494949
Fax : +39 0473 069902

ATTENZIONE! Le informazioni contenute nella presente e-mail e nei documenti eventualmente allegati sono confidenziali. La loro diffusione, distribuzione e/o riproduzione da parte di terzi, senza autorizzazione del mittente è vietata e può violare il D. Lgs. 196/2003. In caso di ricezione per errore, Vogliate immediatamente informare il mittente del messaggio e distruggere la e-mail.

ACHTUNG! Die in dieser Nachricht oder in den beigelegten Dokumenten beinhalteten Informationen sind streng vertraulich. Ihre Verbreitung und/oder ihre Wiedergabe durch Dritte ist ohne Erlaubnis des Absenders verboten und verstößt gegen das Legislativdekret 196/2003. Sollten Sie diese Mitteilung irrtümlicherweise erhalten haben, bitten wir Sie uns umgehend zu informieren und anschließend die Mitteilung zu vernichten.

WARNING! This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclousure or distribution of the material in this e-mail is strictly forbidden and could be against the law (D. Lgs. 196/2003)






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???
_______________________________________________ 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

_______________________________________________
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 e ... geometry contains non-closed rings

Andrea Peri
In reply to this post by mando
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
[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 e ... geometry contains non-closed rings

mando
Se me la giri mi fai un favorone....effettivamente ho tutte le geometrie in public.....mannaggg.....e tanta paura!!

2011/5/5 aperi2007 <[hidden email]>
Il <a href="tel:05%2F05%2F2011%2012" value="+390505201112" target="_blank">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
[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 e ... geometry contains non-closed rings

PietroR3
In reply to this post by Andrea Peri
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
[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

_______________________________________________
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 e ... geometry contains non-closed rings

mando
In reply to this post by PietroR3
Ciao Pietro,

ho fatto una prova sulla mia tabella pyunitastratigrafiche

è di tipo POLYGON....

select * from pyunitastratigrafiche where the_geom = ST_Multi(ST_force_4d(ST_Buffer(the_geom,0)))

e in pratica mi ritorna tutte le geometrie che vi sono all'interno.

Poi ho fatto un:

select * from pyunitastratigrafiche where ST_IsValid(the_geom)=false

e ho 0 records come risultato

Poi ho aperto il layer in Qgis e ho salvato come shapefile e ricevo:

1 degli stati del cursore perso.

SQL: CLOSE qgisf0

Result: 7 (ERROR: current transaction is aborted, commands ignored until end of transaction block

).

A questo punto ricarico lo shape che ne deriva e all'interno ho la metà dei record...vedo che la lista dei miei gid si interrompre alla 4145....

nel layer postgis cerco la 4146 per vedere se c'è errore ma non ha problemi....


2011/5/5 Pietro d'Orio <[hidden email]>
Puoi risolvere i problemi sulle tabelle con geometrie corrotte con questa query.

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

In questo caso applicata a poligoni 4d MULTIPOLYGON.

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

Dott. Pietro d'Orio
R3 GIS Srl - GmbH
Via Johann Kravogl-Str. 2
I-39012 Meran/Merano (BZ)
web: www.r3-gis.com
Email: [hidden email]
Tel. : <a href="tel:%2B39%200473%20494949" value="+390473494949" target="_blank">+39 0473 494949
Fax : <a href="tel:%2B39%200473%20069902" value="+390473069902" target="_blank">+39 0473 069902

ATTENZIONE! Le informazioni contenute nella presente e-mail e nei documenti eventualmente allegati sono confidenziali. La loro diffusione, distribuzione e/o riproduzione da parte di terzi, senza autorizzazione del mittente è vietata e può violare il D. Lgs. 196/2003. In caso di ricezione per errore, Vogliate immediatamente informare il mittente del messaggio e distruggere la e-mail.

ACHTUNG! Die in dieser Nachricht oder in den beigelegten Dokumenten beinhalteten Informationen sind streng vertraulich. Ihre Verbreitung und/oder ihre Wiedergabe durch Dritte ist ohne Erlaubnis des Absenders verboten und verstößt gegen das Legislativdekret 196/2003. Sollten Sie diese Mitteilung irrtümlicherweise erhalten haben, bitten wir Sie uns umgehend zu informieren und anschließend die Mitteilung zu vernichten.

WARNING! This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclousure or distribution of the material in this e-mail is strictly forbidden and could be against the law (D. Lgs. 196/2003)






Il <a href="tel:05%2F05%2F2011%2012" value="+390505201112" target="_blank">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???
_______________________________________________ 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


_______________________________________________
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 e ... geometry contains non-closed rings

mando
In reply to this post by PietroR3
Quindi se la mia geometria è POLYGON 2D ...non credo siano 3D lo ho create con Qgis e caricate dentro a PG con SPIT.... cosa devo mettere al posto di 

 ST_Multi e  ST_force_4d?

_______________________________________________
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 e ... geometry contains non-closed rings

Sandro Santilli
In reply to this post by PietroR3
On Thu, May 05, 2011 at 01:03:12PM +0200, Pietro d'Orio wrote:
> Puoi risolvere i problemi sulle tabelle con geometrie corrotte con
> questa query.
>
> update schema.tabella set the_geom =
> ST_Multi(ST_force_4d(ST_Buffer(the_geom,0)))

Dubito che risolva il suo caso (non-closed ring)

--strk;

  ()   Free GIS & Flash consultant/developer
  /\   http://strk.keybit.net/services.html
_______________________________________________
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 e ... geometry contains non-closed rings

PietroR3
In reply to this post by mando
In questo caso non devi mettere nulla.

Per i self-intersection funziona benissimo, per non-closed rings significa che possono esistere delle linee costruite da un solo punto.

Probabilmente il tuo dato è una derivazione di un DWG o DXF? In quel caso è necessario modificare a mano le geometrie o eliminarle.

Il 05/05/2011 13:32, Luca Mandolesi ha scritto:
Quindi se la mia geometria è POLYGON 2D ...non credo siano 3D lo ho create con Qgis e caricate dentro a PG con SPIT.... cosa devo mettere al posto di 

 ST_Multi e  ST_force_4d?

_______________________________________________
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 e ... geometry contains non-closed rings

Andrea Peri
In reply to this post by mando
Il 05/05/2011 13:28, Luca Mandolesi ha scritto:
>
> A questo punto ricarico lo shape che ne deriva e all'interno ho la
> metà dei record...vedo che la lista dei miei gid si interrompre alla
> 4145....
>
> nel layer postgis cerco la 4146 per vedere se c'è errore ma non ha
> problemi....
>

prova con gdal.

qgis qui ci mette del suo ...

lui vuole un campo numerico con indice unique.
Se non rispetti questa condizione lui si arrabbia.

gdal invece e' meno scimmione e accetta di buon grado quello che gli
arriva....

ergo hai piu' speranze di recuperare con gdal che con qgis...
inoltre passandogli la stringa sql che esclude a priori tutti i non
validi, ti riprendi tutto quanto il recuperabile.

Invece qgis si ferma al primo problema e non va piu' avanti...

Andrea.

_______________________________________________
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 e ... geometry contains non-closed rings

Andrea Peri
In reply to this post by Sandro Santilli
Il 05/05/2011 13:41, Sandro Santilli ha scritto:

> On Thu, May 05, 2011 at 01:03:12PM +0200, Pietro d'Orio wrote:
>> Puoi risolvere i problemi sulle tabelle con geometrie corrotte con
>> questa query.
>>
>> update schema.tabella set the_geom =
>> ST_Multi(ST_force_4d(ST_Buffer(the_geom,0)))
> Dubito che risolva il suo caso (non-closed ring)
>
> --strk;
>
>    ()   Free GIS&  Flash consultant/developer
>    /\   http://strk.keybit.net/services.html

La ST_MakeValid() di postgis 200 dovrebbe riuscire a risolverlo ..

Immagino che chiuderebbe i poligoni tracciando una linea tra i due
vertici mancanti .

Ma il problema e' come esportare le geometrie dal postgis che le tiene
imprigionate...
L'unica strada per me e' gdal.

Andrea.

_______________________________________________
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 e ... geometry contains non-closed rings

Andrea Peri
In reply to this post by mando
>La ST_MakeValid() di postgis 200 dovrebbe riuscire a risolverlo ..
>
>Immagino che chiuderebbe i poligoni tracciando una linea tra i due
>vertici mancanti .
>
>Ma il problema e' come esportare le geometrie dal postgis che le tiene
>imprigionate...
>L'unica strada per me e' gdal.
>
>Andrea.

NO, mi corregggo.

Non avevo percepito che fossero punti singoli.

In questo caso non ci puo' riuscire .

Andrea.


_______________________________________________
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 e ... geometry contains non-closed rings

Sandro Santilli
In reply to this post by Andrea Peri
On Thu, May 05, 2011 at 03:42:19PM +0200, aperi2007 wrote:

> Ma il problema e' come esportare le geometrie dal postgis che le tiene
> imprigionate...

Abbiamo rilasciatola 1.4.2 e la 1.5.1 esattamente per consentire questo.

--strk;

  ()   Free GIS & Flash consultant/developer
  /\   http://strk.keybit.net/services.html
_______________________________________________
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 e ... geometry contains non-closed rings

Andrea Peri
In reply to this post by mando
Il 05/05/2011 13:16, Luca Mandolesi ha scritto:
> Se me la giri mi fai un favorone....effettivamente ho tutte le
> geometrie in public.....mannaggg.....e tanta paura!!

Una funzioncina di tale genere poteva essere in effetti abbastanza utile
e comoda...
Ho provveduto quindi a inserire nel wiki di postgis come esempio una
procedura che effettua una tale operazione.

http://trac.osgeo.org/postgis/wiki/UsersWikiCheckInvalidGeometriesFromGeometryColumns

Eseguendola ti crei una funzione che controlla ogni tabella elencata in
geometrycolumns se possiede delle geometrie non valide.

Per eseguirla la invochi cosi':

select massive_check_geometry_validity('aaa');

alla fine ti crea una tabella nominata 'aaa' in cui ci mette il risultato.
Se e' vuota vuol dire che non hai geometrie invalide in nessuna tabella.
Altrimenti ti mette il numero di geometrie non valide per ciascuna tabella.

Saluti,

Andrea.


_______________________________________________
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