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

?

基于Python的營造林?jǐn)?shù)據(jù)驗(yàn)收方法

2016-11-21 07:51:38曹霸陳興亞黃冰清王洪波盧鵬
安徽林業(yè)科技 2016年5期
關(guān)鍵詞:字段圖層縫隙

曹霸,陳興亞,黃冰清,王洪波,盧鵬*

(1.貴州林業(yè)勘察設(shè)計(jì)有限公司,貴州 貴陽 550003;2.貴州省林業(yè)調(diào)查規(guī)劃院)

基于Python的營造林?jǐn)?shù)據(jù)驗(yàn)收方法

曹霸1,陳興亞2,黃冰清2,王洪波1,盧鵬2*

(1.貴州林業(yè)勘察設(shè)計(jì)有限公司,貴州貴陽550003;2.貴州省林業(yè)調(diào)查規(guī)劃院)

本文簡要介紹了Python語言,并對貴州省營造林?jǐn)?shù)據(jù)驗(yàn)收流程中使用到的ArcGIS圖形檢查工具利用Python語言進(jìn)行集成,生成自定義工具,利用這個工具對營造林?jǐn)?shù)據(jù)進(jìn)行檢查驗(yàn)收,在一定程度上提高了數(shù)據(jù)檢查驗(yàn)收的工作效率。

Python;ArcGIS;腳本工具;營造林?jǐn)?shù)據(jù);驗(yàn)收方法

Python是一種面向?qū)ο?、語法清晰、開源的腳本語言,從簡單的到復(fù)雜的腳本任務(wù),從獨(dú)立的到復(fù)雜的應(yīng)用程序都可以實(shí)現(xiàn)。地理信息系統(tǒng)經(jīng)過30多年的發(fā)展,其應(yīng)用領(lǐng)域已經(jīng)深入到各行各業(yè)。地理信息系統(tǒng)的快速發(fā)展推動了相關(guān)軟件的進(jìn)步,作為地理信息系統(tǒng)軟件中比較有代表性的軟件ArcGIS被廣泛應(yīng)用[1]。貴州省2015年?duì)I造林?jǐn)?shù)據(jù)驗(yàn)收檢查內(nèi)容多,需要利用ArcGIS多個工具對數(shù)據(jù)進(jìn)行處理,檢查工作非常繁瑣。為此,本文利用Python進(jìn)行開發(fā),對營造林?jǐn)?shù)據(jù)驗(yàn)收所用的ArcGIS工具進(jìn)行集成,生成腳本工具,在營造林?jǐn)?shù)據(jù)檢查驗(yàn)收時(shí)利用該工具,在一定程度上提高了工作效率。

1 Python語言

Python于1991年第一次公開發(fā)行,從而是一門優(yōu)秀的腳本語言[2]。圖1展示了Python的優(yōu)點(diǎn)。

2 營造林?jǐn)?shù)據(jù)驗(yàn)收流程

營造林?jǐn)?shù)據(jù)驗(yàn)收主要包括兩個部分:屬性檢查和圖形檢查。其中屬性檢查主要在Access里檢查,本文不詳細(xì)敘述。圖形檢查是在ArcGIS中進(jìn)行檢查,檢查的內(nèi)容包括數(shù)據(jù)庫字段結(jié)構(gòu)比較、拓?fù)錂z查、多部件檢查、重號檢查和縫隙檢查,見圖2。

圖1 Python優(yōu)點(diǎn)

其中,字段比較是對每個縣的檢查數(shù)據(jù)和模板數(shù)據(jù)的數(shù)據(jù)庫結(jié)構(gòu)進(jìn)行比較,以保證后期對全省數(shù)據(jù)進(jìn)行合庫時(shí)每個縣的庫結(jié)構(gòu)相同;拓?fù)錂z查是對營造林?jǐn)?shù)據(jù)進(jìn)行拓?fù)浞治?,防止小班圖層存在自身重疊和相互重疊;多部件檢查是為了防止小班圖層存在多部件;重號檢查是為了保證小班圖層無重號;縫隙檢查是為了保證小班與小班之間不存在縫隙,縫隙最小為100m2。

3 檢查工具實(shí)現(xiàn)

根據(jù)圖形檢查的內(nèi)容,利用ArcGIS自帶的Python腳本編輯器,實(shí)現(xiàn)字段比較、拓?fù)錂z查、多部件檢查、重號檢查和縫隙檢查。

3.1字段比較

字段比較工具包括9個參數(shù):模板表、數(shù)據(jù)表、排序字段、比較類型、忽略類型、屬性容差、忽略字段、是否連續(xù)比較、比較結(jié)果輸出文件。具體參數(shù)設(shè)置如下所示:

base_table=path_base+"/"+"YZL_PY_ZLYSXB"

圖2 圖形檢查內(nèi)容圖

test_table=path_test+"/"+"YZL_PY_ZLYSXB"

