999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的ArcGIS數據屬性值順序碼處理研究

2018-08-13 10:37:08莊亞飛李素敏
軟件 2018年7期
關鍵詞:數據處理

莊亞飛,李素敏

?

基于Python的ArcGIS數據屬性值順序碼處理研究

莊亞飛1,李素敏2

(1. 昆明理工大學 國土資源工程學院,云南 昆明 650093;2. 昆明理工大學 國土資源工程學院,云南 昆明 650093)

在進行空間數據的處理時,會遇到許多重復性的操作,為了簡化工作流程,提高工作效率,此時,作為 ArcGIS 的腳本工具的 Python 語言就發揮了重要的作用。在ArcGIS中,通過程序擴展設計來進行數據自動化處理是非常有用的,大量數據的處理可以通過Python腳本語言來進行具體實現,腳本編程的主要目的是使枯燥的數據處理工作自動化。本文以云南省地質環境信息化建設項目為依托,在分析Python腳本語言特點的基礎上,介紹在ArcGIS下,利用Python腳本語言來進行數據屬性值順序碼快速、高效的檢查、更新及處理的方法,實現要素數據屬性值順序碼重復值的批量處理。

Python;ArcGIS;ArcPy;數據處理;順序碼

0 引言

ArcGIS 9.0 社區中引入了Python,使用Python和ArcPy站點包,可以開發出大量用于處理地理數據的實用程序,能夠實現空間數據的批量自動化 處理[1,2]。

在進行地理數據處理時,為了減少工作強度,簡化工作程序,尋求批量處理方法極為重要[3]。ArcGIS提供了許多高效的批處理工具,這在實際工作中具有重大的意義,然而,實際工作十分復雜,只靠ArcGIS 提供的批處理工具無法滿足生產需要,此時,作為ArcGIS的腳本工具的Python腳本語言就發揮了重要的作用[4]。通過導入ArcPy站點包便可以使用Python訪問ArcToolBox中幾乎所有的地理處理工具,針對實際的問題,利用Python開發腳本程序,方便實用、效率高,可以最大程度 地提高工作效率,在實際的工作中具有重要的應用價值[5-7]。

本文首先對ArcPy及Python做一些簡單的介紹,依據云南省地質環境信息化建設項目,在ArcGIS二次開發的基礎上,根據實際工作需求,利用Python語言編寫具體的腳本,對要素數據進行快速而準確的檢查、更新及處理,得到要素數據的屬性值順序碼。

1 Python與ArcPy的應用

Python是一種不受局限、跨平臺的開源編程語言,它功能強大且簡單易學,因而得到了廣泛應用和支持[8-10]。

辛兵廠、王來強等[11]將Python與ArcPy運用于第一次全國地理國情普查,實現了CC碼批量賦值、數據的裁剪、高程帶與坡度帶分級數據的提取,最后采用PyCharm平臺環境,實現了工具的可視化。

孫咸磊、許捍衛、李文博[12]在進行南京長江河道水下空間數據處理時,利用ArcPy實現了數據屬性字段的批量處理、批量定義空間投影坐標系、批量進行等深線的拼接,利用ArcPy封裝好的處理函數以及Python自身具備的語法簡潔的特點,簡單、快捷地進行了南京長江河道水下地形數據的批量處理。

方圣輝、張玉賢等[13]以原始DEM影像插值生成特定空間分辨率的DEM影像為例,利用Python腳本語言,導入模塊并檢索特定擴展模塊許可,利用For循環遍歷rts柵格數據列表,依次對每個柵格數據提取等高線,從而生成TIN數據集,最后利用生成的TIN數據集,通過具體的Python腳本程序,生成特定空間分辨率的柵格影像。

在日常的空間地理數據處理中,一般將Python語言具有的普通及常用功能與ArcPy開發包特有的數據處理功能結合起來使用,可以有效、快速地處理地理空間數據[14-15]。

2 Python語言數據批處理實例

在實際的工作中,需要根據不同的情況,不同的方法來處理ArcGIS數據,下面以云南省地質環境信息化建設項目中的數據為依據,以數據處理中遇見的實際問題為例,給出要素數據屬性值順序碼重復值的處理流程以及具體的實現過程。

2.1 順序碼處理流程

在進行水系、道路、圖斑要素數據的屬性值順序碼處理時,要素數據的屬性值順序碼中存在很多重復的值,由于要素數據數量巨大,人工改正顯得不切實際。本文利用Python腳本語言,針對此問題編寫一套程序,對要素數據屬性值中順序碼的重復值進行批檢查和處理[16-17],具體的要素數據屬性值順序碼重復值的處理流程如圖1所示。

圖1 順序碼處理流程

2.2 關鍵步驟代碼介紹

