Ho trovato questa domanda cercando di fare ciò che penso sia la stessa cosa. Volevo che tutto fosse fatto tramite arcpy. L'uso del riferimento lineare non aveva senso per me perché non avevo già gli eventi punto (e non riuscivo a capire come usare LR per ottenerli). Il punto cruciale di quello che ho finito per usare era
line = arcpy.Polyline(arrayPts)
pt = line.positionAlongLine (0.99, 'True')
Ciò richiede Arc 10.1 o successivo; Non sono riuscito a capire se questo era disponibile al di sotto del livello di licenza ArcInfo che ho (OP specificato ArcView).
Nel mio esempio sopra, volevo un punto non a una distanza fissa, ma di una percentuale della lunghezza complessiva della linea. Per fare questo, ho fornito il secondo argomento facoltativo a positionAlongLine
. Si salta il secondo argomento se si desidera solo specificare una distanza assoluta. Ecco il documento .
L'esempio di codice più completo è
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'
è la mia caratteristica Strato di linee su cui voglio individuare i punti. Funziona abbastanza velocemente. NumPyArrayToFeatureClass
è stato un modo molto carino per riportare tutti i miei punti in una featureClass (grazie al mio collega Curtis per quella parte!). Avevo sperimentato w / Append_management
ma era un po 'più lento.