本帖最后由 大栗子 于 2019-6-28 17:21 编辑

今天我们就来分享使用ArcGIS脚本工具将点数据进行排序并编号,文末我们会附上点数据和直接使用的脚本工具。

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

2.webp.jpg (18.93 KB, 下载次数: 0)

2019-6-28 17:07 上传

详细步骤:

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

3.webp.jpg (102.42 KB, 下载次数: 1)

2019-6-28 17:07 上传

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

4.webp.jpg (47.67 KB, 下载次数: 2)

2019-6-28 17:07 上传

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

5.webp.jpg (100.74 KB, 下载次数: 3)

2019-6-28 17:07 上传

第四步:创建脚本工具

①首先创建工具箱

6.webp.jpg (24.87 KB, 下载次数: 1)

2019-6-28 17:07 上传

②添加脚本

7.webp.jpg (52.46 KB, 下载次数: 0)

2019-6-28 17:07 上传

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

8.webp.jpg (31.02 KB, 下载次数: 0)

2019-6-28 17:07 上传

④添加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参数。

9.webp.jpg (34.55 KB, 下载次数: 0)

2019-6-28 17:07 上传

10.webp.jpg (49.63 KB, 下载次数: 0)

2019-6-28 17:07 上传

11.webp.jpg (40.54 KB, 下载次数: 0)

2019-6-28 17:07 上传

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

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

①点击脚本工具的属性

12.webp.jpg (27.49 KB, 下载次数: 0)

2019-6-28 17:07 上传

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

self.params[1].filter.list = ['横向','纵向']

self.params[2].filter.list = ["ASCENDING","DESCENDING"]

self.params[3].filter.list = ["ASCENDING","DESCENDING"]

13.webp.jpg (75.92 KB, 下载次数: 0)

2019-6-28 17:07 上传

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

①打开工具描述

14.webp.jpg (26.47 KB, 下载次数: 1)

2019-6-28 17:07 上传

②编辑工具信息

15.webp.jpg (19.5 KB, 下载次数: 0)

2019-6-28 17:07 上传

体验一下该工具:

16.webp.jpg (26.22 KB, 下载次数: 1)

2019-6-28 17:07 上传

工具界面

查看结果编号:

17.webp.jpg (46.21 KB, 下载次数: 0)

2019-6-28 17:12 上传

工具结果

18.webp.jpg (30.18 KB, 下载次数: 0)

2019-6-28 17:10 上传

编号结果

提取码:2fkt

arcgis怎么用python重新排序,使用ArcGIS脚本工具将点数据进行排序并编号相关推荐

  1. arcgis下的python编程-基于ArcGIS的Python编程秘笈(第2版)

    基于ArcGIS的Python编程秘笈(第2版) 译者简介 审阅人简介 1 面向ArcGIS的Python语言基础 1.1 使用IDLE进行Python脚本开发 1.1.1 Python Shell窗 ...

  2. arcgis下的python编程-面向ArcGIS的Python脚本编程

    面向arcgis的python脚本编程是一本指导ArcGIS for Desktop专业用户进行Python开发的指南,本书将教会您如何通过编写Python代码处理空间数据并在ArcGIS中自动化实现 ...

  3. arcgis怎么用python重新排序_python - 根据排序数据添加新的顺序ID号(ArcGIS) - 堆栈内存溢出...

    我需要一行代码,它将根据我为数据规定的顺序发出新的顺序ID. 基本上,在按照我的喜好对数据进行排序后,原始的Object_Id对我来说不再是有意义的顺序. 在我的表中,我创建了一个新字段(短整数). ...

  4. 【ArcGIS遇上Python】从入门到精通系列之第一章:ArcGIS Python简介

    文章目录 1. Python简介 2. Python的特点 3. ArcGIS的脚本语言 4. ArcGIS中的Python脚本编辑器 1. Python简介 Python是一种跨平台的计算机程序设计 ...

  5. 在ArcGIS中创建Python工具(三)

    从 ArcGIS 10.1 版本开始,我们可以创建 python工具箱 来自定义脚本工具,这种工具箱相比较上一篇提到的标准工具箱.有着独特的优势,具体二者的区别总结过,看这一篇. 认识 Python工 ...

  6. ArcGIS使用Python脚本工具

    在Pyhton写的一些代码,用户交互不方便,用户体验比较差,不方便重用.在ArcGIS中可以将用写的Python代码导入到ToolBox中,这样用起来就比较方便了.这里用按要素裁剪栅格的Python来 ...

  7. arcgis python工具-ArcGIS使用Python脚本工具

    在Pyhton写的一些代码,用户交互不方便,用户体验比较差,不方便重用.在ArcGIS中可以将用写的Python代码导入到ToolBox中,这样用起来就比较方便了.这里用按要素裁剪栅格的Python来 ...

  8. arcgis python实例_arcgis python脚本工具实例教程—栅格范围提取至多边形要素类

    arcgis python脚本工具实例教程-栅格范围提取至多边形要素类 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 功能:提取栅格数据的范围, ...

  9. python编写arcgis脚本教程_ArcGIS使用Python脚本工具

    在Pyhton写的一些代码,用户交互不方便,用户体验比较差,不方便重用.在ArcGIS中可以将用写的Python代码导入到ToolBox中,这样用起来就比较方便了.这里用按要素裁剪栅格的Python来 ...

最新文章

  1. 揭开J2EE集群的神秘面纱(一):什么是J2EE集群
  2. 聊聊spring security的permitAll以及webIgnore
  3. 环形链表II—leetcode142
  4. bind1st bind2nd的使用
  5. mysql 数据类型怎么用,myMySQL数据库怎么更改表中某字段的数据类型? MySQL数据库使用教程...
  6. ios运行html游戏,Objective-c / iOS – 使用Safari打开本地html文件
  7. KVM(五)libvirt 介绍
  8. 利用Outlook应用程序接口执行Shellcode
  9. NI视觉视觉软件简介
  10. WIN7安装IIS后无默认网站(Default Web site)解决方案
  11. 基于bert的情感分类
  12. linux rpm是什么意思中文,rpm是什么意思
  13. bootstrap之invalid-feedback
  14. php幻灯片调大小,ppt尺寸设置 PPT幻灯片大小更改为标准或宽屏
  15. 插了T管引流,该注意点啥
  16. 增加对ARM64和X86的硬件预取控制驱动的支持
  17. 系统稳定神器supervisor
  18. Python 第二十八章 网络初识+五层协议+三次握手四次挥手
  19. vim安装配置coc.vim实现语言的自动补全
  20. 为杰克·韦尔奇点赞(我已离开通用)

热门文章

  1. 最早的电子计算机艾尔妮,这些看似没用的NPC 却是我们最早的回忆
  2. Java黑皮书课后题第8章:**8.12(金融应用:计算税款)使用数组重写程序清单3-5,每个纳税人身份都有6种税率。每种税率都应用在某个特定范围内的可征税收入
  3. Java黑皮书课后题第1章:1.4(打印表格)编写程序,显示以下表格
  4. 《构架之美》阅读笔记五
  5. Learn Python the first day.
  6. JavaScript技巧
  7. Web.xml配置详解之context-param(转)
  8. SQL求解两个时间差
  9. Day5:面向对象的定义(中)
  10. 使用 Newtonsoft.Json; 序列化正常,反序列化异常的一点思考