У меня есть класс объектов в файловой базе геоданных Esri. Когда я редактирую объекты с помощью редактора в ArcMap и удаляю большинство своих объектов и сохраняю только те из них, которые находятся в середине, команда масштабирования до слоя не работает должным образом. Вместо увеличения масштаба элементов, остающихся в классе объектов, экстент будет прежним (содержащий все удаленные объекты). При просмотре значений экстента в диалоговом окне свойств для класса пространственных объектов я отчетливо вижу старые значения. Таким образом, сеанс редактирования, похоже, не изменяет значения полного экстента.
Есть ли способ пересчитать эти значения?
Я уверен, что эта проблема должна возникнуть у всех, кто редактирует объекты в ArcMap ...
arcgis-desktop
arcmap
editing
file-geodatabase
extents
Offermann
источник
источник
Ответы:
У Esri теперь есть инструмент для этого в 10.4 (ура): пересчитать класс пространственных объектов.
Я столкнулся с этой проблемой, когда создавал класс пространственных объектов и записывал в него геометрию с помощью arcpy. Очевидно, эти инструменты не обновляют экстент (вероятно, это хорошая идея по соображениям производительности).
Я успешно сбросил экстент в 10.2.2 с предложением @Lou:
источник
Щелкните правой кнопкой мыши класс объектов в ArcCatalog и перейдите в Свойства. На вкладке «Расширение возможностей» нажмите «Пересчитать». И вуаля!
Я использую ArcGIS 10.2.1
источник
Сжатие базы геоданных приведёт в порядок ваш пространственный индекс
«Если вы часто добавляете и удаляете данные, вам следует ежемесячно сжимать свою файловую или персональную базу геоданных. Вы также должны сжимать базу геоданных после любого крупномасштабного изменения. доступ к данным в каждом файле возможен более эффективно. Сжатие также уменьшает размер каждого файла - можно уменьшить размер базы геоданных наполовину или более ».
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Compacting_file_and_personal_geodatabases/003n0000007t000000/
Компакт (Управление данными)
«Рекомендуется сжимать персональные базы геоданных, когда они становятся больше 250 МБ. Если ввод, удаление или общее редактирование данных часто выполняется в базе данных, базу данных следует регулярно сжимать для обеспечения оптимальной производительности».
http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000000n000000
источник
Вот надстройка ArcCatalog для ArcGIS 10, которая добавляет команду для обновления экстента класса пространственных объектов, вероятно, с использованием того же метода, что и код VBA @ Ragi:
источник
Экстент GeoDatabase всегда расширяется - никогда не укорачивается автоматически. Сжатие и сжатие только оптимизирует хранение и фрагментацию, но не сам экстент. Я бы сначала попытался воссоздать пространственный индекс и посмотреть, поможет ли это.
Обновить:
Поскольку перестройка пространственного индекса не помогает, я уверен, что следующий код VBA подойдет:
Вы можете сделать это на любом другом языке программирования, поддерживаемом ESRI. Хитрость заключается в том, чтобы получить схему и использовать метод IFeatureClassManage :: UpdateExtent .
источник
Я не знаю точно, что вызывает это в файловых базах геоданных, но я действительно могу воспроизвести это, и я столкнулся с этим раньше. Единственный способ узнать, как это обойти, - сжать файловую базу геоданных. Это решит проблему степени. Вам нужно будет распаковать его, когда вы закончите, потому что вы не можете редактировать сжатую файловую базу геоданных.
Во время сеанса редактирования / ArcMap, когда вы фактически используете данные, вы всегда можете выбрать все | увеличить в качестве обходного пути. Это не очень хорошо, но я использовал это в своем рабочем процессе, пока не добрался до критической точки, где я мог сделать этот трюк сжатия / распаковки.
Обратите внимание, сжатие не будет работать (по крайней мере, ненадежно). Он перестроит ваши индексы, но я нашел его ненадежным для исправления проблем экстентов. Это все еще то, что вы должны делать время от времени. Я просто попробовал это снова прямо сейчас, и это не сработало на моем образце набора данных. YMMV.
источник
Если вы хотите обновить класс функций в своем документе MXD, этот фрагмент кода может вам помочь:
источник