利用python遍历输出arcgis中线或面的折点坐标
先上代码,后附详解
运行结果:
import arcpy
导入模块,因为用到 arcpy,因此请在 python2.7 环境中运行此代码
fc = r’E:\a\cs.gdb\cs’
输入FeatureClass,此处用到 E盘中 cs.gdb中的 cs 图层
for row in arcpy.da.SearchCursor(fc,[“OID@”,“SHAPE@”]):
SearchCursor 函数用于在要素类或表上建立只读游标。SearchCursor 可用于遍历 Row 对象并提取字段值,注意的是自 ArcGIS 10.1 起,此功能已由 arcpy.da.SearchCursor 取代
print("Feature{}:".format(row[0]))
输出要素编号,即上图运行结果中的Feature1,2,3
part_num = 1
for part in row[1]:
print("Part{}:".format(part_num))
判断图形是否由多个图形合并,如有合并将输出多个part,如上图运行结果中的Feature3示例
pt_num = 1
for point in part:
if point:
print("Point{}:{},{}".format(pt_num,point.X,point.Y))
else:
print("Interior Ring:")
pt_num -= 1
pt_num += 1
part_num += 1
循环输出折点坐标,坐标输出顺序方式为顺时针输出
当然,我们最终也可以直接将坐标信息直接输出到文本中,加几行代码而已。
完整代码:
import arcpy
fc = r’E:\a\cs.gdb\cs’
for row in arcpy.da.SearchCursor(fc,[“OID@”,“SHAPE@”]):
print(“Feature{}:”.format(row[0]))
part_num = 1
for part in row[1]:
print(“Part{}:”.format(part_num))
pt_num = 1
for point in part:
if point:
print(“Point{}:{},{}”.format(pt_num,point.X,point.Y))
else:
print(“Interior Ring:”)
pt_num -= 1
pt_num += 1
part_num += 1