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在密立根油滴實驗數據處理中的應用
數據處理能力在求職中起關鍵作用
我國首個“突發事件基礎數據處理標準”發布
主站蜘蛛池模板: 国产手机在线ΑⅤ片无码观看| 人妻21p大胆| 波多野结衣亚洲一区| 中文成人在线| 国产精品永久免费嫩草研究院| 永久免费av网站可以直接看的| 欧美日韩动态图| 亚洲国产欧美中日韩成人综合视频| 亚洲人免费视频| 国产爽妇精品| 亚洲人成网站18禁动漫无码| 粗大猛烈进出高潮视频无码| 无码在线激情片| 中国精品自拍| 国产成人综合日韩精品无码不卡| 人人91人人澡人人妻人人爽| 国产免费久久精品99re丫丫一| 无套av在线| 亚洲不卡av中文在线| 热re99久久精品国99热| 免费视频在线2021入口| 国产精品亚洲欧美日韩久久| 欧美黄网在线| 欧美福利在线| 国产精品黄色片| 精品91在线| 中文字幕中文字字幕码一二区| 日本久久久久久免费网络| 国产欧美日韩18| 97国产在线视频| 女人毛片a级大学毛片免费 | 国产色婷婷| 国产日韩欧美在线播放| 99尹人香蕉国产免费天天拍| 免费观看男人免费桶女人视频| 日韩毛片免费| 国产一区在线观看无码| 一级不卡毛片| 无码专区在线观看| 精品亚洲麻豆1区2区3区| 毛片久久网站小视频| 福利视频一区| 精品国产黑色丝袜高跟鞋| 伊人激情久久综合中文字幕| 99精品热视频这里只有精品7| 四虎在线高清无码| 国产成人av一区二区三区| 国产精品永久不卡免费视频| 欧美三級片黃色三級片黃色1| 国产一级无码不卡视频| 久久香蕉国产线看观看精品蕉| 激情六月丁香婷婷| 天堂在线亚洲| 亚洲国产无码有码| 午夜在线不卡| 午夜日b视频| 日韩视频福利| 成人综合久久综合| 无码电影在线观看| 国产成人区在线观看视频| 亚洲欧洲AV一区二区三区| 制服丝袜无码每日更新| 国产精品视频久| 国产幂在线无码精品| 一区二区无码在线视频| 中文字幕永久在线看| 国产精品吹潮在线观看中文| 天堂成人av| 亚洲最新地址| 无码久看视频| 亚洲丝袜第一页| 欧美另类图片视频无弹跳第一页| 亚洲区一区| 国产丝袜丝视频在线观看| 国产永久无码观看在线| 97人人模人人爽人人喊小说| 亚洲第一极品精品无码| 亚洲日韩AV无码精品| 伊人丁香五月天久久综合| 自拍偷拍欧美日韩| 欧美性爱精品一区二区三区| 欧美日韩一区二区在线播放|