arcgis怎么用python重新排序,使用ArcGIS脚本工具将点数据进行排序并编号
本帖最后由 大栗子 于 2019-6-28 17:21 編輯
今天我們就來分享使用ArcGIS腳本工具將點數(shù)據(jù)進行排序并編號,文末我們會附上點數(shù)據(jù)和直接使用的腳本工具。
我們先來看一下我們要達到的效果圖:
2.webp.jpg (18.93 KB, 下載次數(shù): 0)
2019-6-28 17:07 上傳
詳細步驟:
第一步:打開點要素,在屬性表中添加X和Y兩個字段。
3.webp.jpg (102.42 KB, 下載次數(shù): 1)
2019-6-28 17:07 上傳
第二步:使用sort工具,將X和Y字段作為排序字段,生成排序后的點數(shù)據(jù)。
4.webp.jpg (47.67 KB, 下載次數(shù): 2)
2019-6-28 17:07 上傳
第三步:添加一個排序結果字段,將OBJECTID字段值賦給這個字段。
5.webp.jpg (100.74 KB, 下載次數(shù): 3)
2019-6-28 17:07 上傳
第四步:創(chuàng)建腳本工具
①首先創(chuàng)建工具箱
6.webp.jpg (24.87 KB, 下載次數(shù): 1)
2019-6-28 17:07 上傳
②添加腳本
7.webp.jpg (52.46 KB, 下載次數(shù): 0)
2019-6-28 17:07 上傳
③打開腳本工具創(chuàng)建向導,填寫信息
8.webp.jpg (31.02 KB, 下載次數(shù): 0)
2019-6-28 17:07 上傳
④添加Python腳本,加載已經(jīng)寫好的Python文件(*.py格式)
Python腳本的思路主要為:
首先規(guī)劃好該工具需要多少個參數(shù);# 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()將原數(shù)據(jù)復制一下;
再使用arcpy.AddXY_management()將復制得到的數(shù)據(jù)添加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(),生成排序后數(shù)據(jù);
最終使用工具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
第五步:下一步,添加界面參數(shù),這一步很重要,各個參數(shù)屬性要逐個填入,分別如下,其中Order、Sort_X、Sort_Y屬于list參數(shù)。
9.webp.jpg (34.55 KB, 下載次數(shù): 0)
2019-6-28 17:07 上傳
10.webp.jpg (49.63 KB, 下載次數(shù): 0)
2019-6-28 17:07 上傳
11.webp.jpg (40.54 KB, 下載次數(shù): 0)
2019-6-28 17:07 上傳
設置完成后,點擊finish,腳步工具創(chuàng)建完成!
第六步:對上述的三個參數(shù)設置list列表
①點擊腳本工具的屬性
12.webp.jpg (27.49 KB, 下載次數(shù): 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, 下載次數(shù): 0)
2019-6-28 17:07 上傳
至此,ArcGIS的點排序編號腳本工具基本完成,為了方便別人使用,可以添加描述等輔助。
①打開工具描述
14.webp.jpg (26.47 KB, 下載次數(shù): 1)
2019-6-28 17:07 上傳
②編輯工具信息
15.webp.jpg (19.5 KB, 下載次數(shù): 0)
2019-6-28 17:07 上傳
體驗一下該工具:
16.webp.jpg (26.22 KB, 下載次數(shù): 1)
2019-6-28 17:07 上傳
工具界面
查看結果編號:
17.webp.jpg (46.21 KB, 下載次數(shù): 0)
2019-6-28 17:12 上傳
工具結果
18.webp.jpg (30.18 KB, 下載次數(shù): 0)
2019-6-28 17:10 上傳
編號結果
提取碼:2fkt
總結
以上是生活随笔為你收集整理的arcgis怎么用python重新排序,使用ArcGIS脚本工具将点数据进行排序并编号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于MATLAB的信号与系统实验指导,《
- 下一篇: 用python语言实现-Python语言