Tôi thấy câu hỏi này cố gắng làm những gì tôi nghĩ là điều tương tự. Tôi muốn tất cả được thực hiện thông qua arcpy. Sử dụng Tham chiếu tuyến tính không có ý nghĩa với tôi vì tôi chưa có các sự kiện điểm (và tôi không thể tìm ra cách sử dụng LR để có được chúng). Mấu chốt của những gì tôi đã sử dụng là
line = arcpy.Polyline(arrayPts)
pt = line.positionAlongLine (0.99, 'True')
Điều này đòi hỏi Arc 10.1 trở lên; Tôi không thể biết liệu điều này có khả dụng dưới mức cấp phép ArcInfo mà tôi có hay không (OP được chỉ định ArcView).
Trong ví dụ của tôi ở trên, tôi muốn một điểm không ở một khoảng cách cố định, nhưng bằng một tỷ lệ phần trăm của chiều dài đường tổng thể. Để làm điều này, tôi đã cung cấp đối số tùy chọn thứ hai cho positionAlongLine
. Bạn bỏ qua đối số thứ hai nếu bạn chỉ muốn chỉ định một khoảng cách tuyệt đối. Đây là tài liệu .
Mẫu mã đầy đủ hơn là
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'
là tính năng của tôi Người chơi các dòng mà tôi muốn xác định vị trí các điểm. Chạy khá nhanh. NumPyArrayToFeatureClass
là một cách rất hay để chuyển tất cả các điểm của tôi trở lại thành một tính năng (cảm ơn đồng nghiệp của tôi, Curtis cho phần đó!). Đã được thử nghiệm w / Append_management
nhưng đó là một chút chậm hơn.