У меня есть несколько объектов полилинии в Python. Теперь я хочу получить все точки полилиний.
Например, если полилиния имеет [0,0]
конечную точку начальной точки [5,5]
. Результат: [1,1];[2,2];[3,3];[4,4];[5,5]
.
Я хочу найти все целые точки на этой линии, включая конечные точки. Для прямой это очень просто, но если полилиния имеет типы геометрии Beizer Curve, Circular Arc, Elliptic Arc, то как я могу это сделать?
РЕДАКТИРОВАТЬ:
Я могу использовать только те инструменты, которые доступны на всех уровнях лицензии ArcGIS. Например, ArcGIS Basic.
arcpy
point
features
geometry-conversion
пользователь
источник
источник
Ответы:
Я знаю, что это старый, но я искал то же самое, поскольку у меня нет ArcInfo для инструментов FeatureVerticesToPoints . После использования вышеуказанного решения для поиска курсора я пошел дальше, чтобы упростить код, и обнаружил, что с помощью массивов NumPy в модуле доступа к данным можно создать простой и очень быстрый скрипт. Я использую это как инструмент скрипта.
Примечание: ключ является
explode_to_points
параметром вarcpy.da.FeatureClassToNumPyArray
Вот ссылка на ArcGIS Repository Location: класс объектов в точках
источник
ctrl-k
применить форматирование кода (то же самое дляb
старого иi
талического). По соглашению мы стараемся избегать таких разговоров, как «привет», «спасибо», «ура». Они подразумеваются как присутствующие всегда, и помогают укрепить идею, что это место отличается от обычных форумов и электронной почты. Добро пожаловать на борт.Как я понял, вам нужно увеличить количество вершин для ваших полилиний. А также для преобразования всех сегментов «Кривая Бейзера, Круговая дуга, Эллиптическая дуга» в несколько отрезков.
Для этой задачи в ArcGIS вы можете использовать инструмент Densify (Editing) в ArcToolbox.
Затем вы можете преобразовать вершины ваших полилиний в точечные объекты, как предложили Даррен Коуп и artwork21.
Если вы предпочитаете делать это в ArcMap, взгляните на Создание новых точек по линии справки.
источник
Следующее должно работать с полилиниями и полигонами:
Для некоторых дорожных данных Великобритании я получаю это; вложенный список пар X, Y для каждой вершины, составляющей ломаную линию:
источник
print pnt.X, pnt.Y
сpart_list.append([pnt.X, pnt.Y])
. И вы печатаете это в конце цикла. Как ваш код может получить все точки линии, а код ESRI - нет?Как предположил Даррен Коуп, преобразование слоя в точечные вершины может быть выполнено с помощью инструмента « Вершины элементов в точки» .
Вот фрагмент кода Python:
источник