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

?

基于ArcGIS ModelBuilder 的多時(shí)相柵格數(shù)據(jù)處理方法

2023-01-24 04:49黃選威
南方自然資源 2022年12期
關(guān)鍵詞:輸入輸出批量文件夾

◎ 黃選威

廣西地圖院,廣西 南寧 530023

目前,多時(shí)相柵格數(shù)據(jù)已廣泛應(yīng)用于生態(tài)環(huán)境和氣候變化領(lǐng)域。時(shí)間分辨率為小時(shí)或天的柵格數(shù)據(jù)往往需要處理成月均或年均柵格數(shù)據(jù),才能實(shí)現(xiàn)進(jìn)一步分析。對于跨度數(shù)十年的單時(shí)或日均數(shù)據(jù),單項(xiàng)數(shù)據(jù)處理的工作量大、耗時(shí)多、效率低。此次研究筆者針對IMERG全球2001 年—2020 年約7 300 幅降水量單日NetCDF 文件展開數(shù)據(jù)研究,利用ArcGIS ModelBuilder 可視化編程開發(fā)語言進(jìn)行集成開發(fā)處理,獲取廣西2001 年—2020 年月均降水量和年均降水量柵格數(shù)據(jù)集,從而實(shí)現(xiàn)快速獲取降水量基礎(chǔ)研究數(shù)據(jù)。

1 方法原理

NetCDF(Network Common Data Form)網(wǎng)絡(luò)通用數(shù)據(jù)格式是一種面向數(shù)組型并適于網(wǎng)絡(luò)共享數(shù)據(jù)的描述和編碼標(biāo)準(zhǔn)[1]。在ArcGIS 中,可以通過NetCDF 文件創(chuàng)建TIF柵格數(shù)據(jù)集,用一個維度來顯示所有柵格數(shù)據(jù)的單元值。對于具有相同屬性的多個柵格數(shù)據(jù),要合成一個更大時(shí)間分辨率的柵格數(shù)據(jù)集,通常采用鑲嵌至新柵格的方法,求取單個柵格像元上的平均值來實(shí)現(xiàn),公式可以表示為:

式(1)中,Vmean為更大時(shí)間分辨率柵格數(shù)據(jù)集的像元值;Vij表示第i行第j列的像元位置的數(shù)值;n表示鑲嵌原始柵格的數(shù)量。

ArcGIS ModelBuilder 是一種可視化的編程語言,用于構(gòu)建地理處理工作流。ArcGIS ModelBuilder 能夠?qū)⒁幌盗蠥rcToolbox 現(xiàn)有工具和ArcPy 語言通過輸入輸出的方式串聯(lián)起來進(jìn)行數(shù)據(jù)處理[2]。這種處理方式節(jié)省人機(jī)交互的中間過程,并且能夠迭代具有相同屬性樣式的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的自動化或半自動化批量處理。趙強(qiáng)等人通過MATLAB 等程序語言進(jìn)行NetCDF 數(shù)據(jù)的批量讀寫操作,但該讀寫方式設(shè)計(jì)需要在特定環(huán)境下進(jìn)行,且MATLAB 可視化表達(dá)效果較為單一[3]。溫樹棟、昝建春等人基于ArcGIS ModelBuilder 單一計(jì)算和解析路徑的方式來實(shí)現(xiàn)地理數(shù)據(jù)庫按區(qū)域自動批量的裁剪輸出,但輸入輸出位置是固定的,不具有遷移重復(fù)使用的靈活性[4-5]。

常用的ModelBuilder 由變量、工具和連接符組成(見圖1)。

圖1 ArcGIS ModelBuilder 工作流程示意圖

常用的ArcGIS ModelBuilder 結(jié)構(gòu)單元主要組成部分如表1 所示。

表1 ArcGIS ModelBuilder 結(jié)構(gòu)單元主要組成部分表

2 實(shí)驗(yàn)數(shù)據(jù)與處理方法

2.1 數(shù)據(jù)來源

