У меня есть класс пространственных объектов с более чем 2000 объектами, и мне нужно сделать их отдельными классами объектов на основе поля.
Есть ли способ сделать это?
У меня есть класс пространственных объектов с более чем 2000 объектами, и мне нужно сделать их отдельными классами объектов на основе поля.
Есть ли способ сделать это?
Вы можете использовать инструмент Split By Attributes:
Разбивает входной набор данных по уникальным атрибутам
Доступны версии для:
Split By Attributes
постоянно генерирует отдельные.dbf
таблицы, а не отдельные классы пространственных объектов. Но в ArcGIS Desktop 10.6 этот же инструмент правильно генерирует отдельные шейп-файлы . Я не понимаю, почему, и получил те же выходные данные, пытаясь установить рабочий каталог в папку или базу геоданных.Вы можете добиться этого с очень простой моделью, если у вас ArcGIS 10.0 или выше.
Создайте модель с помощью итератора объектов, в котором группа по полю - это атрибут, который вы хотите выбрать, а затем отправьте выходные данные в инструмент копирования объектов, используя встроенное замещение, чтобы обеспечить уникальное имя файла. Модель показана ниже:
источник
У меня нет доступа к ArcMap 10, только 9.3, но я ожидаю, что он не будет сильно отличаться от этого.
Вы можете создать простой скрипт на Python, который проверяет ваше поле атрибута на наличие разных значений, а затем для каждого из них запускает операцию SELECT для вашего исходного Shapefile.
Если вы не знакомы со сценариями Python, все, что вам нужно сделать, это открыть IDLE (графический интерфейс Python), создать новый файл и скопировать приведенный ниже код. После адаптации кода для вашего файла my_shapefile, outputdir и my_attribute он должен работать.
источник
Видели ли вы, что инструмент Split Layer By Attributes обновлен для ArcMap 10 здесь ? Если это не работает, вы можете использовать Split (Анализ) для ваших нужд.
Пример кода:
источник
Split By Attribute
функциональность, и ваш ответ в основном оSplit [By Geometry]
.Я использовал скрипт @ AlexandreNeto и обновил его для пользователей ArcGIS 10.x. В основном вам теперь нужно импортировать «arcpy» вместо «arcgisscripting»:
источник
Это еще более простой способ сделать это ... и он выводится в GDB.
http://www.umesc.usgs.gov/management/dss/split_by_attribute_tool.html
скачать инструмент из USGS, мне понадобилось 3 минуты, чтобы сделать то, что я пытался в течение 1 часа.
источник
Я знаю, что вы можете использовать итератор в построителе моделей, но если вы предпочитаете использовать Python, вот что я придумал. Добавьте скрипт в набор инструментов с параметрами в следующем порядке: входной shpfile, поля (многозначные, полученные из ввода) и рабочее пространство. Этот сценарий разбивает шейп-файл на несколько шейп-файлов на основе выбранных полей и выводит их в папку по вашему выбору.
источник
В конце концов я получил его работать с SearchCursor и Select_analysis
источник
Я не знаком с инструментами Iterate Feature Selection в ModelBuilder, но экспортирую именно так, как код Python указывает, что они могут быть вызваны с использованием arcpy.
источник
Вы можете использовать Курсор Поиска, чтобы пройтись по отдельным объектам в классе объектов и записать только геометрии в уникальные классы объектов. В этом примере я использую класс объектов США и экспортирую штаты в новые шейп-файлы:
источник
cursor
операций.Вы можете использовать маркер геометрии (SHAPE @) в Copy Features (Управление данными) для экспорта каждого объекта.
источник
В Arcpy Курсоры уважают выбор слоя / TableView. Согласно Получение списка выбранных объектов в ArcGIS for Desktop с использованием кода Python? , вы можете просто повторять выбор объектов.
Однако, если вы хотите сделать выбор с использованием arcpy, используйте инструмент SelectLayerByAttribute_management .
источник