Я нашел этот вопрос, пытаясь сделать то, что я думаю, то же самое. Я хотел, чтобы все было сделано через arcpy. Использование линейных ссылок не имело смысла для меня, потому что у меня еще нет точечных событий (и я не мог понять, как использовать LR для их получения). Суть того, что я использовал, была
line = arcpy.Polyline(arrayPts)
pt = line.positionAlongLine (0.99, 'True')
Для этого требуется Arc 10.1 или выше; Я не смог выяснить, было ли это доступно ниже уровня лицензирования ArcInfo, который у меня есть (OP указал ArcView).
В моем примере выше я хотел, чтобы точка находилась не на фиксированном расстоянии, а в процентах от общей длины линии. Для этого я предоставил второй необязательный аргумент positionAlongLine
. Вы пропускаете второй аргумент, если хотите просто указать абсолютное расстояние. Вот док .
Более полный пример кода
import numpy
ptsList = list()
id = 0
with arcpy.da.SearchCursor('flFL', ["SHAPE@"]) as cursor:
for row in cursor:
arrayPts = row[0].getPart()
line = arcpy.Polyline(arrayPts)
pt = line.positionAlongLine (0.99, 'True')
ptsList.append((id, (pt.getPart().X, pt.getPart().Y)))
id += 1
array = numpy.array([ptsList], \
numpy.dtype([('idfield',numpy.int32),('XY', '<f8', 2)]))
SR = arcpy.Describe("flFL").spatialReference
arcpy.da.NumPyArrayToFeatureClass(array, 'nsegSamplePts', ['XY'], SR)
'flFL'
это мой FeatureLayer линий, на которых я хочу, чтобы найти точки. Работает довольно быстро. NumPyArrayToFeatureClass
был очень хороший способ сбросить все мои очки обратно в FeatureClass (спасибо моей коллеге Кертис за эту часть!). Экспериментировал, Append_management
но это было немного медленнее.