Czy usuwasz tylko dziury z wielokątów za pomocą ArcGIS Desktop?

15

Korzystam z ArcGIS Desktop 10.0.

Mam sposób na usunięcie dziur w pączku, czyli przekształcenie wielokąta w linię, a następnie utworzenie wielokąta z linii, a na koniec scalenie ich wszystkich. Wadą tej strategii jest to, że usuwa inne dziury i puste obszary, które w rzeczywistości są puste i powinny być puste. Zobacz poniższy obraz:

wprowadź opis zdjęcia tutaj

Wysypka
źródło
4
Głosowałem za utrzymaniem tego pytania otwartego, ponieważ uważam, że OP próbuje usunąć niektóre, ale nie wszystkie pączki. On szuka sposobu, aby zatrzymać niektóre z nich.
Fezter
Dzięki! Dodałem obraz, mam nadzieję, że wszystko wyjaśni. Nie mogę iść dalej i usuwać większych obszarów przed scaleniem wszystkiego, ponieważ mogę przypadkowo usunąć główne wielokąty (sam zielony).
Arash
1
Bardzo podobny do Jak usunąć małe warstwy „soli i pieprzu” z warstwy? , ale przy użyciu procesu QGIS. Prawdopodobnie możesz pracować z bardzo podobnymi procesami w ArcGIS.
RyanKDalton
To tylko wielkość progowa, powyżej której nie powinny być wypełniane dziury, która zapobiega duplikatowi Wypełnianie wielokątów pączków za pomocą ArcGIS na komputery?
PolyGeo

Odpowiedzi:

24

Chciałbym spróbować Union narzędzia z NO_GAPS:

NO_GAPS - Zostanie utworzona funkcja dla obszarów na wyjściu, które są całkowicie zamknięte przez wielokąty. Ta funkcja będzie miała puste atrybuty.

Następnie możesz wybrać funkcje z pustymi atrybutami poniżej wielkości progowej i obliczyć ich atrybuty, aby były takie same jak oryginalny wielokąt - lub skopiować / wkleić je w oknie Atrybutu edytora.

Obiekty z pustymi atrybutami powyżej wielkości progowej powinny zostać usunięte.

Stamtąd narzędzie Dissolve powinno zakończyć zadanie.

PolyGeo
źródło
1
jak „obliczyć [nowy pączek poli], aby był taki sam jak oryginalny [zawierający] wielokąt”? Nie mają wspólnych wartości atrybutów, więc nie można ich połączyć. Skąd Island Poly C wie, że powinna uzyskać nowe wartości atrybutu z (zawierającego) Lake Poly A i zignorować (gdzie indziej) Lake Poly B?
matt wilkie
Nie wykonałem ostatniego testu, ale „nowy pączek poli” to „oryginalny [zawierający] wielokąt”. Jeśli istnieje wiele takich wielokątów pączków do przetworzenia w masie, konieczne byłoby oznaczenie małych otworów wielokątem pączka, w którym się znajdują.
PolyGeo
8

Rozwiązanie PolyGeo to takie, które sam zatrudniłem i działa dobrze (+1). Inną alternatywą jest buforowanie twoich wielokątów małą ilością, a następnie buforowanie wyniku o tę samą ilość (powiedzmy + 1m, a następnie -1m). Działa to również dobrze, ale wiąże się z niewielkim ryzykiem przypadkowego połączenia wielokątów sąsiadujących o tę samą wartość co bufor. Może również zwiększyć liczbę wierzchołków (co może, ale nie musi stanowić problemu).

Możesz także napisać skrypt dla solidnego rozwiązania, iterując po każdym wielokącie, tworząc tymczasowe wielokąty na podstawie pierścieni wewnętrznych i testując je pod kątem ich obszarów. Jeśli znajdują się poniżej progu, usuwasz wewnętrzny pierścień z geometrii i aktualizujesz swój rząd. To rozwiązanie jest więcej pracy niż rozwiązanie PolyGeo lub mój hack buforowy powyżej, ale prawdopodobnie jest to „czystsze” podejście.

MappaGnosis
źródło
5

Możesz użyć narzędzia „Wyeliminuj część wielokąta” (Narzędzia zarządzania danymi -> Uogólnienie) w ArcToolbox. Możesz określić minimalną powierzchnię / procent otworu do usunięcia.

