【ArcGIS】PointsToLine执行报999999错误的一种解决方案
程序员文章站
2023-12-26 15:31:39
...
ArcToolbox / 数据管理工具 / 要素 / 点集转线
PointsToLine
的功能为将离散点连接成折线,使用该工具时需要指定用于转折线的点图层(输入要素)、用于区别不同个体的ID字段(线字段),用于确定点连接顺序的排序字段。该功能一个很常见用处就是将出租车GPS信号连接成连续的折线。
按照使用要求做好设置,执行时报999999
错误,原因不明。该问题的解决方案之一:
- 新建一个空的点要素类,为该要素类添加ID、ORDER_FIELD两个字段,分别用于保存原点要素类的线字段和排序字段;
- 将原点要素类的各个要素复制到新要素类中,做好线字段和排序字段的映射。因为数据量比较大,我采用
arcpy.da.InsertCursor()
把原点要素类的要素及其字段插入到新点要素类; - 在该新要素类上执行点集转线方法,成功。
附:插入要素脚本
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import arcpy
in_fc = ""
out_fc = ""
search_fields = ["x", "y", "id_field", "order_field"]
insert_fields = ("[email protected]", "ID", "ORDER_FIELD")
with arcpy.da.InsertCursor(out_fc, insert_fields) as insert_cursor:
with arcpy.da.SearchCursor(in_fc, search_fields) as search_cursor:
for srow in search_cursor:
x = srow[0]
y = srow[1]
point = arcpy.Point(x, y)
id_field = srow[2]
order_field = srow[3]
insert_cursor.insertRow((point, id_field, order_field))
print "---------- Done! ----------"