Я знайшов це питання, намагаючись зробити те, що, на мою думку, те саме. Я хотів, щоб це все було зроблено за допомогою arcpy. Використання лінійних довідок для мене не мало сенсу, оскільки я вже не маю точкових подій (і я не міг зрозуміти, як використовувати LR, щоб отримати їх). Суть у тому, що я в кінцевому підсумку використав, було
line = arcpy.Polyline(arrayPts)
pt = line.positionAlongLine (0.99, 'True')
Для цього потрібна дуга 10.1 або вище; Я не зміг розібратися, чи доступна вона нижче рівня ліцензування ArcInfo, який у мене є (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'
є моєю особливістю Шар рядків, на яких я хочу знайти точки. Бігає досить швидко. NumPyArrayToFeatureClass
Це був дуже приємний спосіб скинути всі мої точки назад у функціональний клас (дякую моєму колезі Кертісу за цю частину!). Експериментував з / Append_management
але це було досить повільно.