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无码网站| 国产午夜无码片在线观看网站| 98超碰在线观看| 久久情精品国产品免费| 成人精品视频一区二区在线| 中文字幕调教一区二区视频| julia中文字幕久久亚洲| 日韩精品无码免费专网站| 中文字幕人妻av一区二区| 国产精品无码AV中文| 国内老司机精品视频在线播出| 不卡无码网| 免费视频在线2021入口| 国产精品美女自慰喷水| 日韩无码精品人妻| 91丝袜乱伦| 亚洲AV免费一区二区三区| 99热6这里只有精品| 国产大片喷水在线在线视频| 国产小视频免费| 特级毛片免费视频| 精品人妻无码区在线视频| 国产熟睡乱子伦视频网站| 中文字幕va| 福利国产在线| 在线精品欧美日韩| 免费在线不卡视频| a欧美在线| 在线国产91| 欧美亚洲国产日韩电影在线| 91成人在线免费视频| 国产小视频a在线观看| 欧美精品一二三区| 欧美日韩国产成人在线观看| 亚洲毛片在线看| 亚洲天堂啪啪| 在线观看av永久| 国产专区综合另类日韩一区| 中日韩欧亚无码视频| 精品国产成人三级在线观看| 免费人成在线观看视频色| 天堂在线www网亚洲| 无码中文字幕精品推荐| 免费无码又爽又黄又刺激网站| 久久精品视频亚洲| 国产噜噜在线视频观看| 亚洲精品欧美日本中文字幕| 亚洲中文字幕久久精品无码一区| 亚洲色偷偷偷鲁综合| 亚洲人成影视在线观看| 欧美一级特黄aaaaaa在线看片| 无码aⅴ精品一区二区三区| 在线观看精品国产入口| 大陆精大陆国产国语精品1024| 91在线精品麻豆欧美在线| 91福利片| 色噜噜狠狠狠综合曰曰曰| 欧美97色| 极品私人尤物在线精品首页 | 欧美劲爆第一页| 不卡无码h在线观看| 免费在线看黄网址| 毛片久久网站小视频| 国产高清免费午夜在线视频| 国产精品99久久久| 久久99这里精品8国产| 精品国产一区91在线| 亚洲国产欧美国产综合久久| 久久精品91麻豆| 免费 国产 无码久久久| 国产精品专区第1页| 欧美精品亚洲精品日韩专区| 性69交片免费看| 激情综合激情| 久久激情影院| 国产免费久久精品99re丫丫一 | 国产成人区在线观看视频| 精品人妻系列无码专区久久| 国产精品午夜福利麻豆| 色婷婷在线影院| 色天天综合|