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.3
ale 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 Tool
i 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 Tool
jest 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:
- Dołączanie pliku kształtu poprzedniego miesiąca do pliku kształtu bieżącego miesiąca za pomocą pola Segment_ID
- Wykonywanie zapytania definicji, gdzie ID_ Segmentu JEST NULL
- 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.
Segment_ID
do tabeli wyników.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.
źródło