Naprawia tysiące małych nakładających się wielokątów?

21

Używam ArcMap 10.3.

Mam warstwę różnych rodzajów użytkowania gruntów. Odkryłem, że wiele wielokątów nakłada się na siebie, w wyniku czego ten sam wielokąt ma dwa różne typy użytkowania gruntów.

Korzystając z odpowiedzi @ radouxju , zbudowałem topologię dla warstwy użytkowania gruntów (z zasadą „nie wolno nakładać się”). Następnie użyłem scalania, aby naprawić duże zachodzące na siebie wielokąty.

Mam jednak tysiące małych nakładających się wielokątów. Mogę naprawić je wszystkie ręcznie, co zajmuje dużo czasu.

Czy istnieje szybszy sposób na naprawienie wszystkich tych błędów?

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj


Zaktualizowałem mapę, aby pokazać wszystkie rodzaje użytkowania gruntów. Wieloboki zachodzą na siebie; nie taśmy.

błyszczący
źródło
2
Czy narzędzie Integrate Tool działałoby dla Ciebie?
Fezter
@ Fezter Nie sądzę, ponieważ wielokąty nie mają tego samego obszaru i nie mogę zastosować tej samej tolerancji XY dla całej warstwy.
błyszczący
1
@aelwan: Jaki jest twój cel w przypadku tych danych? Czy tworzysz te dane do wykorzystania przez innych (tak jakbyś był ich autorem)? A może próbujesz „wyczyścić” w celu użycia na mapie lub analizie? Powodem, dla którego pytam, jest to, że te dane wyglądają jak śmieciowe dane. Wykracza to poza analizę GIS, należy go całkowicie przekrystalizować i pozwolić, aby ktoś z autorytetem (praktyczną wiedzą) podejmował świadome decyzje o tym, gdzie powinny być te granice. W przeciwnym razie po prostu zostawiłbym dane bez zmian.
alexGIS 21.04.16
@alexGIS Całkowicie zgadzam się z tobą, jak złe są dane. Są to jednak NAJLEPSZE dane, jakie otrzymałem. Próbuję wyczyścić do analizy.
błyszczący

Odpowiedzi:

6

Obawy zgłoszone przez @Adam Cara są bardzo ważne. Jednak gdy spojrzałem na samo skrzyżowanie, okazało się, że większość z nich to albo chude bity na granicy między 2 masywnymi wielokątami, albo odłączone bity / wyspy dużego wielokąta siedzącego wewnątrz innego. W tym przypadku kasowanie nakładek i przypisywanie rozpuszczonych nakładek może działać atrybut najbliższego sąsiada (w zależności od tego, co nastąpi wcześniej).

Proces:

arcpy.Intersect_analysis("Landuse2b #","D:/Scratch/mpart.shp","ALL","#","INPUT")
arcpy.MultipartToSinglepart_management("mpart","D:/Scratch/spart.shp")
arcpy.Dissolve_management("spart","D:/Scratch/dissolved_1.shp","#","#","SINGLE_PART","DISSOLVE_LINES")
arcpy.Erase_analysis("Landuse2b","dissolved_1","D:/Scratch/erased.shp","#")
arcpy.DeleteField_management("spart","FID_Landus;OBJECTID;Lnduse2013;Shape_Leng;Shape_Area")
arcpy.SpatialJoin_analysis("spart","erased","D:/Scratch/sj_1.shp","JOIN_ONE_TO_ONE","KEEP_ALL"…..)
arcpy.Merge_management("sj;erased","D:/Scratch/merge_1.shp"….)
arcpy.Dissolve_management("merge_1","D:/Scratch/dissolved.shp","Lnduse2013","#","SINGLE_PART","DISSOLVE_LINES")

Test:

arcpy.Intersect_analysis("dissolved #","D:/Scratch/test.shp","ALL","#","INPUT")

Wiadomość:

  • Wykonywanie: Przecięcie „rozwiązany #” D: \ Scratch \ test.shp ALL # INPUT
  • Czas rozpoczęcia: Pt 22 kwietnia 10:16:07 2016
  • Funkcje czytania ...
  • Funkcje pękania ...
  • Składanie funkcji ...
  • OSTRZEŻENIE 000117: Ostrzeżenie wygenerowane puste wyjście.
  • Udało się w piątek 22 kwietnia 10:16:09 2016 (Czas, który upłynął: 2,34 sekundy)

Zauważ, że ten komunikat oznacza, że ​​nie ma przecinających się danych wyjściowych z końcowego rozpadu

Wynik:

