国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ArcPy的GIS空間分析建模原理及實現(xiàn)方法

2015-12-04 08:58張世富
關(guān)鍵詞:柵格多邊形矢量

張世富

(菏澤學(xué)院, 山東 菏澤, 274000)

GIS(地理信息系統(tǒng))不僅要完成管理大量復(fù)雜的地理數(shù)據(jù)的任務(wù),更為重要的是完成地理分析評價預(yù)測和輔助決策的任務(wù)[1],空間分析是GIS最具特色的內(nèi)容,建立空間分析模型的過程(空間分析建模)是綜合分析處理和應(yīng)用空間數(shù)據(jù)的有效手段,也是開發(fā)分析決策型GIS不可或缺的步驟[2]。

ArcGIS的Model Builder視窗提供了構(gòu)建地理處理工作流和腳本的圖形化建模環(huán)境[3],但是進(jìn)行空間分析建模有其不足之處:首先,在進(jìn)行數(shù)據(jù)批量化處理時操作復(fù)雜、處理速度緩慢而且運(yùn)行不穩(wěn)定。其次,在Model Builder中建模無法對空間分析結(jié)果進(jìn)行統(tǒng)計以及進(jìn)行必要的計算。

本文使用Python編程語言以及ArcGIS10.0中新添加的ArcPy工具包中的各種函數(shù)以函數(shù)式編程的方法[4]進(jìn)行空間分析建模。以多邊形矢量圖層的矢量-柵格疊置分析并計算其吻合度為例闡述基于Python與ArcPy的GIS空間分析建模原理及其實現(xiàn)方法。

一、Python與ArcPy簡介

(一)Python及其特點(diǎn)

Python[5]是一種底層基于C語言實現(xiàn)的腳本語言,但其已從Linux平臺上的一個腳本語言發(fā)展成為跨操作系統(tǒng)多種底層實現(xiàn)的通用語言,并且可以實現(xiàn)對既有的C/C++庫調(diào)用,大大豐富了Python的功能[6]。Python 具有以下特點(diǎn):1)簡單易學(xué)、免費(fèi)開源;2)跨平臺的解釋性高級語言,具有很強(qiáng)的健壯性[7];3)可擴(kuò)展的面向?qū)ο缶幊陶Z言;4)ArcGIS主要支持。

(二)ArcPy簡介

Arcpy是Arcgis10中新的Python庫,包含有函數(shù)(Function)、類(Class)和模塊(Module),可以實現(xiàn)的功能有:能訪問所有GP工具;可以進(jìn)行數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)管理;數(shù)據(jù)分析;并實現(xiàn)自動化制圖。

二、空間分析建模原理與實現(xiàn)方法

基于Python與ArcPy的GIS空間分析建模是通過Python調(diào)用ArcPy中的各種函數(shù)、類和模塊來實現(xiàn)各種空間分析功能,以函數(shù)式編程的方法[4]實現(xiàn)對數(shù)據(jù)的空間分析。本文使用該方法實現(xiàn)空間數(shù)據(jù)的矢量柵格疊置分析,以基于對象的影像最優(yōu)分割結(jié)果選取為例來闡述基于Python與ArcPy的GIS空間分析建模的實現(xiàn)方法。

(一)建模需求

近年來,基于對象影像分析(OBIA)已經(jīng)發(fā)展成為遙感影像處理領(lǐng)域中的一個新范式?;趯ο笥跋穹治鎏幚淼膯卧辉偈菃蝹€的像元,而是通過影像分割產(chǎn)生的影像對象。因此,影像分割的質(zhì)量對影像分類以及分類結(jié)果的精度有決定性的影響。差異性分析法是目前主要的影像分割質(zhì)量評價方法,是將分割結(jié)果與已有樣區(qū)數(shù)據(jù)進(jìn)行對比,比較差異,主要度量方法有基于區(qū)域范圍度量、基于邊界位置度量和混合度量[8]。

本文將使用基于區(qū)域范圍的度量方法以函數(shù)式編程的方法進(jìn)行GIS空間分析建模,選擇最優(yōu)的分割結(jié)果。

(二)模型設(shè)計

根據(jù)以上需求,將空間分析模型設(shè)計為以下幾個部分:

矢量疊置分析。由于模型需要計算分割多邊形(分割結(jié)果)與參考多邊形(已有樣區(qū)數(shù)據(jù))的面積差異,所以首先要選取匹配多邊形(與參考多邊相對應(yīng)的分割多邊形)。

