У меня есть ArcGIS Desktop 10.2, и моя задача состоит в том, как извлечь число вершин в каждом многоугольнике для всех функций, подобных этой:
У меня есть много участков в моем классе объектов, и я хочу извлечь количество вершин для всех объектов отдельно, затем я хочу отобразить координаты XY для всех вершин.
для получения дополнительной информации я просто хочу преобразовать вершины для каждого многоугольника и отобразить количество каждой вершины, начиная с 1 числа, поэтому, если у меня есть многоугольник, и у него есть 4 вершины, хочу преобразовать многоугольник в вершины, я отображаю количество вершин, подобное этому (1,2,3,4,5), затем отображая xy для каждой вершины, я думаю, что настоящая задача заключается в том, как преобразовать все многоугольники в вершины и сделать каждое число вершин, начиная с 1 числа.
источник
Ответы:
Код ниже объединяет другие ответы и добавляет немного для нумерации вершин.
Точки помечены в порядке рисования. Последняя точка (под первой) не будет иметь метки и может быть удалена путем выбора всех точек с нулевым или уникальным значением «DRAW_ORDER», если они не нужны для реконструкции. Запрос определения может быть использован для удаления перекрывающихся точек с дисплея.
Данные XY присутствуют, но я оставлю это на ваше усмотрение маркировки / отображения. См. Ответ Аарона о добавлении поля XY для маркировки.
Я также играл с FeatureClass для массива numpy, но сначала я закончил.
источник
Самый простой способ сделать это - добавить новое целочисленное поле в таблицу атрибутов слоя участков. Затем запустите калькулятор поля со следующим выражением:
!Shape!.pointCount
Возвращает общее число вершин в этой функции. Однако первая вершина каждой части повторяется в конце, чтобы закрыть объект. Чтобы справиться с этим, вычтите одну вершину для каждой части, используя-!Shape!.partCount
.Обратите внимание, что для работы этого выражения вам придется использовать анализатор Python.
источник
SearchCursor
метод в ответе Аарона или инструмент геообработки, такой как Feature Vertices To Points (хотя для этого инструмента требуется лицензия ArcGIS for Desktop Advanced).Dmahr предоставил хорошее решение для подсчета вершин. Для непрограммного способа обозначить каждую точку с помощью координат XY, попробуйте следующий рабочий процесс:
Вычислить поле "XY" в полевом калькуляторе, где XY =
str (! x!) + "," + str (! y!)
Особенности этикетки. Щелкните правой кнопкой мыши слой> Метки> Поле метки: XY
Это дает следующие результаты:
Вы также можете выполнить эти действия с помощью программно
explode_to_points
с помощью поиска курсора (как начало).источник
Если кто-то не хочет вычислять новое поле и просто хочет очень быстро получить количество вершин на слой (для целей обобщения, например, при представлении наборов данных в Интернете), то можно создать собственный инструмент-скрипт внутри панель инструментов или представить код как надстройку Python.
Пользовательский код скрипта:
Код надстройки Python (выберите слой в оглавлении для подсчета вершин):
источник