sort_field="OBJECTID"

compare_type="SCHEMA_ONLY"

ignore_option="IGNORE_EXTENSION_PROPERTIES;IGNORE_SUBTYPES;IGNORE_RELATIONSHIPCLASSES"

attribute_tolerance=""

omit_field="OBJECTID;SHAPE;SHAPE_Length;SHAPE_Area;aa;aaa"

continue_compare="NO_CONTINUE_COMPARE"

compare_file=path+"/"+"zl.txt"

其中path_base,path_test分別為模板數(shù)據(jù)路徑和檢查數(shù)據(jù)路徑。

工具運(yùn)行語句如下:

compare_result=arcpy.TableCompare_management(base_table,test_table,sort_field,compare_type,ignore_option,attribute_tolerance,omit_field,continue_compare,compare_file)

3.2拓?fù)錂z查

拓?fù)錂z查包括兩個內(nèi)容:小班圖層自身重疊和小班圖層之間的相互重疊。主要為創(chuàng)建拓?fù)?、添加要素到拓?fù)洹⑻砑訉傩缘酵負(fù)浜万?yàn)證拓?fù)?。具體語句如下:

arcpy.CreateTopology_management(path_test," topology")

arcpy.AddFeatureClassToTopology_management(" topology","YZL_PY_ZLYSXB",1,1)arcpy.AddFeatureClassToTopology_management("topology","YZL _PY_FYYSXB",1,1)

arcpy.AddRuleToTopology_management("topology","Must Not Overlap(Area)","YZL_PY_ ZLYSXB","","","")

arcpy.AddRuleToTopology_management("topology","Must Not Overlap(Area)","YZL_PY_ FYYSXB","","","")

arcpy.AddRuleToTopology_management("topology","Must NotOverlap With(Area-Area)","YZL_PY _FYYSXB","","YZL_PY_ZLYSXB","")

arcpy.ValidateTopology_management("topology")

3.3多部件檢查

多部件檢查步驟包括三步:首先,創(chuàng)建一個新的字段,然后把OBJECT字段的值賦給這個字段;其次,對小班圖層使用MultipartToSinglepart工具炸開多部件;最后,對炸開后的圖層屬性表統(tǒng)計(jì)第一步新建的字段,如果有數(shù)量大于等于2的記錄,則說明圖層中存在多部件。具體語句如下:

arcpy.AddField_management("YZL_PY_ ZLYSXB","aa","TEXT","","",100)arcpy.Calculate-

Field_management("YZL_PY_ZLYSXB","aa","!OBJECTID!","PYTHON")

arcpy.MultipartToSinglepart_management("YZL _PY_ZLYSXB","YZL_PY_ZLYSXB_multi")

arcpy.Frequency_analysis("YZL_PY_ZLYSXB _multi",path+"/"+"zl_multi_frequency","aa")

3.4重號檢查

本次營造林?jǐn)?shù)據(jù)驗(yàn)收中重號檢查用的字段為上報(bào)年度、項(xiàng)目名稱、村代碼和內(nèi)業(yè)小班號。在重號檢查時(shí)先對這四個字段進(jìn)行運(yùn)算生成唯一編號,然后再對唯一編號進(jìn)行統(tǒng)計(jì)。如果唯一編號數(shù)量大于等于2則說明小班圖層中有重號,就需要對重號小班重新編號,直到屬性表中每個記錄都是唯一。具體語句如下所示:

arcpy.AddField_management("YZL_PY_ ZLYSXB","aa","TEXT","","",100)arcpy.Calculate-Field_management("YZL_PY_ZLYSXB","WYBH","!CUN!"+"!NYJCXBH!","PYTHON")arcpy.CalculateField_management("YZL_PY_ZLYSXB","aa","!ZCSBND!"+"!XMMC!"+"!WYBH!","PYTHON")

arcpy.Frequency_analysis("YZL_PY_ZLYSXB",path+"/"+"zl_重號_frequency","aa")

3.5縫隙檢查

縫隙檢查首先利用縣面圖層對小班圖層進(jìn)行擦除,然后利用工具M(jìn)ultipart to Singlepart炸開擦除后的圖層,最后計(jì)算炸開圖層中每個小班的面積。如果小班的面積小于100m2,則這個小班就是縫隙,就要排查產(chǎn)生縫隙的原因并進(jìn)行修改。具體語句如下所示:

arcpy.Erase_analysis("縣面","YZL_PY_ ZLYSXB","YZL_PY_ZLYSXB_Era","")

arcpy.MultipartToSinglepart_management("YZL_ PY_ZLYSXB_Era","YZL_PY_ZLYSXB_Era_Mul")arcpy.CalculateAreas_stats(path_dir+"/"+" YZL_PY_ZLYSXB_Era_Mul_reproject",path_dir+"/" +"YZL_PY_ZLYSXB_Era_Mul_reproject_mj")