矢量轉(zhuǎn)柵格。由于分割多邊形邊界是由像元邊界的合并而來,多為鋸齒狀;而參考多邊形由數(shù)字化得到,邊界較為平滑,為避免由于邊界誤差引起的面積差異而導(dǎo)致所計算出的評價指標(biāo)產(chǎn)生偏差,我們將參考數(shù)據(jù)轉(zhuǎn)換為與分割影像像元分辨率相同的柵格文件,再進(jìn)行柵格疊置分析可以得到準(zhǔn)確的面積參數(shù)。

柵格疊置分析。最終我們需要從空間分析結(jié)果中得到三個參數(shù)來計算評價指標(biāo),即重疊面積、過分割面積、欠分割面積[9],為便于數(shù)據(jù)分析,我們在矢量轉(zhuǎn)柵格時將多邊形所在區(qū)域柵格屬性賦值為1,其余賦值為0,這樣經(jīng)過柵格疊置分析就可將三部分面積區(qū)別開來。

分析結(jié)果導(dǎo)入數(shù)據(jù)庫。空間分析結(jié)束后我們將分析結(jié)果導(dǎo)入Geodatabase中以方便存儲與管理。

空間數(shù)據(jù)屬性讀取與統(tǒng)計分析??臻g分析結(jié)束后,我們需要讀取分析結(jié)果屬性表中的面積參數(shù)計算評價指標(biāo)并寫入Excel表格中,最終選取最優(yōu)的分割結(jié)果作為函數(shù)返回值反饋給用戶。具體流程如上圖所示:

(三)模型實現(xiàn)方法

1.設(shè)定模型運(yùn)行環(huán)境

以函數(shù)式編程的方法進(jìn)行空間建模,最重要的就是模型中各函數(shù)的可運(yùn)行性,在運(yùn)行模型之前首先要設(shè)定其運(yùn)行環(huán)境,包括:導(dǎo)入函數(shù)運(yùn)行所需要的各種模塊;檢測ArcPy工具包中空間分析模塊的可用性。

2.定義循環(huán)與臨時文件存儲路徑

程序中需對空間數(shù)據(jù)進(jìn)行批量處理,所以我們需要使用遍歷函數(shù)對空間數(shù)據(jù)進(jìn)行遍歷并將結(jié)果返回到一個列表中,然后我只對列表進(jìn)行操作即可。首先指定遍歷函數(shù)的工作空間,然后使用ListFiles函數(shù)對空間數(shù)據(jù)進(jìn)行遍歷。

由于空間分析過程中產(chǎn)生大量的臨時文件,使用tempfile模塊在指定路徑自動建立一個臨時文件夾,存儲空間分析過程中產(chǎn)生的臨時文件存并在程序運(yùn)行結(jié)束后刪除。

3.空間分析建模

空間分析主要包括四個部分:矢量疊置分析、矢量轉(zhuǎn)柵格、柵格疊置分析和將分析結(jié)果導(dǎo)入數(shù)據(jù)庫。

(1)矢量疊置分析

在選擇匹配多邊形時使用面積比值方法,為減少不必要的計算首先選擇與參考多邊形具有相交關(guān)系的分割多邊形,再使用面積比值進(jìn)行二次選擇。

使用SelectLayerByLocation函數(shù)對分割多邊形進(jìn)行初次選擇,然后分別計算分割多邊形與參考多邊形的面積,最后采用面積比值使用Select_analysis函數(shù)選擇匹配多邊形,即相交部分面積大于自身面積50%或大于參考多邊形面積50%的分割多邊形為匹配多邊形。

(2)矢量轉(zhuǎn)柵格

在矢量轉(zhuǎn)柵格前我們先定義一個“value”字段并賦值為1,以研究區(qū)范圍作為柵格文件的邊界,這樣在邊界范圍內(nèi)由多邊形轉(zhuǎn)換產(chǎn)生的柵格屬性為1,其余柵格屬性為0,以便于柵格疊置分析。

(3)柵格疊置分析