此次研究的數(shù)據(jù)源自2001 年1 月1 日至2020 年12 月31 日約7 300 幅全球降水量GPM IMERG 數(shù)據(jù)。通過訪問美國NASA 地球科學(xué)數(shù)據(jù)和信息服務(wù)中心(Goddard Earth Sciences Data and InformationServices Center,GES DISC)的網(wǎng)站(https://disc.gsfc.nasa.gov)可以下載到數(shù)據(jù)格式為NetCDF 的全球日均降水量數(shù)據(jù)。該數(shù)據(jù)的空間分辨率為0.1°,單個NetCDF 數(shù)據(jù)大小約30 M。

2.2 處理方法

筆者針對數(shù)據(jù)量巨大的NetCDF 日均降水量數(shù)據(jù),此次研究首先使用ArcGIS ModelBuilder中的柵格數(shù)據(jù)迭代器進(jìn)行循環(huán)讀取,獲得的文件名通過ArcPy 中的截取函數(shù)截取特定字段,用于創(chuàng)建特定文件夾,使用工具將NetCDF 數(shù)據(jù)轉(zhuǎn)換為TIF 數(shù)據(jù),生成的TIF 文件放入特定文件夾中。然后,將單個文件夾內(nèi)的數(shù)據(jù)以收集多值的方式作為單一數(shù)據(jù)整體輸入,在迭代循環(huán)文件夾的基礎(chǔ)上,迭代文件夾內(nèi)部的TIF數(shù)據(jù)。最后,通過鑲嵌至新柵格的方式生成某一時(shí)間段月均降水量或年均降水量柵格數(shù)據(jù)。數(shù)據(jù)處理過程如圖2 所示。

圖2 數(shù)據(jù)處理過程示意圖

2.3 技術(shù)難點(diǎn)

(1)字段獲取與匹配。獲取的原始日均降水量數(shù)據(jù)的文件名稱較長,如3B—DAY.MS.MRG.3IMERG.20200101—S000000—E235959.V06.nc4。此次研究通過ArcPy 中的ArcPy.Split()函數(shù)進(jìn)行日期字符的獲取,再利用獲取的特定字段創(chuàng)建文件夾和TIF 數(shù)據(jù)文件名,通過“\%文件名%\%柵格數(shù)據(jù)%.tif”地址組合的方式進(jìn)行數(shù)據(jù)特定文件夾下的自動保存。其中,“%文件名%”和“%柵格數(shù)據(jù)%”為自定義變量,通過連接的方式組合地址路徑,便于靈活選擇輸出地址。

(2)循環(huán)迭代和嵌套。將NetCDF 文件轉(zhuǎn)化為按月保存的TIF 文件,要先迭代文件夾內(nèi)的日均柵格數(shù)據(jù)作為收集值整體輸入,再迭代該文件夾進(jìn)行多年數(shù)據(jù)處理,這里需要對文件夾和文件夾內(nèi)的數(shù)據(jù)都進(jìn)行迭代讀取。由于ModelBuilder 同一模型下不能出現(xiàn)2 個或2 個以上的迭代器,因此需要把其中一個迭代模型作為新工具嵌入到另一個模型中進(jìn)行2 次以上的迭代計(jì)算。這種模型嵌套的方式能夠有效解決多個迭代器在同一個模型進(jìn)程中共同計(jì)算的問題。

(3)多值合一輸入輸出。由于迭代器每次只能讀取1 個數(shù)據(jù),但計(jì)算數(shù)據(jù)平均值要讀取多個數(shù)據(jù),因此需要通過迭代的方式讀取所有柵格數(shù)據(jù),直到讀完文件夾內(nèi)所有數(shù)據(jù)為止,之后將其作為一個數(shù)據(jù)整體進(jìn)行輸入。這種方式可以避免迭代一個數(shù)據(jù)就進(jìn)行鑲嵌,或者迭代未完成就計(jì)算的問題。

(4)遷移重復(fù)使用。模型中的輸入輸出變量可分為帶固定參數(shù)變量和不帶參數(shù)變量2種。帶參數(shù)的變量通過輸入固定的路徑、數(shù)據(jù)直接進(jìn)行計(jì)算,每次計(jì)算都要重新設(shè)置新的參數(shù),不利于遷移多次使用。對于不帶參數(shù)的變量,將其設(shè)為空值,并作為開源變量,可以由使用者自行輸入,進(jìn)行參數(shù)調(diào)整。此次研究筆者將必要參數(shù)作為不帶參數(shù)的變量,均做開放處理,便于計(jì)算模型重復(fù)使用和調(diào)整。圖3 中的所有變量右上角帶p 標(biāo)志的均為不帶參數(shù)的變量。

2.4 模型構(gòu)建

以日均數(shù)據(jù)生成月均數(shù)據(jù)為例,模型設(shè)計(jì)主要包括按月創(chuàng)建文件夾、NetCDF 數(shù)據(jù)轉(zhuǎn)換為TIF、按月鑲嵌平均計(jì)算3 部分(見圖3)。

(1)按月創(chuàng)建文件夾。考慮到原始數(shù)據(jù)的文件名讀取、存儲不方便,需要生成月份的文件夾來存儲對應(yīng)月份的單日數(shù)據(jù)。在圖3(a)中,“原始數(shù)據(jù)文件夾”用于輸入原始日均數(shù)據(jù)位置,“文件夾位置”用于輸出生成月份文件夾的位置。此次研究筆者使用計(jì)算值工具,利用截取函數(shù)ArcPy.Split()按照關(guān)鍵字符位置進(jìn)行讀取月份如“202001”6 位,其他字符舍去,即可生成名稱為“202001”的文件夾。

(2)NetCDF 數(shù)據(jù)轉(zhuǎn)換為TIF。由于NetCDF數(shù)據(jù)格式不是GIS 常用數(shù)據(jù)類型,因此需要先進(jìn)行數(shù)據(jù)轉(zhuǎn)換。此次研究筆者通過ArcGIS 工具箱中的創(chuàng)建NetCDF 柵格圖層、復(fù)制柵格、按掩膜裁剪的工具進(jìn)行處理。將對應(yīng)轉(zhuǎn)換后的日均TIF 柵格數(shù)據(jù)存入到相應(yīng)月份文件夾中。在圖3(b)中,“文件夾”為原始數(shù)據(jù)位置;“通配符”和“文件擴(kuò)展名”分別對應(yīng)文件名的關(guān)鍵字和文件類型;NetCDF 數(shù)據(jù)的變量參數(shù)HQprecipitation、Lon、Lat 可以自行輸入,也可以作為默認(rèn)變量填入?yún)?shù);“裁剪矢量數(shù)據(jù)”為進(jìn)行掩膜裁剪的研究區(qū)范圍;“輸出文件位置”為月份文件夾所在的上一層文件夾。

