Czy w QGIS jest opcja automatycznego wypełniania otworów w wielokątach poprzez ustawienie parametrów, np. Maksymalnego obszaru, odległości między granicami? Chcę usunąć / wypełnić dziury, które są bardzo „cienkie” / małe.
Czy w QGIS jest opcja automatycznego wypełniania otworów w wielokątach poprzez ustawienie parametrów, np. Maksymalnego obszaru, odległości między granicami? Chcę usunąć / wypełnić dziury, które są bardzo „cienkie” / małe.
Odpowiedzi:
Używając QGIS 2.10.1-Pisa z Processing w wersji 2.10.2, istnieje kilka narzędzi dostępnych w Processing Toolbox :
Mam nadzieję że to pomoże!
Z tym plikiem kształtu miałem do czynienia z tym samym problemem, co twój, mając wiele przerw między wielokątami.
Aby rozwiązać problem, możesz użyć niewielkiej modyfikacji metody tshiffle:
Ta akcja utworzy nowy plik kształtu składający się tylko z jednego wielokąta, więc musisz rozbić go na pojedyncze części. W tym celu można użyć narzędzia Vector / Geometry Tools / Multipart do narzędzia singleparts.
Następnie usuń podmiot zewnętrzny. Teraz masz, w nowym pliku kształtu, kilka wielokątów pokrywających luki w swoim pierwotnym zasięgu.
Mogą istnieć bardziej eleganckie rozwiązania, ale to zawsze działało dla mnie.
1) Utwórz wielokąty „wypełniające dziury”. Aby to zrobić, narysuj gigantyczny wielokąt większy od oryginału i użyj narzędzia „różnica”. Jeśli narysujesz o wiele większy wielokąt, będziesz mieć wszystkie wielokąty „wypełniające dziurę” oraz jeden większy wielokąt, który będzie otaczał pierwotny kształt. Usuń ten duży wielokąt, zachowując wielokąty „wypełniające dziurę”.
2) Połącz wielokąty „wypełniające dziury” z oryginalnym plikiem kształtu. Jeśli chcesz tylko wypełnić otwory, które spełniają określone kryteria (tj. Poniżej X liczby kilometrów kwadratowych), możesz to tutaj filtrować.
3) Rozpuść nowo scalony wielokąt na wspólnym polu.
Widziałem kilka wyjaśnień podążających tą samą ścieżką co gtapko i tshiffle, ale żadne nie działało dla mnie, ponieważ nieprawidłowe geometrie sprawiły, że narzędzie różnicowania przestało działać. Tak więc wymyśliłem własne rozwiązanie, które nie jest w 100% zautomatyzowane, ale można nim zarządzać. Prawdopodobnie ktoś już to wymyślił, ale zaryzykuję:
1) Utwórz identyfikator na oryginalnej, uszkodzonej warstwie
Utworzenie atrybutu identyfikatora jest proste, ale moje rozwiązanie jest takie, więc omówię to.
Najpierw musisz otworzyć tabelę atrybutów, a następnie przejść do Kalkulatora pola , który jest przyciskiem podobnym do liczydła. Tam pojawi się opcja utworzenia nowego pola lub zaktualizowania istniejącego. Na powyższym obrazku tworzę nowy o nazwie „ID”. Formuła znajduje się na końcu obrazu. (Przepraszam, że mój QGIS jest skonfigurowany w innym języku. Ponieważ projekt i formuły są dokładnie takie same we wszystkich wersjach językowych, nie sądzę, żeby to nam przeszkodziło.)
2) Konwertuj wielokąty na linie
Ten krok znajduje się w menu Wektor> Geometria . Twój przekształcony kształt powinien wyglądać następująco:
Zaraz po przekonwertowaniu wielokątów na linię będziesz musiał zrobić dokładnie odwrotnie, czyli ...
3) Konwertuj linie na wielokąty
Opcje znajdują się obok siebie. Ponownie, nie przejmujmy się tutaj barierą językową.
4) Ciesz się Powodem, dla którego zrobiłeś kroki 2 i 3 jest to, że teraz jesteś pewien, że te linie będą uważane za wielokąty, co oznacza, że mają teraz własną linię w tabeli atrybutów. Jeśli to sprawdzisz, będzie to wyglądać następująco:
Pierwszy to ZAWSZE cały wielokąt (zaufaj mi, usunąłem dziś kilkaset linii ...), a reszta to luźne linie na środku. Możesz włączyć edycję i przygotować się do działania. Jeśli zdecydujesz się tego spróbować, powinieneś pamiętać o dwóch rzeczach: uporządkuj tabelę pod kątem identyfikatora , w ten sposób masz pewność, że niczego nie przegapisz i użyj shift, aby wybrać klastry danych, tak jak każdy inny program .
Jestem świadomy tego nie jest crème de la crème QGIS rozwiązywania problemów, ale jeśli masz do czynienia z sytuacją, w której narzędzia nie pracują z powodu nieprawidłowej geometrii nich linia stworzenia (Próbowałem nawet rozpuszczanie przez identyfikator, ale to nie działało), może to być wyjście.