在矢量轉(zhuǎn)柵格過程中已經(jīng)將多邊形區(qū)域賦值為1,匹配多邊形與參考多邊形進(jìn)行相加運(yùn)算后產(chǎn)生的柵格文件的重疊面積、過分割面積與欠分割面積屬性值分別被賦值為2、1和1。然后將第一次運(yùn)算結(jié)果與分割多邊形轉(zhuǎn)換為的柵格文件相加產(chǎn)生最終柵格結(jié)果,柵格文件重疊面積、過分割面積與欠分割面積屬性值分別被賦值為3、1和2,從而可以將其區(qū)別開來。

(4)將分析結(jié)果導(dǎo)入數(shù)據(jù)庫

空間分析結(jié)束后我們使用FeatureClassToGeo database_conversion函數(shù)將分析結(jié)果導(dǎo)入Geodata base中以方便存儲與管理。

4.空間數(shù)據(jù)屬性讀取與統(tǒng)計分析

空間分析結(jié)束后,我們使用SearchCursor函數(shù)讀取分析結(jié)果屬性表中的面積參數(shù)計算評價指標(biāo)。然后使用第三方模塊pyExcelerator模塊將計算的得到的評價指標(biāo)寫入Excel表格中。

5.設(shè)置返回值并刪除臨時文件

在循環(huán)結(jié)束后我們?yōu)榍斑吽x的函數(shù)設(shè)置一個返回值,返回通過比較產(chǎn)生的最優(yōu)分割參數(shù)指標(biāo),另外所有分割結(jié)果通過分析所產(chǎn)生的評價指標(biāo)都保存在Excel表中。

在進(jìn)行批量處理過程中,由于產(chǎn)生大量臨時文件,所以在每次循環(huán)結(jié)束后要將產(chǎn)生的臨時文件刪除,我們使用shutil模塊中的rmtree函數(shù)將每次循環(huán)開始產(chǎn)生的臨時文件夾刪除。

三、結(jié)論

Python作為ArcGIS主要支持的腳本語言,在GIS中已經(jīng)得到廣泛使用,特別是ArcGIS 10的Python腳本中引入新的ArcPy,使Python與ArcGIS結(jié)合得更緊密。Python可以直接調(diào)用ArcGIS中的各種分析工具與函數(shù),大大提高系統(tǒng)的運(yùn)行效率,另外,Python腳本語言簡單易學(xué)、可移植性、擴(kuò)展性強(qiáng)、而且具有極高的編程效率。相信Python會在空間分析建模中得到越來越廣泛的應(yīng)用。

[1]湯國安,趙牡丹.地理信息系統(tǒng)[M].北京:科學(xué)出版社,2000.

[2]程 滿,梁 虹,等.基于空間問題建模概念過程的空間分析建模與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2007,(16).

[3]方 芳,徐世武,萬波.GIS空間分析建模技術(shù)進(jìn)展研究[J].測繪科學(xué),2010,(6).

[4]Wikipedia:Functional Programming.[EB/OL].2008-04-16.http://en.wikipedia.org/wiki/Functional_programming

[5]Python Official Documentations[EB/OL].2008-04-16.http://www.prthon.org/about/.

[6]孫 宇,蒲英霞.使用Python函數(shù)式編程進(jìn)行空間回歸分析[J].地理信息世界,2009,(6).

[7]Wesley J.Chun,宋廣吉(譯).核心編程(第二版)[M].北京:人民郵電出版社,2008.

[8]Y.J.ZHANG.A SURVEY ON EVALUATION METHODS FOR IMAGE SEGMENTATION.Pattern Rrcognition 1996,(8).

[9]張世富.寧夏中衛(wèi)黃灌區(qū)耕地時空變化及其環(huán)境經(jīng)濟(jì)效應(yīng)研究[D].蘭州:蘭州大學(xué),2012.

猜你喜歡
柵格多邊形矢量
柵格環(huán)境下基于開闊視野蟻群的機(jī)器人路徑規(guī)劃
一種適用于高軌空間的GNSS矢量跟蹤方案設(shè)計
矢量三角形法的應(yīng)用
超聲速柵格舵/彈身干擾特性數(shù)值模擬與試驗研究
多邊形的藝術(shù)
反恐防暴機(jī)器人運(yùn)動控制系統(tǒng)設(shè)計
推力矢量對艦載機(jī)安全起降的意義
多邊形內(nèi)外角問題的巧解
基于柵格地圖中激光數(shù)據(jù)與單目相機(jī)數(shù)據(jù)融合的車輛環(huán)境感知技術(shù)研究
三角形法則在動態(tài)平衡問題中的應(yīng)用