この質問は、私が同じことだと思うことを実行しようとしているのに気づきました。私はそれをすべてarcpyで実行したかった。ポイントイベントがまだないため(そしてLRを使用してそれらを取得する方法を理解できなかったため)、線形参照の使用は意味がありませんでした。最終的に私が使用したものの核心は
line = arcpy.Polyline(arrayPts)
pt = line.positionAlongLine (0.99, 'True')
これには、Arc 10.1以降が必要です。私が持っているArcInfoライセンスレベル(OPで指定されたArcView)よりも低いレベルで利用できるかどうかを確認できませんでした。
上記の例では、一定の距離ではなく、ライン全体の長さの割合でポイントが必要でした。これを行うために、2番目のオプションの引数をに指定しましたpositionAlongLine
。絶対距離を指定するだけの場合は、2番目の引数をスキップします。こちらがドキュメントです。
完全なコードサンプルは
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に戻す非常に良い方法でした(その部分については同僚のCurtisに感謝します!)。と実験してAppend_management
いたが、それはかなり遅い。