Questo è il seguito della domanda precedente . Vedrai che sono un nuovo utente PostGIS.
Ho esaminato la validità della topologia nei miei dati e ho trovato circa 1700 problemi di topologia nel set di dati di landcover (poligono). Questi sono tutti "Ring Self_intersection".
Utilizzando alcune informazioni utili in questa presentazione di Paul Ramsay (pagina 20), ho tentato di bufferizzare i miei dati di conseguenza:
UPDATE schema.data SET the_geom = buffer (the_geom, 0.0) WHERE isvalid (the_geom) = false e isvalid (buffer (the_geom, 0.0)) = true;
Ma ho la risposta:
AVVISO: anello Autointersezione nel punto o vicino (modificato) ERRORE: nuova riga per la relazione "sgm_buffer" viola il vincolo di controllo "enforce_geotype_the_geom"
********** Errore **********
ERRORE: nuova riga per la relazione "sgm_buffer" viola il vincolo di controllo "enforce_geotype_the_geom" Stato SQL: 23514
Ho anche provato solo:
AGGIORNAMENTO csgn.sgm_buffer SET the_geom = buffer (the_geom, 0.0)
e prendi:
ERRORE: nuova riga per la relazione "sgm_buffer" viola il vincolo di controllo "enforce_geotype_the_geom"
********** Errore **********
ERRORE: nuova riga per la relazione "sgm_buffer" viola il vincolo di controllo "enforce_geotype_the_geom" Stato SQL: 23514
Quindi suppongo che questa tecnica di buffer non funzionerà sui miei problemi? O sto facendo qualcosa di sbagliato?
Il signor Ramsay prosegue quindi nello stesso documento per suggerire una tecnica aggiuntiva per affrontare i poligoni "figura di 8". Non capisco del tutto come scriverlo per intero nel codice (o cosa sta facendo e se mi aiuterà):
SELECT ST_BuildArea (ST_Union ('LINESTRING EMPTY', ST_ExteriorRing ('POLYGON ((...))'
Quindi .... qualcuno può aiutare? Questo si sta rivelando un vero incubo con i miei tempi stretti e le mie competenze limitate in PostGIS.
ST_Multi()
per forzare tutti i poligoni a essere MULTIPOLYGON
s (questo è un presupposto)