Kadir Şahbaz
źródło
1
Ta funkcja wymaga jednak poziomu licencji Advanced / ArcInfo.
Martin
Wypróbowałem narzędzie Eliminuj część wielokąta w ArcGIS Pro 2.0. Ale nie wpłynęło to na testowany przeze mnie wielokąt. Ta funkcja miała kilka wewnętrznych pierścieni i chcę, żeby wszystkie zniknęły. Czy to narzędzie działa tylko wtedy, gdy element składa się z geometrii wieloczęściowej?
Mike Finch
Nie tylko". Działa również na pojedyncze wielokąty z otworami.
Kadir Şahbaz
4

Oto inny sposób na usunięcie jezior z wielokątów (np. Warstwa mapy kodów pocztowych z Navteq). Jest to również przydatne do czyszczenia warstw mapy terytorium, które zostały wygenerowane przez rozpuszczenie warstwy mapy kodu pocztowego przez kod terytorium.

  1. Użyj „Geoprocessing” „Union” na warstwie mapy wielokątów i usuń zaznaczenie pola wyboru „Dozwolone przerwy” (które jest zaznaczone domyślnie). Spowoduje to utworzenie wielokątów dla wszystkich otworów „pączków” w wielokątach.
  2. W wynikowej warstwie mapy Unii dodaj pola dla identyfikatora, X i Y. Identyfikator powinien być oddzielny od nazwy / identyfikatora wielokątów, które mają otwory w pierścieniach, które chcesz usunąć.
  3. W tabeli atrybutów użyj Kalkulatora pola, aby obliczyć identyfikator z pola ObjectID i użyj „Oblicz geometrię”, aby wypełnić wartości X i Y.
  4. Oddziel wielokąty pierścieniowe od innych wielokątów, wybierając (Wybierz według atrybutów) te, w których pole nazwy ma wartość NULL.
  5. Wyeksportuj wybrane rekordy do nowej tabeli. (menu rozwijane opcji tabeli -> Eksportuj ...)
  6. Użyj opcji „Dodaj XY”, aby utworzyć warstwę zdarzeń. (warstwa prawym przyciskiem myszy -> Wyświetl dane XY ....
  7. Wyeksportuj warstwę zdarzeń do nowej klasy obiektów. (kliknij warstwę prawym przyciskiem myszy -> Dane -> Eksportuj dane)
  8. Wykonaj połączenie przestrzenne między nową warstwą punktową a ORYGINALNĄ warstwą mapy wielokątów, która nie ma wielokątów pierścieniowych. Użyj opcji „najbliżej”, aby nazwa otaczającego wielokąta została dołączona do tabeli atrybutów wielokątów pączka.
  9. Użyj standardowego połączenia tabeli między połączoną warstwą punktową a wynikową warstwą mapy z Unii (na podstawie pola ID). (warstwa prawym przyciskiem myszy -> Złącza i powiązania -> Połącz -> Połącz dane z innej warstwy na podstawie położenia przestrzennego)
  10. Użyj Kalkulatora pola w tabeli atrybutów, aby obliczyć puste nazwy wielokątów z połączonej warstwy punktowej.
  11. Uruchom „Rozpuszczanie” Geoprocessingu na podstawie nazwy wielokąta, aby połączyć wielokąty pączków z większym wielokątem.

Zauważ, że nie rozwiąże to problemu rzek wyciętych w obrysie wielokąta, ale poprawi oryginalną warstwę mapy poprzez usunięcie wewnętrznych otworów pączka.

Susan
źródło
3

Jeśli wielokąty w klasie obiektów zawierają inne wielokąty w tej samej klasie obiektów (np. Lesotho w Południowej Afryce) i jeśli musisz wyeliminować ręczną edycję na korzyść ModelBuilder itp., Użycie opcji „Eliminate Polygon Part” jest najszybszym rozwiązaniem. Ustawienia narzędzi:

- „Warunek (opcjonalnie)” = OBSZAR - „Obszar (opcjonalnie)” = bardzo duża liczba (powiedzmy 1e + 100) - „Wyeliminuj tylko zawarte części (opcjonalnie)” = [zaznaczone]

To da RPA z wypełnionym obszarem Lesotho, niezbędnym dla przepływów pracy, takich jak wyprowadzanie wierzchołków do użycia w poligonach w Tableau.

Głaskanie pod brodę
źródło
1

Ponieważ nie zostało to wspomniane do tej pory i wydaje się być właściwym narzędziem do tego, co próbujesz osiągnąć: agreguj wielokąty

Ustaw minimum_hole_size na minimalny rozmiar wieloboku, który chcesz zachować. Mniejsze zostaną wyeliminowane.

Opcjonalna wartość minimum_area w tym samym narzędziu robi to samo dla części wielokąta, które nie są otworami.

ZZZ
źródło