Bu soruyu aynı şey olduğunu düşündüğüm şeyi yapmaya çalışırken buldum. Her şeyin arcpy ile yapılmasını istedim. Doğrusal Referans'ı kullanmak benim için anlamlı değildi çünkü nokta olayları zaten yok (ve bunları elde etmek için LR'yi nasıl kullanacağımı anlayamadım). Sonunda kullandığım şey,
line = arcpy.Polyline(arrayPts)
pt = line.positionAlongLine (0.99, 'True')
Bunun için Ark 10.1 veya üstü gerekir; Bunun sahip olduğum ArcInfo lisanslama düzeyinin altında olup olmadığını anlayamadım (OP belirtilen ArcView).
Yukarıdaki örneğimde, sabit bir mesafede değil, toplam hat uzunluğunun yüzdesi ile bir nokta istedim. Bunu yapmak için ikinci isteğe bağlı argümanı sağladım positionAlongLine
. Yalnızca mutlak bir mesafe belirtmek istiyorsanız, ikinci argümanı atlarsınız. İşte doktor .
Daha dolgun kod örneği
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'
Noktaları bulmak istediğim satırların katmanı. Oldukça hızlı çalışır. NumPyArrayToFeatureClass
tüm puanlarımı tekrar bir featureClass'a dökmenin çok güzel bir yoluydu (bu bölüm için meslektaşım Curtis'e teşekkürler!). W deniyordu Append_management
ama bu biraz daha yavaştı.