Jest to kontynuacja poprzedniego pytania . Zobaczysz, że jestem nowym użytkownikiem PostGIS.
Sprawdziłem ważność topologii w moich danych i znalazłem około 1700 problemów z topologią w zestawie danych pokrycia terenu (wielokąta). Są to „Ring Self_intersection”.
Korzystając z użytecznych informacji w tej prezentacji Paula Ramsaya (strona 20), próbowałem odpowiednio buforować moje dane:
UPDATE schema.data SET the_geom = bufor (the_geom, 0.0) GDZIE isvalid (the_geom) = false i isvalid (buffer (the_geom, 0.0)) = true;
Ale dostaję odpowiedź:
POUCZENIE: Pierścień Własne przecięcie w punkcie lub w pobliżu (edytowane) BŁĄD: nowy wiersz dla relacji „sgm_buffer” narusza ograniczenie sprawdzania „enforce_geotype_the_geom”
********** Błąd **********
BŁĄD: nowy wiersz dla relacji „sgm_buffer” narusza ograniczenie sprawdzania „enforce_geotype_the_geom” Stan SQL: 23514
Próbowałem też tylko:
AKTUALIZACJA csgn.sgm_buffer SET the_geom = buffer (the_geom, 0.0)
i dostać:
BŁĄD: nowy wiersz dla relacji „sgm_buffer” narusza ograniczenie sprawdzania „enforce_geotype_the_geom”
********** Błąd **********
BŁĄD: nowy wiersz dla relacji „sgm_buffer” narusza ograniczenie sprawdzania „enforce_geotype_the_geom” Stan SQL: 23514
Czy więc zakładam, że ta technika buforowania nie zadziała w moich problemach? Czy robię coś złego?
Pan Ramsay kontynuuje następnie w tym samym dokumencie, aby zasugerować dodatkową technikę radzenia sobie z wielokątami o „liczbie 8”. Nie do końca rozumiem, jak napisać to w całości w kodzie (lub co robi i czy mi to pomoże):
WYBIERZ ST_BuildArea (ST_Union („LINESTRING EMPTY”, ST_ExteriorRing („POLYGON ((...))”
Więc ... czy ktoś może pomóc? To jest prawdziwy koszmar z moimi ciasnymi ramami czasowymi i ograniczonymi umiejętnościami w PostGIS.
ST_Multi()
wymuszenie, aby wszystkie wielokąty były MULTIPOLYGON
s (to założenie)