Jak rozpoznać wielokąty z błędami taśmy „flag”

12

Pracując w ArcMap, natknąłem się na błędy w warstwie wielokąta, którą nazywam „flagowymi kawałkami” (zaczerpniętymi z podobnego języka w paczkach nazywanych „flagami”). Te wielokąty taśmy (patrz rysunek poniżej) zazwyczaj składają się z tylko jednego dodatkowego węzła, który użytkownik przypadkowo dodał.

Na poniższych obrazach „flaga” i „maszt flagowy” to jedna część, w której „maszt flagowy” po prostu nakłada się na siebie. Obraz po lewej stronie ma w sumie 5 węzłów.

prosta flaga wprowadź opis zdjęcia tutaj

Gdy są postrzegane same, błędy są bardzo oczywiste, ale gdy wiele wielokątów sąsiaduje, są prawie niemożliwe do zobaczenia, ponieważ wydają się być granicą między 2 wielokątami.

Prawdopodobnie dzieje się tak, ponieważ używają edytora opartego na plikach kształtu, dlatego nie mogę zaimplementować żadnych reguł edycji opartych na topologii, aby zapobiec takim sytuacjom w przyszłości.

Czy ktoś ma sposób na zidentyfikowanie i usunięcie tego rodzaju błędów? Wolałbym zautomatyzowaną metodę zarówno identyfikacji, jak i rozwiązywania problemów, ponieważ to użytkownicy w terenie są tymi, którzy stworzyli błędy, ale utknąłem po ich czyszczeniu. Dzięki.

RyanKDalton
źródło
3
Zastanawiam się, dlaczego Esri zapewnia zasadę, że nie wolno się przecinać dla elementów linii, ale nie dla wielokątów.
Kirk Kuykendall
Czy narzędzie Sprawdź geometrię je znajduje?
mkennedy,
Szukaj także w zwisaniu i przekroczeniu. Obie przyniosły kilka skryptów, ale nic nie jest aktualne, a wiele dla polilinii, a nie wielokątów.
mkennedy,
Ryan, czy mógłbyś podać podzbiór swoich danych? Czy przypadkiem zbadałeś również komentarz mkennedy'ego na temat narzędzia „Sprawdź geometrię”?
Allan Adair
Jaka wersja arcmap?
Kirk Kuykendall

Odpowiedzi:

5

jeśli masz dostęp do narzędzi Safe Fme, przekonasz się, że przydatny jest transformator zwany spikeRemover. Możesz wypróbować ograniczoną wersję SAFE FME do pobrania lub sprawdzić licencję ArcGis na „Rozszerzenie FME dla ArcGIS”

http://docs.safe.com/fme/html/FME_Transformers/Default.htm#Transformers/spikeremover.htm

http://cdn.safe.com/resources/fme/FME-Transformer-Reference-Guide.pdf

Jorge Vidinha
źródło
Udało mi się z powodzeniem użyć SpikeRemover w rozszerzeniu ArcGIS Data Interop w celu wyczyszczenia skoków. Ma również dane wyjściowe, które pozwalają określić funkcje niezmienione, zmienione i oflagowane (skoki). Wszystko to przydało się bardzo do identyfikacji cech, które miały skoki, a tworzenie nowej warstwy „bezkostkowej” było bardzo łatwe, po prostu wysyłając zarówno niezmienione, jak i zmienione dane wyjściowe do tej samej warstwy, a „oznaczone” wyjście do warstwy QC do dalszej kontroli. esri.com/software/arcgis/extensions/datainteroperability/…
RyanKDalton
2

Nie jestem pewien, gdzie występuje problem lub gdzie można go uniknąć / naprawić. Ale często to widziałem w naszej bazie danych SDE, chociaż geometria w SDE powinna zawsze być poprawna. W naszym przypadku było tak, ponieważ zaimportowaliśmy pliki kształtu za pomocą ArcObjects do SDE. Po zapisaniu geometrii przyciągały one do siatki SDE i w ten sposób tworzyły nieprawidłowe geometrie za pomocą taśm, które opisujesz, gdy geometria miała cienki skok. Jest tak, ponieważ pliki kształtów mają pełną podwójną precyzję dla współrzędnych, a SDE grubszą siatkę.

Naszym rozwiązaniem było naprawienie geometrii, gdy zostały zaimportowane przez:
1. Ustaw odniesienie przestrzenne geometrii z
pliku kształtu do odniesienia przestrzennego odpowiedniej klasy obiektów SDE 2. Przyciągnij geometrię do odniesienia przestrzennego (IGeometry.SnapToSpatialReference () )
3. Ustaw ITopologicalOperator2.IsKnownSimple = false (ważne, w przeciwnym razie uproszczenie nic nie robi)
4. Wykonaj operację uproszczenia. W przypadku wielokątów użyliśmy IPolygon.SimplifyPreserveFromTo ()

Stefan
źródło
2

W arcmap 9.3.1 dodawałbym pole o nazwie Flag (a może FlagFlag?) I używałem kodu VBA w kalkulatorze pola, aby obliczyć to pole.

