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

?

基于ArcGIS+Python 在矢量數(shù)據(jù)圖表中自動化輸出中的研究

2023-02-05 13:57:26李徐亮高鵬遠王春博
經(jīng)緯天地 2023年6期
關鍵詞:匯總表字段匯總

李徐亮,高鵬遠,王春博,徐 斌,劉 偉

(河北省煤田地質(zhì)局物測地質(zhì)隊,河北邢臺 054000)

0 引言

ArcGIS 是一套綜合性的專業(yè)地理信息系統(tǒng)(GIS)應用軟件,擁有一套獨立擴展功能的模塊服務于核心產(chǎn)品[1]。它不僅具有處理遙感影像的功能,而且還具有制圖出圖、管理數(shù)據(jù)、分析數(shù)據(jù)等能力。但是針對一些項目時,它的部分工具會重復運行或者交叉使用,使其工作量大大增加。

Python 是一種跨平臺面向?qū)ο蟮木幊痰挠嬎銠C語言,它不僅處理速度快、功能強大,而且簡單易學。Python 是不需要編譯器就能使用的,因此它被看作是一種腳本(或解釋型)語言。

ArcPy 在ArcGIS 就是Python 的一個站點包,這樣就能通過Python 對其工具箱進行編寫,簡化工作流程,減少部分功能的重復、交叉使用,提高工作效率,促進快速生產(chǎn)。

地理信息數(shù)據(jù)運用ArcGIS 軟件進行矢量處理完成后在輸出圖和表時,由于軟件限制,只能進行單一處理,但由于項目不同,輸出的圖和表的數(shù)量并不統(tǒng)一,對圖和表數(shù)據(jù)需求量大的時候也是單一輸出,造成了很大的時間浪費。本研究成果能使圖和表批量化輸出,輸出的內(nèi)容表頭一致、格式一致、命名方式一致,且內(nèi)容簡潔明了。用Python 對ArcGIS的工具箱進行二次開發(fā)使其項目生產(chǎn)的過程方便、快捷,并通過使用Python 來擴展ArcGIS 的功能,使其實現(xiàn)自動化、流程化來完成任務。Python 簡單易學易操作,具有很完善的程序開發(fā)功能。Python 被封裝在ArcGIS 的安裝程序中,能直接嵌入到ArcGIS 的許多地理處理工具集中[2]。

1 項目概況

1.1 項目簡介

本研究以農(nóng)業(yè)特色作物種植面積監(jiān)測內(nèi)業(yè)數(shù)據(jù)處理為例,為深入推進農(nóng)業(yè)供給側(cè)結(jié)構(gòu)性改革,有效提高畝均產(chǎn)值效益的特色產(chǎn)量,全面提升農(nóng)業(yè)質(zhì)量效益和競爭力,促進農(nóng)業(yè)增效、村民增收,主要以高效蔬菜(設施蔬菜)、高效水果(蘋果、梨、葡萄等)、高效中藥材(金銀花、麻山藥、半夏等)、高效特色糧油等特色農(nóng)業(yè)產(chǎn)業(yè)為重點,探索發(fā)展間作套種、林下種植等種植模式。通過利用衛(wèi)星遙感技術進行月度監(jiān)測,并運用ArcGIS 對其作物種類、位置、面積進行矢量化,形成可視化圖表進行管理。

1.2 技術流程

項目組根據(jù)設計及實際工作需要制定了詳細的技術路線,分為資料數(shù)據(jù)收集及上報數(shù)據(jù)初核、遙感影像獲取及處理、制作參考點數(shù)據(jù)、種植作物遙感監(jiān)測核實、外業(yè)核實、反饋修正、成果匯總等階段。

1)資料數(shù)據(jù)收集及數(shù)據(jù)初核階段,對收集到的項目區(qū)所需的影像數(shù)據(jù)及其他相關資料,進行分類核實,統(tǒng)一測繪基準,對填報有誤、漏項的信息進行了反饋重報。

