Naprawa błędów poprawności geometrii w QGIS?

31

Pracuję nad danymi dotyczącymi własności na poziomie hrabstwa USA. Mam jeden plik kształtu dla każdego hrabstwa, który zawiera tysiące paczek podatkowych. Muszę rozpuścić wielokąty reprezentujące paczki należące do tej samej osoby. Gdy plik kształtu nie jest czysty, narzędzie „Rozpuszczanie” w QGIS wydaje się nie działać, zawiesza się. Najpierw muszę naprawić problemy z poprawnością geometrii za pomocą narzędzia „Sprawdź poprawność geometrii”. Jednak czasami mam setki błędów. Naprawienie ich zajmuje dużo czasu. Czy są jakieś inne strategie, które mogłyby mi zaoszczędzić trochę czasu?

Używam QGIS 2.4.0.

Bap
źródło
2
Czy próbowałeś zaimportować plik do trawy i użyć v.clean? prawdopodobnie naprawi wiele twoich błędów.
Sergio

Odpowiedzi:

20

Spróbuj uruchomić subtelny bufor na wielokątach. Ustawienie -0,001, jeśli twój CRS to UTM, wydaje się warte spróbowania. WEKTOR | BUFOR

BillW
źródło
4
Wypróbowałem najpierw rozwiązanie „Buffer” zaproponowane przez BillW. Rozwiązało 97% moich problemów, co teraz mi wystarczy. Mogę dokończyć zadanie ręcznie. Wierzę, że uruchomienie małego bufora na wielokątach nie spowoduje dla mnie żadnego problemu na drodze. Ale widzę niektóre przypadki, w których użycie ST_MakeValid lub wypróbowanie v.clean może być lepsze i dokładniejsze.
Bap
18

Kiedy mam warstwę z błędami, zwykle uruchamiam ją przez funkcję GRASS v.clean w Processing Toolbox . Chociaż tak naprawdę nigdy nie odkryłem, które narzędzie jest najlepsze, zwykle wybieram tam funkcję bpol .

Być może jeszcze ważniejsze jest ustawienie zaawansowanych parametrów tolerancji na zatrzaski i minimalnego obszaru . W zależności od warstwy zwykle wybieram od 0,1 do 2 metrów do przyciągania i np. 10 m2 dla minimalnej powierzchni.

Przyciąganie np. Wyrównuje granice, które mają być wspólnymi granicami, ale mają niewielkie przesunięcia, minimalny obszar eliminuje małe przekroje z skrzyżowań itp.

Razem z bpol normalnie rozwiązuje wszystkie błędy bez zbytniej zmiany topologii.

Bernd V.
źródło
11

Możesz użyć ST_MakeValid bezpośrednio w QGIS dodając wtyczkę lwgeom, która dodaje dostawcę lwgeom do zestawu narzędzi do przetwarzania => możesz zastosować MakeValid bezpośrednio na załadowanej warstwie bez konwersji w postigs / spatialite. Postgis / spatialite używają tego samego liblwgeom do wykonania ST_MakeValid

musisz zainstalować liblwgeom i skonfigurować dostawcę przetwarzania, aby wskazywał na to

Dostawca lwgeom można znaleźć jako eksperymentalny: https://plugins.qgis.org/plugins/processinglwgeomprovider/

Luigi Pirelli
źródło
3
Właśnie wypuściłem nową wersję dostawcy processinglwgeom, która może być używana z bieżącą główną wersją przetwarzania qgis. (przetwarzanie jest w trakcie refaktoryzacji)
Luigi Pirelli
2
Cześć @LuigiPirelli Próbowałem rozwiązać podobny problem za pomocą wtyczki Lwgeom, ale zawsze zawiesza się podczas wykonywania i muszę ponownie uruchomić QGis. Czy jest jakiś sposób, aby to naprawić? Dzięki.
Alex Fernández Poulussen
1
trudno powiedzieć bez kontekstu biegania. Przy okazji od 2014 roku w qgis dostępnych jest więcej narzędzi do naprawy geometrii. Zwykle awaria w lwgeom jest problemem niewspółosiowości (brudnej instalacji) w ładowanym lub współdzielonym obiekcie. testowałeś inne narzędzia?
Luigi Pirelli
1
Czy to działa z QGIS 2.18? Wydaje się, że nie działa w mojej wersji QGIS, github.com/faunalia/processinglwgeomprovider
RutgerH
1
Tylko aktualizacja ... od czasu QGIS3.x ma natywny algorytm przetwarzania fixgeometry, który jest opakowaniem algorytmów MakeValid firmy GEOS lwgeom. Nie jest wymagana db.
Luigi Pirelli
2

Właśnie natrafiłem na podobny problem w qgis. Miałem poli zaczęło niepoprawnie wyświetlać. Użyłem Grass fuction v.clean w przyborniku Przetwarzanie, jak sugerował Bernd. Chociaż bpol nie działał, wydaje się, że został naprawiony za pomocą funkcji break.

użytkownik44727
źródło