Находите различия между шейп-файлами с помощью ArcGIS for Desktop?

12

Каждый месяц мне приходится проверять данные улиц по всему графству (более 47 000 записей). Первый шаг - сравнить два файла. В настоящее время я использую инструмент, который был создан в домашних условиях с помощью VBA около 5 лет назад. Он работает, сравнивает два файла и сообщает о различиях, основываясь на нескольких факторах (добавленные записи, удаленные записи, изменения адреса, изменения города, длина сегмента / изменения вершин). Затем я экспортирую их в отдельные шейп-файлы. Кроме того, инструмент работает, ArcGIS 9.3но больше не будет работать вArcGIS 10.1

Инструмент отлично работает, но на его завершение требуется около часа.

Я начал работать над улучшением этого инструмента для повышения производительности. Я изучил различные методы, включая Compare Feature Toolи Select by Location.

Оба эти инструмента работают значительно быстрее, однако, похоже, они не отражают все, что мне нужно. Большая проблема, с которой я столкнулся, Compare Feature Toolзаключается в том, что я не могу выбрать, по какому полю сравнивать. По умолчанию это ObjectID, когда мне нужно сравнить по Segment_ID. Нет возможности выбрать это.

У кого-нибудь есть хорошее решение или идеи о том, как добиться полного сравнения, как я описал?


По какой-то причине ArcGIS не распознает соединение, которое я пытаюсь выполнить согласно ответу RyanDalton.

Но

Следуя совету объединения, я выяснил, как найти различия между добавленными и удаленными записями в двух файлах:

  1. Присоединение шейп-файла за предыдущий месяц к шейп-файлу за текущий месяц через поле Segment_ID
  2. Выполнение запроса определения, где Segment_ID IS NULL
  3. Экспорт этого в новый шейп-файл (дополнительные функции)

Затем я отменяю соединения и нахожу Удаленные

Все еще работаем над тем, чтобы найти другие различия и перечислить их все вместе в модели.


Я могу найти все записи, которые изменились, выполнив выборку по местоположению записей из одного из наборов данных, которые идентичны другому набору данных. Затем я переключаю выбор, и он дает мне все записи, которые не идентичны.

Я положу все это в модель, и надеюсь, что это работает так же хорошо.

Craig
источник

Ответы:

11

С помощью Compare Feature Tool, вы должны просто выбрать свое Segment_IDполе в качестве поля сортировки в диалоговом окне.

Поле [sort] или поля [используются] используются для сортировки записей во входной базовой таблице и входной тестовой таблице. Записи отсортированы в порядке возрастания. Сортировка по общему полю как в Входных базовых функциях, так и в Входных тестовых функциях гарантирует, что вы сравниваете одну и ту же строку из каждого входного набора данных.

Если Вы желаете получить Segment_ID поля как часть вашего вывода таблицы, попытайтесь присоединиться к выходной Compare Featureтаблице источнику Test Tableна cf.Object_ID=tt.Object_ID, а затем экспортировать из присоединяемой таблицы с Segment_ID.

Вы можете легко поместить это в модель для облегчения повторяемости.

RyanKDalton
источник
Я сделал это, однако, таблица, созданная с помощью инструмента сравнения, не включает поле Segment_ID (который является уникальным идентификатором). Вместо этого он просто перечисляет objectID, который действительно не приносит мне никакой пользы.
Крейг
Обновил мой ответ, чтобы отразить попадание Segment_IDв вашу выходную таблицу.
RyanKDalton
добавление соединения приводит к сбою ArcMap каждый раз. Вернуться к доске для рисования.
Крейг
1

В моем опыте Feature Compare всегда использует FID или ObjectID в качестве основы для сравнения, даже если в качестве поля сортировки выбрано сегмент_идентификатор. FID шейп-файлов перерабатываются (переупорядочиваются), поэтому после нескольких изменений многие, если не все FID, различаются для своих соответствующих географических регионов. Таким образом, они будут иметь «истинную» ошибку сравнения функций. Если вы используете ObjectID из GeoDatabase или GISquirrel, то идентификаторы не перерабатываются, и вы можете положиться на этот инструмент. Вы должны хранить базы данных в течение определенного периода времени, чтобы идентификаторы объектов никогда не переупорядочивались.

Независимо от того, что описание поля сортировки в справке инструмента GP ОЧЕНЬ вводит в заблуждение. Этот инструмент был бы потрясающим, если основой сравнения мог бы быть сегмент_ID.

user14022
источник