2)遙感影像獲取及處理階段,對項目所需遙感影像數(shù)據(jù)進行正射校正、數(shù)據(jù)融合、降位、增強、配準,形成解譯底圖成果。并以景為單位制作了高分遙感成果元數(shù)據(jù),標識出每景影像覆蓋的空間范圍圖斑,方便數(shù)據(jù)索引與調(diào)用。

3)種植作物遙感監(jiān)測核實階段,根據(jù)影像特征及解譯標志,結(jié)合測量指標進行圖斑的解譯、分類及人工勾繪。

4)外業(yè)核實階段,提取內(nèi)業(yè)解譯的新增面積高分衛(wèi)星遙感監(jiān)測圖斑當中的“是否外業(yè)”為“是”的疑問圖斑,進行外業(yè)實地驗證,針對“備注”中填寫的疑問說明進行實地核實。

5)反饋修正階段,根據(jù)調(diào)查結(jié)果,對種植作物認定錯誤的按照外業(yè)調(diào)查結(jié)果修正內(nèi)業(yè)數(shù)據(jù),對地塊邊界認定錯誤的結(jié)合邊界草圖及遙感影像底圖重新繪制圖斑范圍,測算面積。

6)成果匯總階段,根據(jù)遙感數(shù)據(jù)及解譯成果開展相關分析評價工作,并形成相關圖件、報告、矢量、柵格成果。

由于是月度監(jiān)測,所以每月匯總數(shù)據(jù)量很大,各地方上報匯總?cè)藛T、匯總方式并不相同,格式不統(tǒng)一,給操作人員造成了一定困擾。在圖表輸出時又要根據(jù)不同的部門分別匯總成反饋表、區(qū)縣匯總表、鄉(xiāng)鎮(zhèn)匯總表、特色類別匯總表等多種表格,運用ArcGIS 的工具箱自帶的工具在輸出圖表時只能單一輸出,浪費時間且容易出現(xiàn)匯總錯誤,給后期數(shù)據(jù)分析留下很大隱患。

2 數(shù)據(jù)源及成果分析

ArcGIS 軟件內(nèi)的矢量要素分為點矢量要素、線矢量要素和面矢量要素3 種。本研究運用的主要是點矢量數(shù)據(jù)和面矢量數(shù)據(jù),這些數(shù)據(jù)字段包含區(qū)縣名稱、主要作物、經(jīng)緯度、種植位置等多項信息,如表1所示,它涵蓋了長整型、文本型、雙精度等多種格式。

表1 點和面矢量字段信息單位:字節(jié)

最終成果以區(qū)縣為單位匯總制作,它主要包括匯總表、明細表及地塊示意圖等資料。表類需細化到村,圖紙按區(qū)縣、地塊等進行制作輸出。為了成果管理統(tǒng)一化,縣級特色種植作物分布圖設定為60 cm×80 cm 圖紙,明細表要求A4 橫版打印,野外調(diào)查的草圖利用MXD 制作標準的版式,為了方便管理與使用,野外草圖統(tǒng)一設定為A4 橫版打印。野外調(diào)查時把所需要調(diào)查的野外地塊利用ArcGIS工具箱轉(zhuǎn)換工具內(nèi)的轉(zhuǎn)為KML 工具使其矢量數(shù)據(jù)轉(zhuǎn)為KMZ 格式,導入到手機內(nèi)方便外業(yè)調(diào)查時進行路線規(guī)劃等,分別如圖1、表2 和表3 所示。

圖1 新增地塊分布示意圖

表2 上報地塊核查情況匯總表

表3 主要成果格式及類型

3 工具設計及方法實現(xiàn)

基于項目數(shù)據(jù)源及成果分析,利用Python 編輯的腳本工具在設計方面主要分為標準模板創(chuàng)建、字段內(nèi)容檢查、鄉(xiāng)鎮(zhèn)名稱檢查、自動填寫序號及內(nèi)部序號自動掛接、自動導出表格等幾個模塊,如圖2所示。

圖2 程序設計流程圖

3.1 創(chuàng)建數(shù)據(jù)模板

