У меня есть начальная точка и конечная точка полилинии. Как я могу получить точку на этой полилинии из конечных точек, указанных на данном расстоянии.
Как я могу получить это, используя arcpy, при условии, что этот скрипт должен работать на ArcView без импорта каких-либо модулей ( как этот ответ ). Я стараюсь не жестко кодировать значения.
Связанный вопрос:
arcpy
line
linear-referencing
пользователь
источник
источник
object.interpolate(distance[, normalized=False])
. Это метод arcpy? Если это так, вы можете опубликовать ссылку. Я гуглил это, но не нашел это.Ответы:
Это похоже на «Линейные ссылки», и этот набор инструментов будет доступен в ArcView. Кроме того, вы можете написать этот инструмент очень легко.
Ссылка на справку ESRI для линейных ссылок
источник
Исходя из ваших потребностей, как упоминал @LouisH, использование Linear Referencing - определенно лучший способ. Я собрал воедино некоторый код, который должен отвечать вашим потребностям не в жестком кодировании элементов, а в запросе их в качестве параметров.
В качестве объяснения, инструмент «Линейные ссылки», используемый ниже, берет «Маршруты», в вашем случае линейные объекты, и размещает «События», в вашем случае - точки вдоль них на основе поля расстояния. Это приводит к FeatureLayer, который хранится в памяти, что является причиной последней функции, которая копирует объекты в выходной класс пространственных объектов.
Редактировать - одна вещь, о которой следует подумать с этим инструментом, и, вероятно, любая операция по нахождению точек на основе расстояния от конца линии - это то, с какого конца линии вы начнете. Например, инструмент линейных ссылок работает на основе оцифрованного направления линии. Будет важно убедиться, что у вас есть какой-то способ определения конечной точки, на которой основаны ваши измерения.
источник
Решение линейной эталонной задачи
without importing any modules
за пределами моей компетенции.Я использовал
Shapely
(пакет Python для манипулирования и анализа 2D геопространственных геометрий. И это BSD лицензировано :-))скачать его отсюда . Версия 2.6, единственная, которая поддерживает arcgis 10 arcpy. Это простая установка (размер 1,5 МБ)
и теперь вот Arcpy скрипт для достижения цели .. прости мой питон .. только сегодня я узнал о циклах, кортежах и т.д. :)
примечание : это не будет работать, если у объекта есть сегменты кривой
источник
Я нашел этот вопрос, пытаясь сделать то, что я думаю, то же самое. Я хотел, чтобы все было сделано через arcpy. Использование линейных ссылок не имело смысла для меня, потому что у меня еще нет точечных событий (и я не мог понять, как использовать LR для их получения). Суть того, что я использовал, была
Для этого требуется Arc 10.1 или выше; Я не смог выяснить, было ли это доступно ниже уровня лицензирования ArcInfo, который у меня есть (OP указал ArcView).
В моем примере выше я хотел, чтобы точка находилась не на фиксированном расстоянии, а в процентах от общей длины линии. Для этого я предоставил второй необязательный аргумент
positionAlongLine
. Вы пропускаете второй аргумент, если хотите просто указать абсолютное расстояние. Вот док .Более полный пример кода
'flFL'
это мой FeatureLayer линий, на которых я хочу, чтобы найти точки. Работает довольно быстро.NumPyArrayToFeatureClass
был очень хороший способ сбросить все мои очки обратно в FeatureClass (спасибо моей коллеге Кертис за эту часть!). Экспериментировал,Append_management
но это было немного медленнее.источник
Это может быть излишним, но если у вас есть доступ к расширению Network Analysis, вы можете создать сеть из ваших полилиний, а затем создать зоны обслуживания вокруг ваших точек ввода, указав размер SA в качестве расстояния интереса. Вот краткий пример с 111-метровой СА от точки:
Тогда вам нужно будет найти точки, где SA пересекает линию.
источник
Я думаю, что вы можете получить его с помощью метода Feature Vertices To Points (Управление данными). Вы можете получить больше информации здесь .
или вы можете проверить Split Line At Point (Управление данными) здесь .
их недостаточно, но вы можете написать свой собственный код ...
я надеюсь, что это поможет вам ...
источник