如何将数据按照空间顺序,从上到下,从左至右自增。今天我们就来分享使用ArcGIS脚本工具将点数据进行排序并编号,文末我们会附上点数据和直接使用的脚本工具。

我们先来看一下我们要达到的效果图:

详细步骤:
第一步:打开点要素,在属性表中添加X和Y两个字段。

第二步:使用sort工具,将X和Y字段作为排序字段,生成排序后的点数据。

第三步:添加一个排序结果字段,将OBJECTID字段值赋给这个字段。

第四步:创建脚本工具

①首先创建工具箱

②添加脚本

③打开脚本工具创建向导,填写信息

④添加Python脚本,加载已经写好的Python文件(*.py格式),Python脚本的思路主要为:
首先规划好该工具需要多少个参数;

# Script Tool Parameters
InputFeature = arcpy.GetParameterAsText(0)
Order = arcpy.GetParameterAsText(1)
Sort_X = arcpy.GetParameterAsText(2)
Sort_Y = arcpy.GetParameterAsText(3)
OutputFeature = arcpy.GetParameterAsText(4)

然后使用arcpy.CopyFeatures_management()将原数据复制一下;
再使用arcpy.AddXY_management()将复制得到的数据添加XY两个字段,随后判断一下点排序的大体方向。
这里要注意一下,由于编码问题,当代码有中文字符,需要使用.decode()方法解码中文,不然工具运行时会报错。

if Order == ‘横向’.decode(‘UTF-8’):
sortfield = [[“POINT_Y”, Sort_Y],[“POINT_X”, Sort_X] ]
elif Order == ‘纵向’.decode(‘UTF-8’):
sortfield = [[“POINT_X”, Sort_X],[“POINT_Y”, Sort_Y]]

接着用arcpy.AddField_management()添加排序编号字段,使用arcpy.Sort_management(),生成排序后数据;最终使用工具arcpy.CalculateField_management(),将OBJECTID字段值赋给这个字段;
python脚本完成!所有代码如下:

import arcpy
import time
# Script Tool Parameters
InputFeature = arcpy.GetParameterAsText(0)
Order = arcpy.GetParameterAsText(1)
Sort_X = arcpy.GetParameterAsText(2)
Sort_Y = arcpy.GetParameterAsText(3)
OutputFeature = arcpy.GetParameterAsText(4)
tempfea = InputFeature+str(time.time()).split(‘.’)[0][-5:-1]
arcpy.CopyFeatures_management(InputFeature, tempfea)
arcpy.AddXY_management(tempfea)
if Order == ‘横向’.decode(‘UTF-8’):
sortfield = [[“POINT_Y”, Sort_Y],[“POINT_X”, Sort_X] ]
elif Order == ‘纵向’.decode(‘UTF-8’):
sortfield = [[“POINT_X”, Sort_X],[“POINT_Y”, Sort_Y]]
arcpy.Sort_management(tempfea,OutputFeature,sortfield)
arcpy.AddField_management(OutputFeature,’order1′,’DOUBLE’)
arcpy.CalculateField_management(OutputFeature, ‘order1′,’!OBJEC

第五步:下一步,添加界面参数,这一步很重要,各个参数属性要逐个填入,分别如下,其中Order、Sort_X、Sort_Y属于list参数。

 

设置完成后,点击finish,脚步工具创建完成!

第六步:对上述的三个参数设置list列表

①点击脚本工具的属性

②切换至验证选项卡(Validation),点击Edit,编辑验证代码,添加如下3行代码

self.params[1].filter.list = [‘横向’,’纵向’]
self.params[2].filter.list = [“ASCENDING”,”DESCENDING”]
self.params[3].filter.list = [“ASCENDING”,”DESCENDING”]

至此,ArcGIS的点排序编号脚本工具基本完成,为了方便别人使用,可以添加描述等辅助。

①打开工具描述

②编辑工具信息

体验一下该工具:

查看结果编号:

编号结果


文件链接:https://pan.baidu.com/s/1CSwvph2Q5Cp46a-ICk6k4w

提取码:2fkt

获取更多技术分享,请关注公众号:GIS点滴

ArcGIS暑期充电开启啦!!!

培训时间:2019.07.01-2019.07.03地点:北京报名方式:扫描下方二维码

QQ交流群:982967721

Tip:成功报名后,可通过邮箱查收会议通知一号文件和二号文件。

成功报名的学员可以公众号私信大栗子老师哦,免费获取价值3500元线下制图视频课程,更有海量GIS数据免费赠送