3.1.1 字段標準化模板

由于上報數(shù)據(jù)混亂,為了方便作業(yè)和后期管理,將預先規(guī)劃好的標準字段信息寫入腳本代碼,通過腳本工具箱對矢量數(shù)據(jù)字段信息進行檢查,對不符合標準的或者遺漏的根據(jù)腳本編輯的規(guī)則進行重新創(chuàng)建,使其形成標準化的字段信息,腳本工具的主要代碼內(nèi)容如下:

For 矢量字段in arcpy.ListFields(矢量路徑):

字段集合.append(矢量字段.name)

for 標準字段in 標準字段集合:

if 標準字段not in 字段集合:

arcpy.AddField_management(矢量路徑,標準字段,"字段類型","","","字段長度")

3.1.2 MXD制圖模板

利用ArcMap 地圖文檔制作標準的MXD 制圖模板,制作過程是首先遍歷文件目錄中的MXD 文檔,然后將每個文件中所包含的圖層遍歷出來,按版式及變量設置好對應字段[3],輸出MXD 格式制圖模板,如圖3 所示。

圖3 MXD 制圖模板

圖幅自動輸出時由于數(shù)據(jù)量大,且內(nèi)部信息不統(tǒng)一,故每次只能單一地替換變量字段,并不能實現(xiàn)自動化。本研究運用ArcGIS 自帶的“數(shù)據(jù)驅(qū)動器”對其數(shù)據(jù)驅(qū)動,調(diào)出“數(shù)據(jù)驅(qū)動器”后在索引圖層和索引字段的頁面設置保存MXD 文檔,使用Python 編輯的腳本打開MXD 文檔模板,設置將成果固定存放的文件夾路徑及出圖格式。通過設置的唯一字段進行驅(qū)動,結(jié)合Python 編輯的語言對其完成表頭自動變換。

表頭索引如下:

XX 市<dyn type= "page" property= "attribute"field="行政區(qū)名稱"domainlookup="true"/>特色種植<dyn type="page" property="attribute" field="類型"domainlookup="true"/>野外核查示意圖,具體如圖4所示。

圖4 數(shù)據(jù)驅(qū)動頁面示意圖

3.2 字段內(nèi)容檢查

字段標準化的創(chuàng)建采用判斷的方式對字段填寫內(nèi)容進行關鍵字識別判讀,根據(jù)Python 編輯的腳本工具對字段縣名、鄉(xiāng)鎮(zhèn)名稱、作物名稱等內(nèi)容進行檢查,將字段內(nèi)的非空值、0 值等錯誤信息以.txt格式導出報告。根據(jù)報告內(nèi)容對這些問題字段內(nèi)容進行修改,并對字段的序號重新進行順序賦值,對字段內(nèi)的內(nèi)部序號根據(jù)鄉(xiāng)鎮(zhèn)名稱進行統(tǒng)一賦值,賦值后對其后期表格匯總起關鍵作用。主要代碼如下:

矢量數(shù)據(jù)=arcpy.da.SearchCursor(查詢游標)(矢量路徑,["檢查字段名稱"]

for i in range(1,len(矢量數(shù)據(jù))):

if row[i]in["","0"None,"無"]:

文檔.write("必填項空項")

矢量數(shù)據(jù)= arcpy.da.UpdateCursor(更新游標)(矢量路徑,["序號"])

k=1

for row in 矢量數(shù)據(jù):

row[0]=k

k=k+1

矢量數(shù)據(jù).updateRow(row)

3.3 自動掛接

根據(jù)點矢量數(shù)據(jù)和面矢量數(shù)據(jù)之間的屬性編號唯一值進行鏈接,使點矢量數(shù)據(jù)的字段屬性信息賦值更新到面矢量數(shù)據(jù)字段信息上。這樣就能保證圖標輸出內(nèi)容一致,方便管理。此功能的主要實現(xiàn)方式為運用 UpdateCursor(更新游標)及SearchCursor(查詢游標)兩個模塊對點矢量數(shù)據(jù)、面矢量數(shù)據(jù)值進行讀寫,通過SearchCursor 對點矢量數(shù)據(jù)內(nèi)的字段信息遍歷后,運用UpdateCursor 對面矢量數(shù)據(jù)內(nèi)相對應的字段通過唯一字段值進行賦值或更新。主要代碼如下:

圖斑路徑=arcpy.GetParameterAsText(0)

參考點路徑=arcpy.GetParameterAsText(1)

圖斑= arcpy.da.UpdateCursor(更新游標)(圖斑路徑,["DKBH","序號","QXMC","XZMC","","導表"])

for row in 圖斑:

導表=format(row[18])

If 導表in["1","1.0"]:

參考點= arcpy.da.SearchCursor(查詢游標)(參考點路徑,

["DKBH","序號","縣名","鄉(xiāng)鎮(zhèn)名","",""導表"])

for row 1 in 參考點:

if int(float(row[0]))==int(float(row1[0])):

圖斑.updateRow(row)

3.4 圖表成果輸出

3.4.1 表格自動化輸出

標準化表格自動輸出時需要通過腳本工具箱引入xlwt(一個用于創(chuàng)建XLS 格式Excel 文件的Python 庫)站點包,通過遍歷讀取點矢量數(shù)據(jù)和面矢量數(shù)據(jù)字段的全部內(nèi)容,進行數(shù)據(jù)的過濾及整理[4],對鄉(xiāng)鎮(zhèn)名稱、面積等信息進行計算并統(tǒng)計,然后分別寫入不同的表格當中,并對不同表格內(nèi)容進行統(tǒng)計后完成成果表制作。實現(xiàn)方式如下:

1)用xlwt.Workbook 以及book.add_sheet 這兩個模塊創(chuàng)建新的標準化的表格及表單。

2)在腳本工具箱內(nèi)新建表頭集合,遍歷讀取表頭集合并運用sheet.write 將標準化的表頭寫進Excel 表單內(nèi)。

3)用arcpy.da.SearchCursor(查詢游標)讀取點矢量數(shù)據(jù)和面矢量數(shù)據(jù)字段信息內(nèi)容。

4)需要分類統(tǒng)計的信息按細化程度創(chuàng)建不同的標準集合,并在點矢量數(shù)據(jù)和面矢量數(shù)據(jù)遍歷過程中,根據(jù)關鍵字信息將不同的數(shù)據(jù)放到對應的集合當中。

5)對通過遍歷過濾及整理后的標準集合,用sheet.write 寫入對應的Excel 表單當中,并通過book.save(路徑)進行輸出并保存成各類標準的統(tǒng)計表格。

3.4.2 圖件自動化輸出

使用標準化MXD 制圖模板,通過替換點矢量數(shù)據(jù)和面矢量數(shù)據(jù)數(shù)據(jù)源的方法,替換模板相對應的內(nèi)容,對多種不同信息,通過唯一屬性字段進行命名[5-7],通過驅(qū)動來完成圖件自動化輸出,如圖5所示。

圖5 自動化出圖流程圖

需引入os 站點包,主要代碼如下:

路徑,文件名=os.路徑.split(矢量路徑)

模板= arcpy.mapping.MapDocument(MXD 模板路徑)

數(shù)據(jù)框=arcpy.mapping.ListDataFrames(模板)

要素=arcpy.mapping.ListLayers(模板,"",數(shù)據(jù)框[圖層序號])[要素序號]

要素.replaceDataSource(文件名,"SHAPEFILE_WORKSPACE",路徑)#替換數(shù)據(jù)源

模板.save()

模板.dataDrivenPages.exportToPDF(PDF 路徑,"ALL")#輸出pdf 成果

4 成果應用

1)針對該項目,本研究提升了以下幾項流程中的工作效率:

在“資料收集及數(shù)據(jù)初核階段”運用字段標準化模塊進行統(tǒng)一數(shù)據(jù)格式,解決了各縣上報不統(tǒng)一問題,為后期管理和作業(yè)提供標準信息。