(3)迭代按月鑲嵌計(jì)算。將圖3(b)過程生成的TIF 柵格數(shù)據(jù)作為一個整體輸入,再進(jìn)行鑲嵌計(jì)算。需要注意的是,不能只把收集值作為一個簡單的變量放入模型中,需要將其設(shè)置為帶p 標(biāo)志的參數(shù)變量,否則就會以下面這種方式進(jìn)行計(jì)算:

式(2)顯然與式(1)的計(jì)算結(jié)果不同,這不是此次研究需要的結(jié)果。

(4)迭代文件夾進(jìn)行月均計(jì)算。將圖3(c)的模型作為一個整體嵌套到圖3(d)中,圖3(c)是迭代循環(huán)月份文件夾中的日均TIF 柵格數(shù)據(jù),圖3(d)是迭代循環(huán)不同的文件夾,嵌套的方式可以進(jìn)行多次循環(huán)。圖3(d)中,“中間數(shù)據(jù)文件夾”為月份文件夾所在的上一層文件夾位置,“輸出位置”為生成月均數(shù)據(jù)的存放位置。

圖3 月均降水量數(shù)據(jù)批量處理模型圖

3 分析討論

批量處理模型設(shè)計(jì)完成之后,選取2020 年12 個月366 份的全年NetCDF 日均數(shù)據(jù),分別通過常規(guī)人工方法和批量處理模型工具法進(jìn)行處理,比較數(shù)據(jù)處理花費(fèi)的時(shí)間(見圖4)。

圖4 常規(guī)人工方法和批量處理模型工具法耗時(shí)對比圖