(1)設置工作路徑以及列出所設置的工作空間中的所有工作空間:

arcpy.env.workspace=r'F:ggg'

ii=arcpy.ListWorkspaces()

(2)列出需要處理的要素數據集并對要素數據集進行循環:

ff=["HydDataset","LcrDataset","TraDataset"]

for f in ff:

(3)如果要素名稱不是"UN_LLKL",對要素數據進行更新,并按行對數據進行循環:

if l!="UV_LLKL":

dd=arcpy.UpdateCursor(str(s)+"\"+f+"\"+l)

for d in dd:

(4)圖層中不是以53開頭的數據的選擇:

hh=arcpy.SelectLayerByAttribute_management(layer,"NEW_SELECTION",""FEATID" not like '53%'")

(5)對要素類進行搜索,并按行進行循環:

ss=arcpy.SearchCursor(l)

for i in ss:

(6)設置空數組,對數組進行循環,計算每個值在數組中出現的次數:如果出現的次數大于1,則追加到數組pac1中:

pac1=[]

for j in pa:

cc=pa.count(j)

if cc>1:

pac1.append(j)

(7)選擇數組pac1中出現的值,并進行更新:

hh=arcpy.SelectLayerByAttribute_management(layer,"NEW_SELECTION",""FEATID"='"+j+"'")

ff=arcpy.UpdateCursor(hh)

(8)設置要素數據屬性值順序碼,值為最大值加1

mx=(int(mx))+1

f.setValue("FEATID",int(mx))

2.3 具體實現步驟源代碼

本編碼主要實現兩個方面的功能,一是對要素數據中不是以53開頭數據的處理,另一方面是對要素數據屬性值順序碼重復值的處理。

(1)導入模塊,設置路徑,列文件夾并對文件夾進行循環,代碼如下:

import arcpy

arcpy.env.workspace=r'F:ggg'

ii=arcpy.ListWorkspaces()

for i in ii:

(2)要素數據中不是以53開頭數據的處理:

arcpy.env.workspace=i #當前路徑

s=arcpy.env.workspace #當前路徑

ff=["HydDataset","LcrDataset","TraDataset"] #要素數據集

for f in ff: #對要素數據集進行循環

arcpy.env.workspace=str(s)+"\"+f #設置當前路徑

ll=arcpy.ListFeatureClasses() #列出當前路徑下所有要素類

for l in ll: #循環列出的要素類

pac=[] #設置空的數組

if l!="UV_LLKL": #如果要素名稱不是UN_LLKL

dd=arcpy.UpdateCursor(str(s)+"\"+f+"\"+l) #對數據進行更新

for d in dd: #對數據按行進行循環

mm=d.getValue ("FEATID") #得到要素數據屬性值順序碼

if not mm in pac: #如果這個值不在數組中

pac.append(mm) #則追加到數組pac中

mx=max(pac) #取出pac數組中的最大值

layer=arcpy.MakeFeatureLayer_management(str(s)+"\"+f+"\"+l) #創建圖層

hh=arcpy.SelectLayerByAttribute_management(layer,"NEW_SELECTION",""FEATID" not like '53%'") #選擇圖層中不是以53開頭的數據

jj=arcpy.UpdateCursor(hh) #對選擇出來的數據進行更新

for j in jj: #對數據按行進行循環

mx=(int(mx))+1

j.setValue("FEATID",int(mx)) #設置要素數據屬性值順序碼,值為最大值加1

jj.updateRow(j) #更新數據

(3)要素數據屬性值順序碼重復值的處理:

pa=[] #設置空的數組pa

ss=arcpy.SearchCursor(l) #對要素類進行搜索

for i in ss: #按行對要素類進行循環

m=i.getValue("FEATID") #要素數據屬性值順序碼

pa.append(m) #將唯一標識值追加到數組pa中

mx=max(pa) #取數組pa中要素數據屬性值順序碼的最大值

pac1=[] #設置空的數組pca1

for j in pa: #對數組pa進行循環

cc=pa.count(j) #計算每個值在數組pa中出現的次數

if cc>1: #如果出現的次數大于1

pac1.append(j) #則追加到數組pac1中

layer=arcpy.MakeFeatureLayer_management(str(s)+"\"+f+"\"+l) #創建圖層

for j in pac1: #循環數組pac1

hh=arcpy.SelectLayerByAttribute_management(layer,"NEW_SELECTION",""FEATID"='"+j+"'") #選擇數組pac1中出現的值

ff=arcpy.UpdateCursor(hh) #對數組pca1中出現的值進行更新

gg=[] #定義空的數組

for f in ff: #循環需要更新的數據

s=f.getValue("FEATID") #得到要素數據屬性值順序碼

if not s in gg: #如果得到的要素數據屬性值順序碼不在數組gg中

gg.append(s) #則將得到的要素數據屬性值順序碼追加到數組gg中

else: #如果得到的要素數據屬性值順序碼在數組gg中

mx=(int(mx))+1

f.setValue("FEATID",int(mx)) #設置要素數據屬性值順序碼,值為最大值加1

ff.updateRow(f) #對數據進行更新

print I #打印,目的是顯示需要處理的一個圖層已經處理完成

3 結果

以云南省昆明市五華區部分道路數據為例,代碼運行前后數據對比如圖(a)、(b)所示。

圖(a)代碼運行前數據

Fig (a) Code before running data

圖(b)代碼運行后數據

Fig (b) Code after running data

代碼運行結束后,通過數據處理前后對比分析,此程序能夠對要素數據屬性值順序碼重復值進行很好的處理。在要素數據屬性值順序碼重復值處理時,首先對要素數據進行更新和循環,其次計算每個值在數組中出現的次數。通過圖(a)、(b)可知,值出現次數大于一的要素數據順序碼,處理過程按行進行處理,其中重復值為當前的最大值加一,最終依次完成要素數據順序碼重復值的處理,與設計的程序本身相符合。

4 結語

ArcGIS數據屬性值的處理任務繁瑣而復雜,重復性的操作也給工作人員帶來了一定的壓力和挑戰,通過采用Python語言編寫程序,可以定向的實現一些批處理功能,簡化操作步驟,在數據處理工作方面有很重要的現實意義。

本文通過具體的Python腳本程序,介紹了Python在ArcGIS數據屬性值順序碼重復值處理方面的應用,實現了一系列地理數據的批處理功能,其中包括對要素數據集的循環、更新以及對要素數據屬性值順序碼重復值的批處理。實驗結果表明,本文所設計的Python腳本程序能夠對要素數據屬性值中順序碼重復值進行很好的處理,提高了數據處理的速度與效率。

[1] 曹斌. 基于ArcPy的矢量數據批處理方法研究[J]. 科技創新與應用, 2017(21): 90-90.

[2] 巨擘. ArcGIS中應用Python腳本提高數據生產力的研究[J]. 測繪技術裝備, 2017, 19(3): 12-14.

[3] 彭海波, 向洪普. 基于Python的空間數據批量處理方法[J]. 測繪與空間地理信息, 2011, 34(4): 81-82.

[4] 李強, 白建榮, 李振林,等. 基于Python的數據批處理技術探討及實現[J]. 地理空間信息, 2015(2): 54-56.

[5] PaulA. Zandbergen, 贊德伯根, 李明巨, 等. 面向ArcGIS的Python腳本編程[M]. 人民郵電出版社, 2014.

[6] Wesley Chun. Python核心編程: 第3版[M]. 人民郵電出版社, 2016.

[7] 朱道強, 關海濤. Python在ArcGIS中的應用[J]. 測繪與空間地理信息, 2013, f36(7): 152-154.

[8] 石晶, 郭子珍, 李小勇. ARCGIS中應用Python腳本進行空間數據批量處理的研究與實現[J]. 河南科技, 2012(21): 60-61.

[9] Eric Pimpler. Programming ArcGIS 10.1 with Python Cookbook[M]. Birmingham: Packt, 2013.

[10] 邵保華, 田學志. 談Pytho在Arcgis地理處理中的應用[J]. 林業勘查設計, 2012(2): 99-100.

[11] 辛兵廠, 王來強, 張朝坤. 淺談Python在地理國情普查數據處理中的應用[J]. 測繪與空間地理信息, 2014, 37(06): 108-110.

[12] 孫咸磊, 許捍衛, 李文博. ArcPy在長江河道水下空間數據批量處理中的應用[J]. 測繪與空間地理信息, 2015(2): 97-99.

[13] 方圣輝, 張玉賢, 佃袁勇,等. 基于Python的ArcGIS地理數據批處理[J]. 測繪與空間地理信息, 2015(1): 1-2.

[14] 焦華. 基礎編程的思考方法[J]. 軟件, 2018, 39(3): 57-62.

[15] 胡蝶, 趙璞, 陳明爽, 等. 多源空間矢量數據一致性處理技術探討[J]. 軟件, 2016, 37(4): 13-17.

[16] 謝華成, 馬學文. MongoDB 數據庫下文件型數據存儲研究[J]. 軟件, 2015, 36(11): 12-14.

[17] 嚴元, 王海嬰. 雷電信息綜合處理平臺中高速數據處理的設計與實現[J]. 軟件, 2012, 33(12): 91-92.

Python-Based ArcGIS Data Attribute Value Sequential Code Processing

ZHUANG Ya-fei1, LI Su-min2

(1. Faculty of Land Resources Engineering, Kunming University of Science and Technology, Kunming, Yunnan Province 650093; 2. Faculty of Land Resources Engineering, Kunming University of Science and Technology, Kunming, Yunnan Province 650093)

In the process of spatial data processing, many repetitive operations are encountered. In order to simplify the workflow and improve work efficiency, the Python language, as a scripting tool for ArcGIS, plays an important role. In ArcGIS, it is very useful to automate data processing by program extension design. A large number of data processing can be implemented through the Python scripting language. The main purpose of the script programming is to automate the boring data processing work. Based on the information construction project of geological environment in Yunnan Province, based on the analysis of the characteristics of the Python script language, this paper introduces the method of checking, updating and processing the data attribute value sequence code fast and efficiently with the Python scripting language under the ArcGIS.

Python; ArcGIS; ArcPy; Data processing; Sequence code

P208

A

10.3969/j.issn.1003-6970.2018.07.014

莊亞飛(1990-),男,研究生,主要研究方向:3S集成與應用;李素敏(1977-),女,副教授,主要研究方向:遙感原理及應用、變形監測數據處理、數字礦山、土地生態。

本文著錄格式:莊亞飛,李素敏. 基于Python 的ArcGIS 數據屬性值順序碼處理研究[J]. 軟件,2018,39(7): 68-?71

猜你喜歡
數據處理
驗證動量守恒定律實驗數據處理初探
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
心理學報(2022年4期)2022-04-12 07:38:02
ILWT-EEMD數據處理的ELM滾動軸承故障診斷
水泵技術(2021年3期)2021-08-14 02:09:20
ADS-B數據處理中心的設計與實現
電子測試(2018年4期)2018-05-09 07:28:12
MATLAB在化學工程與工藝實驗數據處理中的應用
基于希爾伯特- 黃變換的去噪法在外測數據處理中的應用
大數據處理中基于熱感知的能源冷卻技術
計算機工程(2015年4期)2015-07-05 08:28:04
Matlab在密立根油滴實驗數據處理中的應用
數據處理能力在求職中起關鍵作用
我國首個“突發事件基礎數據處理標準”發布
主站蜘蛛池模板: 91亚洲免费视频| 啊嗯不日本网站| 久久综合婷婷| 亚洲综合片| 国产自视频| 成人国内精品久久久久影院| 2021精品国产自在现线看| 欧美一级大片在线观看| 在线人成精品免费视频| 亚洲第一视频免费在线| 2021无码专区人妻系列日韩| 国产人前露出系列视频| 国产在线欧美| 日本不卡在线视频| 久久综合激情网| 亚洲三级视频在线观看| 97se亚洲综合| 99热这里只有精品久久免费| 日韩色图区| 在线播放国产99re| 欧美国产精品不卡在线观看 | 久久久精品国产亚洲AV日韩| 天天综合网色中文字幕| 精品人妻无码区在线视频| 亚洲成人播放| 爱做久久久久久| 亚洲第一中文字幕| 亚洲欧美自拍一区| 第九色区aⅴ天堂久久香| 97国产在线播放| 国产精品天干天干在线观看| 国产精品人莉莉成在线播放| 日韩第一页在线| 国产理论精品| 麻豆精品久久久久久久99蜜桃| 日韩毛片在线播放| 亚洲综合18p| 国产成人AV大片大片在线播放 | 在线另类稀缺国产呦| 99re66精品视频在线观看| 欧美色综合久久| 精品国产一区91在线| 毛片手机在线看| 欧美亚洲国产精品第一页| 日本高清免费一本在线观看 | 成年人免费国产视频| 国产精品久久精品| 国产精品毛片在线直播完整版| 亚洲视频四区| 久久99热66这里只有精品一| 国产性生大片免费观看性欧美| 婷婷综合色| 亚洲天堂日韩在线| 亚洲国产精品无码久久一线| 最新国产高清在线| 99热6这里只有精品| 久久午夜夜伦鲁鲁片不卡| 欧美激情伊人| 又黄又湿又爽的视频| 女人18毛片一级毛片在线| 1024你懂的国产精品| 秘书高跟黑色丝袜国产91在线| 爆乳熟妇一区二区三区| 国产幂在线无码精品| 成人毛片在线播放| 日本国产精品| a网站在线观看| 1级黄色毛片| AV不卡无码免费一区二区三区| 久久综合九色综合97婷婷| 97av视频在线观看| 国产三级a| 中文字幕久久波多野结衣| 久久综合色天堂av| 成人福利在线免费观看| 国产亚洲视频免费播放| 国产一区二区三区免费| 伊人五月丁香综合AⅤ| 久久精品女人天堂aaa| 国产粉嫩粉嫩的18在线播放91| 精品一区二区三区无码视频无码| 98超碰在线观看|