完成了字段比較、拓?fù)洳樵?、多部件檢查、重號查詢和縫隙查詢功能后,進(jìn)一步把這些功能集成為一個工具。

4 Python腳本工具應(yīng)用

在ArcGIS的腳本編輯器完成代碼編寫后,在ArcGIS中進(jìn)一步把代碼集成為一個工具,方便檢查人員的使用。具體流程如下:

(1)在Catalog中,選擇Toolboxes,新建一個Toolbox。

(2)選擇Toolbox,單擊右鍵,選擇add→script,設(shè)置合適的工具名字和標(biāo)準(zhǔn),點(diǎn)擊下一步,選擇script file,即上面編寫的Python腳本,點(diǎn)擊下一步,輸入display name和data type,這里選擇數(shù)據(jù)驗(yàn)收數(shù)據(jù)庫和模板數(shù)據(jù)庫,data type為 workspace or Feature,點(diǎn)擊Finish即可生成新的工具。

(3)雙擊生成的工具,如圖3所示,選擇驗(yàn)收數(shù)據(jù)庫和模板數(shù)據(jù)庫,點(diǎn)擊OK。

運(yùn)行過程如圖4所示,運(yùn)行時(shí)間為70 s左右。如果直接利用ArcGIS,涉及到多個工具,輸入?yún)?shù)多,根據(jù)實(shí)際情況,檢查一個縣的營造林?jǐn)?shù)據(jù)需要40min左右;通過應(yīng)用腳本工具,僅需要15min左右,這樣就在一定程度上提高了工作效率。

生成的結(jié)果如圖5所示,具體結(jié)果包括字段比較結(jié)果、拓?fù)錂z查結(jié)果、多部件檢查結(jié)果、重號檢查結(jié)果、縫隙檢查結(jié)果以及每項(xiàng)檢查的中間結(jié)果,通過分析即可得到數(shù)據(jù)檢查驗(yàn)收的結(jié)果,判斷數(shù)據(jù)是否合格。

5 結(jié)語

本文根據(jù)貴州省營造林?jǐn)?shù)據(jù)驗(yàn)收遇到的問題,結(jié)合Python和ArcGIS進(jìn)行腳本語言的編寫,自定義了圖形數(shù)據(jù)檢查工具,在一定程度上降低了工作量,提高了檢查效率。但是也存在不足之處,后續(xù)可以在本文的基礎(chǔ)上繼續(xù)改進(jìn),使它對于復(fù)雜的數(shù)據(jù)結(jié)構(gòu)也可以進(jìn)行檢查驗(yàn)收。

圖3 數(shù)據(jù)驗(yàn)收工具

圖4 腳本工具運(yùn)行過程圖

圖5 Python運(yùn)行生成的結(jié)果

[1]潘雪婷.基于Python的控件分析模型的實(shí)現(xiàn)[D].北京:中國地質(zhì)大學(xué),2010.

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

(責(zé)任編輯:楊婷婷)

S711

A

2095-0152(2016)05-0053-03

2016-07-26

2016-08-29

貴州省林業(yè)科研課題(黔林科合[2016](03)號)、云南省教育廳項(xiàng)目(2014J100)、貴州省林業(yè)科研課題(黔林科合J字[2013](4)號)。

曹霸(1989-),男,碩士,主要從事林業(yè)3S技術(shù)與應(yīng)用研究工作。E-mail:cl98904@163.com

盧鵬(1983-),男,高級工程師,主要從事林業(yè)信息技術(shù)應(yīng)用方向工作。E-mail:158263077@qq.com

猜你喜歡
字段圖層縫隙
圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
雨的縫隙
巧用混合圖層 制作抽象動感森林
一種帶寬展寬的毫米波波導(dǎo)縫隙陣列單脈沖天線
圖層法在地理區(qū)域圖讀圖中的應(yīng)用
CNMARC304字段和314字段責(zé)任附注方式解析
無正題名文獻(xiàn)著錄方法評述
淺析“遞層優(yōu)化法”在礦井制圖中的應(yīng)用
河南科技(2014年6期)2014-04-04 08:00:42
從文本的縫隙挖掘弦外之音
關(guān)于CNMARC的3--字段改革的必要性與可行性研究
仙桃市| 钟祥市| 宁安市| 宾阳县| 翼城县| 朝阳县| 沅江市| 闻喜县| 收藏| 厦门市| 锡林郭勒盟| 凤凰县| 鹿泉市| 华亭县| 奈曼旗| 玛纳斯县| 和静县| 万载县| 瑞丽市| 双牌县| 云林县| 山阴县| 宜兴市| 延安市| 霍城县| 深泽县| 大名县| 嘉黎县| 西平县| 浮梁县| 湖州市| 海林市| 天气| 厦门市| 资中县| 广饶县| 定西市| 叶城县| 阳泉市| 资源县| 洱源县|