ГИС-проекты могут требовать обновления данных с сохранением предыдущих записей, например ежедневные обновления, которые приходят из других систем не в режиме реального времени, а пакетно.
В этом случае может использоваться стандартный инструмент геообработки Append (Присоединить), однако к этому инструменту есть вопросы в плане скорости операции присоединения, и эта скорость отличается для инструмента внутри ArcGIS Pro и ArcMap. Если операция присоединения разовая, то наверно скоростью выполнения можно пренебречь, но в других случаях это может быть критично.
В нашем тесте мы присоединяли 400 новых точек к классу пространственных объектов в файловой базе геоданных, в котором уже содержится 13 млн записей. Для этого использовали инструмент Append (Присоединить):
- В ArcMap версии 10.7.1 эта операция заняла — 5 минут
- В ArcGIS Pro версии 2.6.3 — 20 секунд
Как видите, скорость отличается значительно, но еще более быстрый результат удалось получить с помощью класса ArcPy (доступно в ArcMap и Pro) — arcpy.da.InsertCursor. В этом случае операция присоединения заняла доли секунды. Для этого потребуется написать небольшой скрипт. Одна из его реализаций может быть следующая:
# Путь к данным
for_append = r’D:\test\TMP.gdb\for_append’
target = r’D:\test\test_append.gdb\target’
# Сопоставление полей между таблицами через их порядок. Даже если имена полностью совпадают, проверьте порядок полей.
source_fields = [‘field_1_source’, ‘field_2_source’, ‘field_3_source’]
target_fields= [‘field1’, ‘field2’, ‘field3’]
del cursor