Kod VBA ściemniałby zmienną jako ITopologicalOperator3 i ustawiał ją na pole Shape.

Wywołałby wówczas niezbyt prostą metodę IsSimpleEx .

Ustaw wartość pola Flaga na esriNonSimpleEnum . Przypuszczalnie błąd, którego dotyczy problem, powróci esriNonSimpleSelfIntersections.

W wersji 10.0 może być na to sposób za pomocą Pythona w kalkulatorze (?) ... Nie jestem pewien. Użyłbym polecenia dodatku. IMO Esri powinna zapewnić obsługę c # w kalkulatorze polowym. W końcu kompilator c # jest instalowany jako część środowiska .NET.

Aktualizacja

Kod, który tu zamieściłem , może znaleźć słupy flagowe, jeśli zastosujesz wyrażenie Definicja "Left_OID" = "Right_OID"do wynikowego odtwarzacza polilinii.

Kirk Kuykendall
źródło
1

Ten skrypt w języku Python jest przydatnym narzędziem

Wyeliminuj wielokąty taśmy z plików kształtów

„EliminateSlivers.py przełącza wszystkie funkcje w pliku kształtu wielokąta i usuwa te z wyjściowego pliku kształtu, które spadają poniżej określonego progu obszaru.

Operacje geoprzetwarzania i tolerancje klastrów mogą spowodować nagromadzenie dodatkowych, niewielkich wielokątów taśmy. Mogą one być bez znaczenia i mogą zniekształcać wiarygodność danych przestrzennych. ”

Uwaga: będziesz musiał przetestować dane z różnymi tolerancjami (najpierw wykonaj kopię danych)

http://arcscripts.esri.com/details.asp?dbid=14672

Mapperz
źródło
1
To było łatwe dzięki ArcInfo Relacje> Czyste łuki> Buduj wielokąty ....
Mapperz
Nie jestem pewien, czy to narzędzie faktycznie wyeliminuje błędy, które przedstawiam. Widzisz, taśma (maszt flagowy) i główna bryła wielokąta (flaga) są w rzeczywistości jedną cechą. Dlatego ten skrypt nie usuwałby TYLKO części wielokąta „masztem flagowym” bez jednoczesnego usunięcia całej funkcji „flagowania”.
RyanKDalton
1

Ryan,

Współpracowałem z biurem Soil Survey i okresowo sprawdzałem ich wielokąty glebowe. To, co robię, jest sprawdzane pod kątem taśm. Wysłałem klasę funkcji do zasięgu, a następnie zbudowałem je, aby oznaczyć błędy w celu oznaczenia. Jeśli widzisz 2 etykiety w jednym wielokącie, oznacza to błąd. Jeśli jest to jedna etykieta na wielokąt, wiesz, że jest poprawna. Chciałbym utworzyć klasę obiektów, aby zaznaczyć błąd. Możesz też wybrać jedną lub wiele etykiet w nowej klasie funkcji. W ten sposób możesz wrócić i naprawić błąd. Działa dla mnie bardzo dobrze z wielokątami gleby. Używam tego, aby poinformować naukowców zajmujących się glebą, aby rozwiązać problem.

To tylko mój sposób na zidentyfikowanie problemu. Po prostu udostępniam to tobie.

PROBERT
źródło
1

Jeśli identyfikacja nie jest głównym punktem, a jedynie automatyczna poprawka, spróbuj tego. Następnie dodaj dane do nowego pustego dokumentu mapy;

  • Utwórz topologię mapy
  • wybierz wszystkie funkcje
  • użyj funkcji konstruowania, aby podzielić istniejące funkcje

Przetestowałem to i wydaje się, że działa, ale nie jestem pewien, czy dokładnie skopiowałem Twoje źródło danych

Baw się dobrze, CDB

CDBrown
źródło
1

Oto kilka sposobów, aby przez to przejść i moim zdaniem najbardziej eleganckie jest użycie rozszerzenia o nazwie GIS Data Reviewer . GIS Data Reviewer umożliwia tworzenie spersonalizowanych i uproszczonych kontroli dokładności przestrzennej i atrybutów jako uzupełnienia podstawowej topologii. W obrębie topologii są rzeczy, które nie są dostępne, które są częścią standardowych kontroli dla Data Reviewer Like

  • Zamknięcie 3D
  • Nieprawidłowy otwór
  • Wyrażenie SQL
  • Obszar mniejszy niż odniesienie przestrzenne
  • Funkcja na funkcję
  • i wiele więcej

Użyłbym tego do przesłuchania twoich danych. Innym sposobem jest stworzenie nowej klasy obiektów na podstawie istniejącej klasy obiektów wielokąta. a następnie utwórz nową klasę elementów Wielobok i wypełnij ją liniami za pomocą narzędzia do konstruowania cech na pasku narzędzi Topologia. Oznaczałoby to, że taśmy powinny być wtedy wyświetlane jako takie, a wszelkie inne narzędzia topologiczne powinny wykryć błąd. Następnie należy wybrać, usunąć i zastąpić funkcje w istniejącej klasie obiektów.

Mam nadzieję, że to pomaga, CDB

CDBrown
źródło