https://drive.google.com/file/d/0B6B33FrGNitPT0FvbVdHQm0xMDg/view?usp=sharing

FelixIP
źródło
1
To rozwiązanie sprawia, że ​​jest „schludne”, ale nie „poprawne”. Jeśli OP nie obawia się, że obszar pokrywający się z „Nabiałem” i „Owcą / Wołowiną” jest teraz przeklasyfikowany do „Builtup / Parks / Others” i innych takich arbitralnych przekwalifikowań, które widzę, porównując dane wejściowe z danymi wyjściowymi, to rozwiązanie działa. To powiedziawszy, to elegancki przepływ pracy, dobra robota.
alexGIS
1
Przy takich danych nikt nie wie, co JEST poprawne
FelixIP 22.04.16
7

Jeśli twoje wielokąty są odłamkami, polecenie eliminacji działa dobrze, łącząc je z wielokątem o większej powierzchni lub najdłuższą krawędzią.

Jeśli wielokąty zachodzą na siebie, może istnieć łatwiejszy sposób, ale wybrałbym nakładki na osobną warstwę, a następnie z powrotem złączyłem je, tworząc taśmy i używając polecenia eliminacji.

Bryan Waller
źródło
Dziękuję za poświęcony czas i pomoc. Moje wielokąty się pokrywają. Jak podążać za odpowiedzią, jak mogę wybrać nakładanie się na osobną warstwę? Nakładki są wyświetlane jako błędy obszaru po zbudowaniu topologii.
błyszczący
Wystarczy uruchomić Intersect ( resources.arcgis.com/EN/HELP/MAIN/10.1/index.html#//… ) na warstwie wielokątów. Wynikiem przecięcia będą wszystkie nakładki na tej warstwie.
iRfAn
@iRfAn Dziękuję, przecinam przecięcie i mam nakładkę.
błyszczący
@Bryan Waller Próbowałem podążać za tym, co sugerujesz: wybrałem zakładki do osobnej warstwy za pomocą „intersect”; następnie zjednocz je z powrotem w „ALE SREBRO NIE BYŁO TWORZONE”. Po użyciu polecenia eliminacji nadal mogę stwierdzić, że ten sam wielokąt ma dwa różne typy użytkowania gruntów. Każda pomoc będzie mile widziana. Możesz znaleźć warstwę zagospodarowania przestrzennego tutaj goo.gl/0aE3wq
błyszczący
6
  1. Wybierz mały obszar i przekonwertuj na dwa pliki kształtów, aby sprawdzić, czy ten proces działa.
  2. Utwórz nowe pole o nazwie test (liczba) w s1 i s2.
  3. Przecięcie dwóch plików kształtów S1 i S2.
  4. Nakładające się obszary zostaną zidentyfikowane w osobnym pliku, np. O nazwie Common1 (obszar kreskowany na rysunku).
  5. Oblicz test polowy jako 1 wspólny.
  6. Unia S1 i wspólna
  7. Wybierz 1 wprowadź opis zdjęcia tutajz pola testowego i usuń zakreskowany obszar.
  8. Teraz Scal s2 i wspólne. Polecenie Kasuj może być użyte do skasowania wspólnego obszaru.
Szampa
źródło
@Shampe Dzięki za pomoc. Nakładki, które mam, znajdują się w tym samym pliku kształtu, a nie w dwóch plikach kształtów.
błyszczący
6

Czy zastanawiałeś się nad podzieleniem poszczególnych klas użytkowania gruntów na osobne pliki kształtu, aby z nimi pracować w ten sposób? Najpierw pomyślałem o uruchomieniu przecięcia, ale widziałem, że zawiodło powyżej. Jeśli masz siedem oddzielnych plików kształtów, możesz łatwiej nimi manipulować.

Główne pytanie, jakie mam, brzmi: czy zachodzi na siebie nakładka, czy masz hierarchię, dla której klasa wygrywa i którą powinna pokazać na końcu? Na przykład: jeśli Kadrowanie i Nabiał pokrywają się, co utrzymujesz? Po ustaleniu tej hierarchii przecinaj 2 klasy na raz, zaczynając od najniższej, a kończąc na najwyższej. Jeśli dane wyjściowe są puste na danym skrzyżowaniu, oznacza to, że się nie przecinają.

Adam Kara
źródło
2
Poruszasz tutaj najważniejszą kwestię: jak klasyfikować nakładki? Samo uporządkowanie danych nie oznacza, że ​​są „poprawne”.
alexGIS 21.04.16
@alexGIS Znowu zgadzam się z tobą. Jednak biorąc pod uwagę cel tej analizy i niewielki obszar nakładających się wielokątów danych, kategoria nakładania się nie jest głównym celem w porównaniu z ustalaniem nakładania się.
błyszczący
To może być dobry pomysł z innego powodu. Nakładki mogą reprezentować zmiany granic pól i kadrowanie w czasie.
nmtoken
5

Po utworzeniu topologii zidentyfikowałeś błędy.

Na liście zawierającej błędy możesz wybrać wszystkie błędy tego samego typu, kliknąć prawym przyciskiem myszy tę listę i wybrać „poprawkę”. W twoim przypadku poprawka polegałaby na utworzeniu funkcji, która utworzyłaby nowy wielokąt, gdyby dwa wielokąty zachodziły na siebie. Jest to pierwszy krok (zauważ, że możesz osiągnąć podobny wynik, używając narzędzia łączenia z warstwą zagospodarowania przestrzennego jako pojedynczego wejścia, a następnie narzędzia wieloczęściowego do jednego elementu (ale wtedy nakładanie się będzie nadal zachodzić, więc musisz usunąć jeden z wartość atrybutu) lub przekonwertuj wielokąt na linie, a następnie z powrotem na wielokąt (ale wtedy stracisz atrybut, potrzebujesz połączenia przestrzennego, aby odzyskać atrybuty))

Drugi krok polegałby na usunięciu małych wielokątów. Problem polega na tym, że tak naprawdę nie masz reguły decydującej o wartości atrybutu, którą chcesz zachować. Moim ulubionym narzędziem jest narzędzie do eliminacji , w którym możesz wybrać, do którego sąsiedniego wielokąta zostaną połączone małe wielokąty (na podstawie największej wspólnej granicy lub największego obszaru)

Ostatnia uwaga: jeśli masz regułę dla priorytetowej klasy użytkowania gruntów, iteracyjnie wybierz małe wielokąty (które nie mają etykiety) według lokalizacji, aby przypisać każdą klasę użytkowania gruntów, zmniejszając kolejność priorytetów i użyj kalkulatora pola, aby przypisać ich etykieta.

radouxju
źródło
4

Podczas gdy zgadzam się z innymi, czy są to wielokąty, które się pokrywają, czy taśmy, z tego, co widzę tutaj na tym zdjęciu, pokazujesz wszystkim. Polecam ci zmianę kolorów symboli dla użytkowania gruntów. W ten sposób możesz zobaczyć, który z nich powinien przejść. Jeden kolor, który pokazałeś nam w kolorze różowym, jest naprawdę trudny do odczytania i może być dla ciebie czasochłonny.

W drugiej części wybrałbym wszystkie zachodzące na siebie wielokąty lub wielokąty i wyeksportowałem je do nowego pliku kształtu. W ten sposób możesz zidentyfikować ich użytkowanie gruntów.

PROBERT
źródło
Dzięki za pomoc. Zaktualizowałem mapę, aby pokazać kolory dla wszystkich rodzajów użytkowania gruntów.
błyszczący
4

Jednym z możliwych rozwiązań, jeśli masz Spatial Analyst lub 3D Analyst, jest przekształcenie wielokątów użytkowania gruntów w obraz rastrowy za pomocą narzędzia (Konwersja wielokąta na raster), aby zapewnić, że żadne nakładające się wielokąty nie wyjdą, ponieważ nie można uzyskać nakładających się pikseli. Następnie przekonwertuj raster z powrotem na wielokąty za pomocą narzędzia (Raster na wielobok), jeśli nadal potrzebujesz go w formacie wektorowym. W takim przypadku wybierz rozmiar komórki o wysokiej rozdzielczości (szczegółowy rozmiar komórki), aby uzyskać wielokąty dobrej jakości, ale musisz wziąć pod uwagę pamięć. Być może będziesz musiał spróbować kilka razy, zmieniając rozmiar komórki, aż będziesz zadowolony z wyników. Może być konieczne wykonanie wygładzania wielokątów wyjściowych, jeśli nie jest ono idealne, ale to zależy od tego, czy masz przynajmniej licencję standardową dla ArcGIS Desktop. Wiem, że nie jest to łatwe zadanie, ale może rozwiązać Twój problem.

ahmadhanb
źródło
4

Sprawdź kilka przerw lub kilka zachodzących na siebie wielokątów, aby znaleźć tolerancję i użyj narzędzia Integruj z Arctoolbox o odpowiednich wartościach tolerancji.

wprowadź opis zdjęcia tutaj

Venug
źródło