• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Python的ArcGIS(Arcpy)數(shù)據(jù)檢查技術(shù)應用

    2021-07-15 08:23:02趙軍鵬
    河北林業(yè)科技 2021年2期
    關(guān)鍵詞:林帶字段進程

    趙軍鵬,劉 軍

    (河北省林業(yè)和草原調(diào)查規(guī)劃設計院,河北 石家莊050051)

    地理空間數(shù)據(jù)質(zhì)量的檢查一般包括兩種:數(shù)據(jù)拓撲關(guān)系檢查和數(shù)據(jù)邏輯一致性檢查。數(shù)據(jù)拓撲關(guān)系檢查既包括單個圖層的拓撲檢查也包括多個圖層之間的拓撲檢查;數(shù)據(jù)邏輯一致性檢查主要是根據(jù)屬性表中各字段本身或相互之間的各種邏輯關(guān)系,檢查各項數(shù)據(jù)是否正確。檢查的方法有很多,對于大批量的數(shù)據(jù),通常使用兩種方法:單進程和多進程批量處理。這里以河北省森林資源調(diào)查數(shù)據(jù)為例,介紹使用Arcpy對數(shù)據(jù)進行檢查的方法。

    1 Python及Arcpy簡介

    Python程序設計語言的設計哲學是“簡單”、“明確”、“優(yōu)雅”,它既有簡單腳本語言和解釋型程序語言的易用性,也擁有傳統(tǒng)編譯型程序語言所有強大通用的功能,另外它還是一種解釋型的、面向?qū)ο蟮摹в袆討B(tài)語義的高級程序設計語言。Python語法嚴格、可讀性強、易于學習,提供了非常完善的基礎代碼庫,同時又擁有大量的第三方庫用來實現(xiàn)各種功能,具有很強的移植性,使它成為很多軟件平臺上開速編寫腳本的理想語言。

    作為ArcGIS自帶的Python站點包,ArcPy降低了ArcGIS開發(fā)的門檻,面向的是廣泛的應用GIS的專業(yè)人員,在ArcToolbox、Model Builder和Desktop定制插件中涌現(xiàn)了眾多的腳本,ArcPy成為ArcGIS應用人員擴展自定義功能的首選工具。

    ArcPy是一個以arcgisscripting模塊為基礎并繼承了arcgisscripting功能進而構(gòu)建而成的站點包。目的是為以實用高效的方式通過Python執(zhí)行地理數(shù)據(jù)分析、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)管理和地圖自動化創(chuàng)建基礎。Arcpy分為大模塊,數(shù)據(jù)訪問模塊,制圖模塊,Network Analyst模塊,Spatial Analyst模塊,時間模塊。用ArcPy編寫的ArcGIS應用程序可以使用多個不同領域的GIS專業(yè)人員和程序員組成的眾多Python小群體開發(fā)的附加模塊。

    2 任務分析

    河北省森林資源調(diào)查數(shù)據(jù)的基礎數(shù)據(jù)包括兩個矢量圖層:小班層和林帶層。由于具有拓撲信息的矢量數(shù)據(jù)對GIS中的網(wǎng)絡分析以及空間關(guān)系分析非常重要,所以必須對矢量圖層進行拓撲關(guān)系檢查。拓撲關(guān)系檢查需要對小班層和林帶層分別建立拓撲關(guān)系,小班層需要檢查各個小班是否有重疊,是否存在空隙;林帶層只檢查是否有重疊。數(shù)據(jù)邏輯一致性檢查要根據(jù)《河北省森林規(guī)劃調(diào)查技術(shù)細則》,檢查屬性表中二十幾個字段的值是否正確及字段間邏輯關(guān)系是否一致;小班層和林帶層還要檢查在森林面積統(tǒng)計中是否存在重復部分。

    3 任務實現(xiàn)

    3.1 數(shù)據(jù)拓撲關(guān)系檢查

    空間數(shù)據(jù)檢查的流程如下:

    新建一個文件地理數(shù)據(jù)庫(GDB)→新建一個要素數(shù)據(jù)集(需要選擇投影坐標系)→導入要檢查的矢量數(shù)據(jù)→新建拓撲(在選擇拓撲目標時選擇上一步導入的數(shù)據(jù))→添加拓撲規(guī)則→驗證拓撲→在ArcGIS軟件中顯示所有錯誤并修改→小班和林帶相交檢查→導出矢量數(shù)據(jù)。完整的技術(shù)路線如圖1所示。

    圖1 空間數(shù)據(jù)檢查技術(shù)路線

    3.2 數(shù)據(jù)邏輯一致性檢查

    游標(Cursor)是包括表格或要素類中的一行或多行數(shù)據(jù)的內(nèi)存對象,每一行都包含數(shù)據(jù)源中每個字段的屬性和每個要素的幾何特征。

    數(shù)據(jù)邏輯一致性檢查的方法是使用游標對屬性表逐行檢查,根據(jù)表中各列之間的邏輯關(guān)系判斷是否存在錯誤,并把錯誤原因?qū)懙健板e誤”字段中。

    新建“錯誤”字段→更新面積(對面積小于667m2的小班歸并到臨近小班)→查看字段是否存在→判斷地類的值是否正確→清洗數(shù)據(jù),清除某些地類中一些字段的多余值→根據(jù)邏輯關(guān)系逐行查錯→統(tǒng)計錯誤數(shù)量并報告→修改錯誤,并再次檢查,直到錯誤統(tǒng)計為0。完整的技術(shù)路線圖如圖2所示。

    圖2 數(shù)據(jù)邏輯一致性檢查技術(shù)路線

    3.3 大量數(shù)據(jù)邏輯一致性檢查的實現(xiàn)方法

    3.3.1 使用單進程批量處理 在ArcMap中將所有需要進行邏輯一致性檢查的數(shù)據(jù)放到mxd文檔中,在工具箱中創(chuàng)建腳本,數(shù)據(jù)類型選擇“ArcMap文檔”,運行腳本時選擇mxd文檔,即可實現(xiàn)對文檔內(nèi)所有圖層的批量處理。

    編寫腳本時,首先導入ArcPy、os模塊及相關(guān)附屬工具,并對工作環(huán)境進行初始化設置,核心代碼如下:

    #-*-coding:utf-8-*-

    import sys,os,arcpy

    reload(sys)

    sys.setdefaultencoding(′utf-8′)

    arcpy.env.overwriteOutput=True

    然后定義一個函數(shù)AttributeChecking(fc),作為數(shù)據(jù)檢查的主函數(shù),在主函數(shù)下建立若干個子函數(shù)分別實現(xiàn)創(chuàng)建字段,計算面積,補全字段,數(shù)據(jù)清洗,邏輯檢查等功能,在main函數(shù)下引用此函數(shù)。批處理的核心代碼如下:

    mxd0=arcpy.mapping.MapDocument(′CURRENT′)

    df=arcpy.mapping.ListDataFrames(mxd0,"")[0]

    inlayer=arcpy.mapping.ListLayers(mxd0,"",df)

    for fc in inlayer:

    AttributeChecking(fc)

    3.3.2 使用多進程處理 首先把所有的shapefile文件放到一個文件夾中。然后在python中新建一個列表,把所有文件的路徑全部放到列表中shape-FileList,核心代碼如下:

    Import os,arcpy,multiprocessing

    arcpy.env.workspace="D:\H"

    shapeFileList=[]

    featureclasses=arcpy.ListFeatureClasses()

    for file in featureclasses:

    fullpath=os.path.join("D:\H\",file)

    再建立進程池,使用異步非阻塞的方式處理數(shù)據(jù)。

    MyGPool=multiprocessing.Poo(l)

    # 多進程并行處理

    for sf in shapeFileList:

    MyGPool.apply_async(AttributeChecking,(sf,))

    MyGPool.close()

    MyGPool.join()

    4 運行環(huán)境

    以上計算基于如下運行環(huán)境:

    1) 中央處理器 CPU Intel(R)Xeon E5507(2.26GHz/4M)

    2)內(nèi)存:32G

    3)操作系統(tǒng):Win7 64bit操作系統(tǒng)

    4)應用軟件:ArcGIS 10.2,Python2.7.3,Pycharm 2019

    5 結(jié)束語

    Python語言作為一種面向?qū)ο蟮?、開放的解釋型腳本語言,功能強大而又易于學習,基于其開發(fā)的Arcpy站點包與ArcGIS系統(tǒng)實現(xiàn)的高度集成。利用ArcPy對數(shù)據(jù)整理檢查能提高工作效率,減輕工作量,且能保證計算準確。對于大量數(shù)據(jù)的計算或檢查,使用多進程能充分發(fā)揮電腦的機器性能,節(jié)省時間,但如果少量數(shù)據(jù)的話,單進程批量處理速度更快。

    猜你喜歡
    林帶字段進程
    圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
    債券市場對外開放的進程與展望
    中國外匯(2019年20期)2019-11-25 09:54:58
    打造珍貴彩色林帶 建設浙中生態(tài)廊道
    公路綠化帶降噪效果初步研究
    天津科技(2015年8期)2015-06-27 06:33:38
    CNMARC304字段和314字段責任附注方式解析
    無正題名文獻著錄方法評述
    建設防護林體系的作用與意義
    社會進程中的新聞學探尋
    民主與科學(2014年3期)2014-02-28 11:23:03
    關(guān)于CNMARC的3--字段改革的必要性與可行性研究
    圖書館建設(2014年3期)2014-02-12 15:41:35
    我國高等教育改革進程與反思
    广元市| 开封市| 长春市| 敦化市| 吴桥县| 宁明县| 西城区| 临朐县| 昌黎县| 大新县| 余江县| 三台县| 奈曼旗| 巧家县| 若羌县| 中阳县| 乐至县| 茌平县| 东方市| 廉江市| 沅江市| 靖宇县| 河南省| 西吉县| 陇南市| 潞西市| 辽阳县| 蒲江县| 汾阳市| 新宁县| 孝昌县| 高尔夫| 九台市| 宁德市| 盐城市| 商洛市| 甘孜县| 亚东县| 上栗县| 襄樊市| 成武县|