• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

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

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

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

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

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

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

      1 Python語(yǔ)言

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

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

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

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

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

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

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

      3.1字段比較

      字段比較工具包括9個(gè)參數(shù):模板表、數(shù)據(jù)表、排序字段、比較類(lèi)型、忽略類(lèi)型、屬性容差、忽略字段、是否連續(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)行語(yǔ)句如下:

      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查包括兩個(gè)內(nèi)容:小班圖層自身重疊和小班圖層之間的相互重疊。主要為創(chuàng)建拓?fù)?、添加要素到拓?fù)?、添加屬性到拓?fù)浜万?yàn)證拓?fù)?。具體語(yǔ)句如下:

      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)建一個(gè)新的字段,然后把OBJECT字段的值賦給這個(gè)字段;其次,對(duì)小班圖層使用MultipartToSinglepart工具炸開(kāi)多部件;最后,對(duì)炸開(kāi)后的圖層屬性表統(tǒng)計(jì)第一步新建的字段,如果有數(shù)量大于等于2的記錄,則說(shuō)明圖層中存在多部件。具體語(yǔ)句如下:

      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重號(hào)檢查

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

      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_重號(hào)_frequency","aa")

      3.5縫隙檢查

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

      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ù)洳樵?xún)、多部件檢查、重號(hào)查詢(xún)和縫隙查詢(xún)功能后,進(jìn)一步把這些功能集成為一個(gè)工具。

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

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

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

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

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

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

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

      5 結(jié)語(yǔ)

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

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

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

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

      [1]潘雪婷.基于Python的控件分析模型的實(shí)現(xiàn)[D].北京:中國(guó)地質(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)號(hào))、云南省教育廳項(xiàng)目(2014J100)、貴州省林業(yè)科研課題(黔林科合J字[2013](4)號(hào))。

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

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

      猜你喜歡
      字段圖層縫隙
      圖書(shū)館中文圖書(shū)編目外包數(shù)據(jù)質(zhì)量控制分析
      雨的縫隙
      巧用混合圖層 制作抽象動(dòng)感森林
      一種帶寬展寬的毫米波波導(dǎo)縫隙陣列單脈沖天線
      圖層法在地理區(qū)域圖讀圖中的應(yīng)用
      CNMARC304字段和314字段責(zé)任附注方式解析
      無(wú)正題名文獻(xiàn)著錄方法評(píng)述
      淺析“遞層優(yōu)化法”在礦井制圖中的應(yīng)用
      河南科技(2014年6期)2014-04-04 08:00:42
      關(guān)于CNMARC的3--字段改革的必要性與可行性研究
      Photoshop圖層的解讀
      汕尾市| 吉林省| 黄陵县| 拉萨市| 永州市| 重庆市| 卢氏县| 香格里拉县| 西城区| 南皮县| 新昌县| 滨州市| 武隆县| 肃宁县| 平和县| 安岳县| 丽水市| 沙坪坝区| 定陶县| 九江县| 札达县| 玉田县| 鄂州市| 泗阳县| 天台县| 蓬安县| 塔城市| 孟州市| 巍山| 虞城县| 将乐县| 潞西市| 双柏县| 延川县| 遂宁市| 融水| 平乡县| 延吉市| 慈利县| 板桥市| 乐至县|