實(shí)驗(yàn)結(jié)果表明,將日均降水量數(shù)據(jù)處理成月均降水量柵格數(shù)據(jù),批量處理模型工具法用時(shí)約為5 min/月,常規(guī)人工方法用時(shí)約為48 min/月,批量處理模型工具法在數(shù)據(jù)處理時(shí)間上較常規(guī)人工方法縮短8 了倍以上。由此可見,批量處理模型工具法能大幅提高多時(shí)相柵格數(shù)據(jù)處理的效率,能有效克服常規(guī)人工方法效率低、用時(shí)長、容易出錯等問題,并且可以使用ArcGIS 中的地理處理結(jié)果,將其作為計(jì)算包整體運(yùn)算,減少設(shè)置參數(shù)的時(shí)間。

與MATLAB 方法相比,此次研究不需要進(jìn)行復(fù)雜的編程計(jì)算,使用模塊化的封裝工具即可實(shí)現(xiàn)搭積木式計(jì)算處理,并且ArcGIS 支持二次開發(fā),可不依靠環(huán)境進(jìn)行運(yùn)行計(jì)算,對于零基礎(chǔ)的使用者來說較為友好。通常情況下,在數(shù)據(jù)輸入輸出路徑上,很多模型工具往往都是固定的,即輸入數(shù)據(jù)的路徑也是輸出路徑,不能自行設(shè)置,不具有靈活性。此次研究筆者將輸入輸出位置作為不帶路徑參數(shù)的變量開放出來,提供給使用者自行輸入,大大增強(qiáng)了批量處理模型工具的遷徙性和提高了重復(fù)使用水平。同時(shí),批量處理模型工具法不局限于單一的裁剪計(jì)算,而是把名稱修改、數(shù)據(jù)轉(zhuǎn)換、裁剪提取、加權(quán)計(jì)算、數(shù)據(jù)生成等柵格數(shù)據(jù)處理的常見流程進(jìn)行綜合設(shè)計(jì),對于其他具有不同需求的柵格數(shù)據(jù)處理來說,具有很強(qiáng)的借鑒和指導(dǎo)意義。

4 結(jié) 語

此次研究中,筆者基于ArcGIS Model-Builder 可視化編程開發(fā)環(huán)境,集成ArcToolbox 現(xiàn)有工具和ArcPy 語言處理,開發(fā)實(shí)現(xiàn)多時(shí)相柵格數(shù)據(jù)批量處理模型工具。研究中,對于輸入輸出變量,采用空參數(shù)的形式,能滿足和實(shí)現(xiàn)批量處理模型工具的可遷移性和重復(fù)使用。同時(shí),使用ArcGIS 臨時(shí)數(shù)據(jù)庫ScratchGDB,避免了大量中間數(shù)據(jù)的出現(xiàn),節(jié)省了內(nèi)存。下一步,應(yīng)對不常使用的輸入輸出變量直接填充相應(yīng)參數(shù),減少批量處理模型工具使用過程中變量交互的次數(shù);擴(kuò)展模型工具的數(shù)量和模塊選項(xiàng),使用者在做修改調(diào)整后,即可對其他相似類型的柵格數(shù)據(jù)進(jìn)行批量處理。

猜你喜歡
輸入輸出批量文件夾
批量提交在配置分發(fā)中的應(yīng)用
Fast Folders,讓你的文件夾四通八達(dá)
Camtasia Studio高清視頻輸入輸出原理及方法
采用經(jīng)濟(jì)數(shù)控車床批量車削孔類工件的再實(shí)踐
鐵路信號系統(tǒng)安全輸入輸出平臺
摸清超標(biāo)源頭 大文件夾這樣處理
輸入輸出理論在大學(xué)英語聽說課堂中的教學(xué)探索
調(diào)動右鍵 解決文件夾管理三大難題
輸入輸出視角下高職英語教學(xué)研究
不容忽視的空文件夾
沙河市| 同心县| 安阳县| 和平县| 民县| 定兴县| 丹棱县| 土默特左旗| 基隆市| 民丰县| 莲花县| 盐亭县| 泽州县| 莱芜市| 罗平县| 定襄县| 武平县| 武陟县| 阳春市| 金沙县| 武川县| 宁河县| 三都| 如东县| 东阿县| 禹州市| 泗水县| 衡山县| 安达市| 日喀则市| 红安县| 石景山区| 筠连县| 宁晋县| 嘉祥县| 隆德县| 平阳县| 明溪县| 呼伦贝尔市| 鄱阳县| 阳信县|