Как можно вычислить среднюю точку полилинии, используя инфраструктуру геообработки , например, в скрипте Python?
Свойство polyline.centroid возвращает истинный центроид, если он находится внутри или внутри объекта; в противном случае точка метки возвращается . Центроид редко расположен на неровных линиях, что бесполезно для моих целей.
У инструмента Feature Vertices to Points есть опция midpoint, но для этого требуется ArcInfo, которого у меня сейчас нет.
Одним из вариантов может быть добавление мер к полилиниям и создание события маршрута на 50% вдоль линии.
Другой обходной путь - использовать опцию Calculate Geometry в ArcMap, но в идеале мне нужно автоматизировать этот процесс в скрипте.
Есть предложения лучше / быстрее?
На данный момент я ограничен ArcGIS 10.0 (без доступа к лицензии уровня ArcInfo).
источник
Ответы:
Класс Polyline имеет новый метод с именем "positionAlongLine" в ArcGIS 10.1. Это вернет объект PointGeometry с ровно одной точкой на указанном расстоянии от начального конца линии или долей расстояния между началом и концом . Чтобы найти середину, вам просто нужно сделать
positionAlongLine(0.5,True)
. Чтобы найти середины для линий и добавить их координаты в таблицу атрибутов, вы можете использовать Калькулятор поля для следующего оператора:!Shape!.positionAlongLine(0.5,True).firstPoint.X
!Shape!.positionAlongLine(0.5,True).firstPoint.Y
Обратите внимание, что для этого нужно использовать анализатор Python в полевом калькуляторе.
Если вы хотите получить доступ к этому точечному объекту в Python, вы просто сделаете следующее:
источник
С лицензией ET Geo Wizards вы можете попробовать функцию «Полилиния в точку» с опцией «Средние точки» и «Удалить повторяющиеся точки» (необязательно): http://www.ian-ko.com/ET_GeoWizards/UserGuide/convertPl2Pnt. HTM
Вы можете реализовать ET Geo Wizards следующим образом:
Входные переменные функции ET см. По адресу : http://www.ian-ko.com/ET_GeoWizards/UserGuide/Scripting/scripting_PolylineToPoint.htm.
источник