Znalezienie różnic między plikami kształtów za pomocą ArcGIS na komputery?

12

Każdego miesiąca muszę dokonywać kontroli jakości niektórych danych ulic dla całego hrabstwa (ponad 47 000 rekordów). Pierwszym krokiem jest porównanie dwóch plików. Obecnie używam narzędzia, które zostało stworzone w domu za pośrednictwem VBA około 5 lat temu. Działa, porównuje dwa pliki i zgłasza różnice na podstawie kilku czynników (dodane rekordy, usunięte rekordy, zmiany adresu, zmiany miasta, zmiany długości segmentów / wierzchołków). Następnie eksportuję je do poszczególnych plików kształtów. Ponadto narzędzie działa, ArcGIS 9.3ale już nie działaArcGIS 10.1

Narzędzie działa świetnie, ale jego ukończenie zajmuje około godziny.

Mam nadzieję, że zacznę pracować nad ulepszeniem tego narzędzia, aby przyspieszyć jego działanie. Przyjrzałem się różnym metodom, w tym Compare Feature Tooli Select by Location.

Oba te narzędzia działają znacznie szybciej, jednak wydaje się, że nie wychwytują wszystkiego, czego potrzebuję. Dużym problemem, jaki mam, Compare Feature Tooljest to, że nie mogę wybrać, na którym polu ma być porównywane. Domyślnie jest to ObjectID, gdy muszę porównać według Segment_ID. Nie ma opcji, aby to wybrać.

Czy ktoś ma dobre rozwiązanie lub pomysły na pełne porównanie, jak opisałem?


Z jakiegoś powodu ArcGIS nie rozpoznaje połączenia, które próbuję, na podstawie odpowiedzi RyanDalton.

Ale

Korzystając z porady dołączenia, wymyśliłem, jak znaleźć różnice między dodanymi i usuniętymi rekordami w dwóch plikach poprzez:

  1. Dołączanie pliku kształtu poprzedniego miesiąca do pliku kształtu bieżącego miesiąca za pomocą pola Segment_ID
  2. Wykonywanie zapytania definicji, gdzie ID_ Segmentu JEST NULL
  3. Eksportowanie tego do nowego pliku kształtu (Dodano funkcje)

Następnie odwracam połączenia i znajduję usunięte funkcje

Nadal pracuję nad sposobem znalezienia innych różnic na liście, a następnie połączenia ich wszystkich razem w modelu.


Mogę znaleźć wszystkie rekordy, które uległy zmianie, wykonując rekordy wyboru według lokalizacji z jednego zestawu danych, który jest identyczny z drugim zestawem danych. Następnie przełączam zaznaczenie, co daje mi wszystkie rekordy, które nie są identyczne.

Zamienię to wszystko w model i mam nadzieję, że zadziała równie dobrze.

Craig
źródło

Odpowiedzi:

11

Za pomocą przycisku Compare Feature Toolnależy po prostu wybrać Segment_IDpole jako pole sortowania w oknie dialogowym.

Pole [sort] lub pola [są] używane do sortowania rekordów w wejściowej tabeli bazowej i wejściowej tabeli testowej. Rekordy są sortowane w porządku rosnącym. Sortowanie według wspólnego pola zarówno w podstawowych funkcjach wejściowych, jak i wejściowych funkcjach testowych zapewnia porównanie tego samego wiersza z każdego wejściowego zestawu danych.

Jeśli chcą, aby uzyskać pole Segment_ID jako część tabeli wyjściowej, spróbuj łączenia wyjścia Compare Featuretabelę do źródła Test Tablena cf.Object_ID=tt.Object_ID, a następnie wyeksportować z złączona tabela z Segment_ID.

Możesz łatwo umieścić to w modelu dla łatwiejszej powtarzalności.

RyanKDalton
źródło
Zrobiłem to jednak, tabela utworzona za pomocą narzędzia porównywania nie zawiera pola Segment_ID (który jest unikalnym identyfikatorem). Zamiast tego wyświetla tylko identyfikator obiektu, co tak naprawdę mi nie pomaga.
Craig,
Zaktualizowałem moją odpowiedź, aby odzwierciedlić przejście Segment_IDdo tabeli wyników.
RyanKDalton
dodanie sprzężenia powoduje awarię ArcMap za każdym razem. Powrót do tablicy kreślarskiej.
Craig,
1

Z mojego doświadczenia wynika, że ​​funkcja porównania zawsze używa FID lub ObjectID jako podstawy porównania, nawet jeśli segment_id jest wybrany jako Pole sortowania. Shapefile FID są poddawane recyklingowi (zmiana kolejności), więc po kilku edycjach wiele, jeśli nie wszystkie FID, są różne dla odpowiadających im obszarów geograficznych. Będą więc mieli błąd „prawdziwej” funkcji porównywania. Jeśli korzystasz z ObjectID z GeoDatabase lub GISquirrel, wówczas identyfikatory nie są przetwarzane i możesz polegać na tym narzędziu. Musisz utrzymywać bazy danych w odpowiednim czasie, aby obiekty ObjectIds nigdy nie były zmieniane.

Niezależnie od opisu pola sortowania w pomocy narzędzia GP BARDZO mylące. To narzędzie byłoby ogromne, gdyby podstawą porównania mógł być segment_ID.

użytkownik14022
źródło