在“種植作物遙感監(jiān)測核實階段”運用工具箱內(nèi)的字段內(nèi)容檢查、自動掛接解模塊解決了數(shù)據(jù)內(nèi)容的填寫初核及人為掛接時間長易出錯的問題,通過點矢量數(shù)據(jù)和面矢量數(shù)據(jù)的唯一字段進行自動掛接,將點矢量數(shù)據(jù)內(nèi)的信息賦予面矢量數(shù)據(jù)內(nèi)。

在“外業(yè)核實階段”運用MXD 制圖模板一次性將外業(yè)調(diào)查草圖及表格全部導出,為野外核實提供依據(jù)。改變了原來只能單一導出的模式,方便快捷,提高了工作效率。

在“成果匯總階段”運用自動導出反饋表模塊,一次導出各種標準的匯總表、區(qū)縣表、鄉(xiāng)鎮(zhèn)表等等匯總表格,對成果形成統(tǒng)一格式進行管理。

2)本研究中,由于數(shù)據(jù)獲取方式為各區(qū)縣自主上報,上報的數(shù)據(jù)各不相同,數(shù)據(jù)量大而且混亂,加之參與研究的人員眾多,造成了表格匯總錯誤、制圖樣式不統(tǒng)一等問題。此外制作各種表格所需要的時間長,匯總?cè)菀壮鲥e;出圖時只能單一制作處理,耗時耗力,造成人員浪費。

本次研究解決了由于各種原因造成的圖表輸出錯誤、整體匯總難的問題。經(jīng)測試,以區(qū)縣為單位,單人操作運用ArcGIS 自帶工具及Excel 等軟件進行數(shù)據(jù)整理及圖表輸出時(包含錯誤問題的修改)共用時45 min,運用該工具后全流程總用時9 min,節(jié)省了80% 的圖表成果制作時間。相關圖表自動輸出成果如表4 和圖6 所示。

圖6 圖表輸出成果

表4 區(qū)縣匯總表

3)本研究代碼經(jīng)稍許改動后,成功應用到了某省特色產(chǎn)業(yè)集群遙感監(jiān)測、某市人居環(huán)境遙感監(jiān)測、某縣工業(yè)企業(yè)用地遙感調(diào)查等項目中,解決了具體問題。

5 結(jié)語

通過本次研究,運用Python+ArcGIS 進行的二次開發(fā),利用其腳本批處理大量作業(yè)時比傳統(tǒng)單一運用ArcGIS 自帶工具操作簡單,節(jié)省了大量時間,提高數(shù)據(jù)處理的效率和準確率,根據(jù)研究需求導出的各種匯總表格清晰明了,避免人為匯總出錯,從而獲得高質(zhì)量的數(shù)據(jù)成果。

本次研究給矢量數(shù)據(jù)的圖表成果自動化輸出提供了解決思路,能為后續(xù)GIS 相關數(shù)據(jù)可視化方面研究提供一定思路。

猜你喜歡
匯總表字段匯總
2022年7月板帶材產(chǎn)量匯總表
2022年6月板帶材產(chǎn)量匯總表
圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
2022年3月板帶材產(chǎn)量匯總表
常用縮略語匯總
系統(tǒng)抽樣的非常規(guī)題匯總
2019年河南省水土流失治理統(tǒng)計匯總表(本年達到)
供應商匯總
供應商匯總
CNMARC304字段和314字段責任附注方式解析
石泉县| 长葛市| 无为县| 荔浦县| 安西县| 读书| 启东市| 昭苏县| 松溪县| 咸阳市| 武平县| 珠海市| 偏关县| 德保县| 岫岩| 韶关市| 项城市| 兴义市| 绵阳市| 丁青县| 太原市| 饶阳县| 武隆县| 凤凰县| 闽侯县| 阜新市| 金秀| 红桥区| 普宁市| 托克托县| 察隅县| 芜湖市| 剑阁县| 皮山县| 固镇县| 虞城县| 哈巴河县| 宜阳县| 九江县| 贺兰县| 中卫市|