胡友兵 ,王秀慶 ,闞光遠(yuǎn) ,蘇 翠 ,趙夢(mèng)杰
(1. 淮河水利委員會(huì)水文局(信息中心),安徽 蚌埠 233001;2. 淮河水利委員會(huì)沂沭泗水利管理局,江蘇 徐州 221009;3. 中國(guó)水利水電科學(xué)研究院防洪抗旱減災(zāi)研究所,北京 100038)
基于 GDAL 開(kāi)源庫(kù)的流域地貌特征提取
胡友兵1,王秀慶2,闞光遠(yuǎn)3,蘇 翠1,趙夢(mèng)杰1
(1. 淮河水利委員會(huì)水文局(信息中心),安徽 蚌埠 233001;2. 淮河水利委員會(huì)沂沭泗水利管理局,江蘇 徐州 221009;3. 中國(guó)水利水電科學(xué)研究院防洪抗旱減災(zāi)研究所,北京 100038)
GDAL 是一個(gè)在 X/MT 許可協(xié)議下讀寫(xiě)柵格、矢量空間數(shù)據(jù)的開(kāi)源庫(kù),針對(duì)水文學(xué)上流域地貌特征提取研究中與柵格、矢量數(shù)據(jù)的頻繁交互,引入 GDAL 地理空間開(kāi)源庫(kù)。分析 GDAL 模型庫(kù)結(jié)構(gòu),空間數(shù)據(jù)打開(kāi)、讀寫(xiě)及轉(zhuǎn)換等數(shù)據(jù)交互常用接口,在底層將上述接口與地貌參數(shù)提取算法無(wú)縫耦合。在 .Net 平臺(tái)上,利用輕型SharpMap 開(kāi)源空間數(shù)據(jù)渲染控件作為顯示窗體,開(kāi)發(fā)獨(dú)立地貌參數(shù)提取應(yīng)用程序;在 ArcGIS 平臺(tái)上通過(guò) ArcPy腳本語(yǔ)言包搭建地貌參數(shù)提取工具箱,通過(guò)圖解建模工具可以將其中的工具與 ArcGIS 相關(guān)工具進(jìn)行組合,構(gòu)建一鍵地貌提取模型,為流域地貌特征的提取計(jì)算提供一條簡(jiǎn)便實(shí)用的技術(shù)路徑。
GDAL;開(kāi)源庫(kù);流域;地貌特征;應(yīng)用程序;插件
在水文學(xué)的發(fā)展進(jìn)程中,流域地貌特征研究是一條貫穿始終的生命線[1]。為定量表征流域水文響應(yīng)規(guī)律,水文學(xué)上先后提出了大量的流域地貌參數(shù),如在水系拓?fù)涮卣餮芯恐刑岢龅?Strahler 和Sherve 2 種分級(jí)為代表的河流分級(jí)數(shù),流域形狀特征研究中提出的流域面積、長(zhǎng)度、寬度、伸長(zhǎng)比[2],及半分布式水文模型 TOPMODEL 中使用的地形指數(shù)等[3]。水文學(xué)產(chǎn)匯流規(guī)律模型均直接或間接地反映流域地貌規(guī)律,如地貌瞬時(shí)單位線理論[4],新安江模型中流域概化方式及反映地貌特征的蓄水容量、消退系數(shù)等參數(shù)[5],水文相似理論更是將流域幾何結(jié)構(gòu)作為重要判別指標(biāo)[6]。因此,流域地貌特征提取計(jì)算,是水文學(xué)研究中的一項(xiàng)重要的基礎(chǔ)工作。
近年來(lái),隨著計(jì)算機(jī)、3S 技術(shù)的發(fā)展,SRTM(航天飛機(jī)雷達(dá)地形測(cè)繪使命)及 ASTER GDEM(先進(jìn)星載熱發(fā)射和反射輻射儀全球數(shù)字高程模型)高精度免費(fèi)數(shù)據(jù)產(chǎn)品不斷涌現(xiàn),基于 DEM 的水文分析方法逐漸成為水文學(xué)研究的熱點(diǎn)[7-9]。為便于流域地貌提取計(jì)算,地理學(xué)軟件中均提供水文分析模塊,如 ArcGIS 中水文分析模塊、Archydrotools和 Rivertools 等[10-11]。由于流域地貌參數(shù)種類(lèi)繁多,這些軟件均難以全面覆蓋,為此引入 GDAL(Geospatial Data Abstraction Library)地理空間開(kāi)源庫(kù)中豐富靈活的空間數(shù)據(jù)讀取、轉(zhuǎn)換等操作接口,將流域地貌參數(shù)提取算法和用戶層的可視化空間圖形文件進(jìn)行無(wú)縫耦合,提出一套實(shí)用可行的流域地貌參數(shù)提取的技術(shù)路徑。
GDAL 最初由加拿大 Frank Warmerdam 開(kāi)發(fā)[12],在 GDAL1.3.2 版本之后,正式由開(kāi)源空間信息基金會(huì) OSGeo(Open Source Geospatial Foundation)下的 GDAL/OGR 項(xiàng)目管理委員會(huì)對(duì)其進(jìn)行維護(hù)升級(jí)。GDAL 是一個(gè)獨(dú)立專(zhuān)業(yè)開(kāi)源庫(kù),是一個(gè)在 X/MT 許可協(xié)議下讀寫(xiě)空間數(shù)據(jù)(包括柵格和矢量數(shù)據(jù))的轉(zhuǎn)換庫(kù),利用一套柵格/矢量抽象數(shù)據(jù)模型表達(dá)所支持的各種文件格式。GDAL 中對(duì)矢量數(shù)據(jù)讀寫(xiě)支持由 OGR(OGR Simple Features Library)庫(kù)支持。很多著名的 GIS 類(lèi)產(chǎn)品都使用該庫(kù),包括 ESRI 的ArcGIS 系列,Erdas,Google Earth,以及跨平臺(tái)的GRASS GIS 和 Quantumn GIS 系統(tǒng)等。
GDAL 支持的空間數(shù)據(jù)類(lèi)型多達(dá)上百種,支持的柵格數(shù)據(jù)格式有 GeoTIFF,Erdas Imagine,Arc/Info ASCII Grid,ASCII dem 等,支持的矢量數(shù)據(jù)格式有 ESRI(Shapef i le,ArcSDE 及 FileGDM),MapInfo(tab,mid 及 mif),GML,KML 和 PostGIS 等。
G D A L 使用的抽象數(shù)據(jù)模型有數(shù)據(jù)集(Dataset)、坐標(biāo)系統(tǒng)(Coordinate System)、仿射地理坐標(biāo)變換(Affine GeoTransform)、大地控制點(diǎn)(GCPs)、元數(shù)據(jù)(Metadata)、顏色表(Color Table)、柵格波段(Raster Band)、子數(shù)據(jù)集域(Subdatasets Domain)、圖像結(jié)構(gòu)域(Image Structure Domain)、XML 域(XML Domains)、RPC 域(RPC Domain)及快視圖(Overviews)[13]。
GDAL 中的類(lèi)均是從 GDALMajorObject 派生的,核心類(lèi)體系結(jié)構(gòu)如圖 1 所示,其中最常用的是GDALDataset 和 GDALRasterBand。
圖 1 GDAL 核心類(lèi)體系
OGR 中所有的類(lèi)都是以 OpenGIS 提供的簡(jiǎn)單要素 API 為藍(lán)本實(shí)習(xí)的,由 OGRGeometry(封裝幾何對(duì)象)、OGRSpatialReference(封裝空間參考)、OGRFeature(封裝幾何要素)、OGRFeatureDefn(封裝集合要素類(lèi)定義)、OGRLayer(封裝圖層)、OGRDataSource(封裝數(shù)據(jù)源)及 OGRSFDriver(封裝矢量格式驅(qū)動(dòng))七大類(lèi)組成。
GDAL 作為一套優(yōu)秀的開(kāi)源庫(kù),提供了一系列規(guī)范的調(diào)用接口,包括讀取、存儲(chǔ)、轉(zhuǎn)換、柵格處理、矢量柵格轉(zhuǎn)化、圖像校正等,可供各專(zhuān)業(yè)研究人員使用熟悉的開(kāi)發(fā)語(yǔ)言進(jìn)行調(diào)用。
使用 GDAL 打開(kāi)地理空間數(shù)據(jù)之前均需要注冊(cè)驅(qū)動(dòng),即針對(duì) GDAL 支持的數(shù)據(jù)格式,對(duì)柵格和矢量數(shù)據(jù)可分別調(diào)用 OGRRegisterAll ( ) 和GDALAllRegister ( ) 函數(shù)實(shí)現(xiàn)。在獲取驅(qū)動(dòng)之后,使用 OGRSFDriver 和 GDALDriver 類(lèi)提供的函數(shù)創(chuàng)建相應(yīng)的數(shù)據(jù)集(OGRDataSoure/GDALDataset)對(duì)象,最后利用數(shù)據(jù)集對(duì)象進(jìn)行數(shù)據(jù)的讀寫(xiě)和地理參數(shù)設(shè)置。
在得到矢量數(shù)據(jù)集(OGRDataSource)對(duì)象后,使用該對(duì)象提供的 GetLayer ( ) 方法得到圖層對(duì)象,對(duì)圖層的 GetNextFeature ( ) 方法進(jìn)行遍歷即可得到圖層中的所有要素。GDAL 讀寫(xiě)柵格圖像函數(shù)由GDALDataset 的 RasterIO ( ) 接口實(shí)現(xiàn),該接口的聲明為:CPLErr RasterIO(GDALRWFlag eRWFlag, int nXoff, int nYoff, int nXSize, int nYSize, void* pData, int nBufXSize, int nBufYSize, GDALDataType eBufType,int nBandCount, int* panBandMap, int nPixelSpace, int nLineSpace, int nBandSpace)。
該接口中,第 1 個(gè)參數(shù)表示讀取或?qū)懭氩僮?,?2 和 3 個(gè)參數(shù)表示讀寫(xiě)圖像的起始行列位置,第 4和 5 個(gè)參數(shù)表示讀寫(xiě)圖像的行列數(shù)目,第 6 個(gè)參數(shù)是指向讀寫(xiě)數(shù)據(jù)對(duì)象的指針,第 7 和 8 個(gè)參數(shù)是讀寫(xiě)數(shù)據(jù)過(guò)程中緩沖區(qū)大小,第 9~11 個(gè)參數(shù)用于存取的內(nèi)存數(shù)據(jù)的排列順序。
GDAL 庫(kù)中柵格轉(zhuǎn)矢量由接口 GDALPolygonize( ) 實(shí)現(xiàn),聲明為:CPLErr GDALPolygonize(GDALRasterBandH hSrcBand, GDALRasterBandH hMaskBand, OGRLayerH hOutLayer, int pPixValField,char** papszOption, GDALProgressFunc pfnProgress,void* pProgressArg)。
該接口中,第 1 個(gè)參數(shù)為輸入柵格波段對(duì)象,第 2 個(gè)參數(shù)為輸入柵格掩碼波段,第 3 個(gè)為輸出矢量文件圖層,第 4 個(gè)為矢量圖層中保存像元值的字段序號(hào),第 5 個(gè)參數(shù)為轉(zhuǎn)化算法,一般為“8CONNECTED”,第 6 和 7 個(gè)參數(shù)為顯示計(jì)算進(jìn)度的回調(diào)函數(shù)。
采用 GDAL 中豐富的數(shù)據(jù)信息讀取接口,將地理空間數(shù)據(jù)轉(zhuǎn)換為地貌參數(shù)提取算法層需求的內(nèi)存數(shù)組,再將算法層計(jì)算的結(jié)果數(shù)組轉(zhuǎn)換為用戶層需求的可視化圖形文件,即可實(shí)現(xiàn)數(shù)據(jù)層、算法層和用戶層的無(wú)縫耦合,結(jié)構(gòu)圖如圖 2 所示。采取獨(dú)立應(yīng)用程序和商用軟件內(nèi)嵌工具箱 2 種開(kāi)發(fā)方式,搭建可視化流域地貌參數(shù)提取軟件。
圖 2 流域地貌參數(shù)提取軟件結(jié)構(gòu)圖
在 .Net 2.0 平臺(tái)上,采用輕型 SharpMap 開(kāi)源空間數(shù)據(jù)渲染控件作為顯示窗體,開(kāi)發(fā)了一套獨(dú)立性的流域地貌特征提取軟件。主要有空間數(shù)據(jù)文件加載,地形和水文分析等功能。地形分析功能實(shí)現(xiàn)了基于 DEM 數(shù)據(jù)的坡度、坡向及地形陰影計(jì)算,水文分析功能實(shí)現(xiàn)了洼地處理、流向計(jì)算、水系提取、河道分級(jí)。
圖 3 流域地貌參數(shù)提取應(yīng)用程序示意圖
該軟件以經(jīng)典的圖形對(duì)話框的形式與用戶進(jìn)行交互,典型輸入界面及計(jì)算結(jié)果如圖 3 所示。地貌提取結(jié)果利用 GDAL 柵格生成工具直接轉(zhuǎn)換為影像格式,如圖 4 a 和 b 所示,可形象直觀地查看計(jì)算結(jié)果,同時(shí)對(duì)于需求的地貌統(tǒng)計(jì)特征,系統(tǒng)計(jì)算完成后按文本文件的方式輸出,如圖 4 c 所示。
圖 4 典型地貌提取計(jì)算成果
插件是一種遵循一定規(guī)范的應(yīng)用程序接口編寫(xiě)出來(lái)的應(yīng)用程序,目前很多成熟軟件均支持插件開(kāi)發(fā)機(jī)制,ArcGIS 作為一套可伸縮全面的 GIS 平臺(tái),支持多種插件開(kāi)發(fā)機(jī)制。在 10.1 版本中對(duì)傳統(tǒng) Python 腳本進(jìn)行再封裝構(gòu)建 ArcPy 腳本包,能夠以更加實(shí)用高效的方式通過(guò) Python 執(zhí)行地理數(shù)據(jù)分析、轉(zhuǎn)換、管理等功能[14]。
通過(guò) ArcPy 腳本語(yǔ)言編寫(xiě) ArcGIS 地貌參數(shù)提取工具箱 HuDEM,如圖 5 所示,同時(shí),利用 ArcGIS平臺(tái)中的圖解建模工具,將 ArcGIS 中已有的相關(guān)工具與地貌參數(shù)提取工具耦合,即可實(shí)現(xiàn)流域地貌信息提取的一鍵計(jì)算。
圖 5 ArcGIS 平臺(tái)插件機(jī)制流域地貌提取工具箱
流域數(shù)字化及地貌特征提取工具界面友好,使用簡(jiǎn)便,實(shí)現(xiàn)了提取流域信息時(shí)的可視化計(jì)算。編制完成后,已經(jīng)在河南、安徽等省多個(gè)中小流域得到實(shí)例驗(yàn)證,均取得良好的應(yīng)用效果。同時(shí)利用地貌特征提取工具可為流域水文模型的應(yīng)用提供技術(shù)支撐。
近年來(lái),中小河流因降雨引發(fā)的洪水災(zāi)害問(wèn)題日益突出,且大多位于資料短缺的山丘區(qū),洪水具有突發(fā)性強(qiáng),匯流時(shí)間快,預(yù)見(jiàn)期短及分布廣等特點(diǎn)。為做好中小河流洪水預(yù)警工作,可行的路徑是通過(guò)判斷流域間的相似性規(guī)律,將有資料地區(qū)預(yù)報(bào)方法移用于中小河流地區(qū)。采用本研究建立的地貌參數(shù)提取軟件,對(duì)流域間的地貌特征進(jìn)行計(jì)算,并統(tǒng)計(jì)地形指數(shù)頻率分布特征進(jìn)行相似流域判斷。目前已完成河南省丹江流域軍馬河和江蘇省洪澤湖周邊維橋等小流域共 20 多個(gè)中小河流地區(qū)水文預(yù)報(bào)方案建設(shè),為無(wú)資料地區(qū)洪水預(yù)警提供了重要參考。
通過(guò)分析 GDAL 開(kāi)源庫(kù)中豐富靈活的數(shù)據(jù)操作接口,構(gòu)建對(duì)地理空間數(shù)據(jù)進(jìn)行直接讀寫(xiě)、轉(zhuǎn)換的技術(shù)方法,實(shí)現(xiàn)了流域地貌參數(shù)提取算法層和可視化應(yīng)用層的無(wú)縫拼接。在 .Net 平臺(tái)上利用輕型SharpMap 渲染控件,開(kāi)發(fā)了輕型可視化獨(dú)立應(yīng)用程序;在 ArcGIS 平臺(tái)上利用 ArcPy 腳本搭建了專(zhuān)業(yè)工具箱,并在無(wú)資料地區(qū)洪水預(yù)警中進(jìn)行應(yīng)用,完成了 20 多個(gè)中小河流地區(qū)水文預(yù)報(bào)方案建設(shè)。
流域地貌特征是水文學(xué)中貫穿始終的一條生命線,構(gòu)建一套簡(jiǎn)便靈活的地貌特征提取技術(shù)方法,將水文學(xué)的理論方法應(yīng)用于生產(chǎn)實(shí)踐,對(duì)水文學(xué)發(fā)展具有重要意義。下一步將針對(duì)不同水文學(xué)模型的流域概化特點(diǎn),豐富地貌特征計(jì)算內(nèi)容,為水文學(xué)方法應(yīng)用提供方便。并在此基礎(chǔ)上,對(duì)模型變量與地貌特征進(jìn)行分析統(tǒng)計(jì),為無(wú)資料地區(qū)不同水文方法應(yīng)用提供技術(shù)途徑。
[1] 芮孝芳. 水文學(xué)原理[M]. 北京:中國(guó)水利水電出版社,2004: 18-43.
[2] 錢(qián)寧,張仁,周志德. 河床演變學(xué)[M]. 北京:科學(xué)出版社,1987: 1-30.
[3] BEVEN K J, KIRKBY M J. A physically based variable contributing area model of basin hydrology[J]. Hydrological Sciences Bulletin, 1970,24 (1): 43-69.
[4] 芮孝芳. 地貌瞬時(shí)單位線研究進(jìn)展[J]. 水科學(xué)進(jìn)展,1999,10 (3): 345-350.
[5] 何虹,夏達(dá)忠,甘郝新. 基于 MODIS 的水文特征指標(biāo)提取與應(yīng)用研究[J]. 水利信息化,2011 (4): 4-8.
[6] 劉金濤,宋慧卿,王愛(ài)花. 水文相似概念與理論發(fā)展探析[J]. 水科學(xué)進(jìn)展,2014,25 (2): 288-296.
[7] 張朝忙,劉慶生,劉高煥,等. SRTM3 與 ASTER GDEM數(shù)據(jù)處理及應(yīng)用進(jìn)展[J]. 地理與地理信息科學(xué),2012,28 (5):29-34.
[8] 鐘永,杜文印. 河道數(shù)字化關(guān)鍵技術(shù)研究及應(yīng)用[J]. 水利信息化,2015 (5): 17-21.
[9] 湯翠蓮,范青松,劉瑩. 一種保持地貌特征的數(shù)字高程模型生成方法[J]. 人民長(zhǎng)江,2007,38 (10): 23-25.
[10] 李俊超,馬倩,陶均. 基于 ArcGIS 的水文流域分析及應(yīng)用[J]. 地理空間信息,2012,10 (6): 121-123.
[11] 李春紅,任立良,達(dá)衛(wèi)特,等. 數(shù)字水系構(gòu)建方法淺析[J]. 水文,2002,22 (6): 1-4.
[12] FRANK W. GDAL-Geospatial Data Abstraction Library[EB/OL]. [2017-05-05]. http://www. gdal.org/.
[13] 李民錄. GDAL 源碼剖析與開(kāi)發(fā)指南[M]. 北京:人民郵電出版社,2014: 221-297.
[14] 余詠生,彭艷麗,尹言軍,等. 基于 Arcpy 的影像地圖自動(dòng)處理技術(shù)研究[J]. 測(cè)繪通報(bào),2015 (3): 82-85.
Watershed geomorphic feature extraction based on open source library GDAL
HU Youbing1, WANG Xiuqing2, KAN Guangyuan3, SU Cui1, ZHAO Mengjie1
(1. Hydrologic Bureau (information center), the Huai River Resources Commission, Bengbu 233001, China;2. Management of Water Conservancy, Yi-Shu-Si, the Huai River Resources Commission, Xuzhou 221009, China;3. Research Center on Flood and Drought Disaster Reduction, China Institute of Water Resources and Hydropower Research, Beijing 100038, China)
GDAL is an open source library for raster and vector geospatial data under an X/MIT license. Against on frequent interaction between geographical raster and vector data in watershed geomorphology extraction of hydrology,the GDAL geospatial open source library is introduced. It analyzes on the model structure of GDAL and some common use interface like geospatial data open, read, write and data convert. Geomorphic parameter extraction algorithm seamlessly couples with the interface at the bottom. An independent application program is developed on .Net platform that use light SharpMap open source spatial data rendering control as a display window. A profession toolbox on ArcGIS platform with ArcPy scripting language packages for geomorphology parameter extraction is established, by combining it with other related tools through the graphical modeling tool. The one key geomorphology extraction model is built. It provides a practical technical path for geomorphology parameter extraction.
GDAL; open source library; watershed; geomorphic feature; application program; plugin
TP274;P931
A
1674-9405(2017)06-0041-05
10.19364/j.1674-9405.2017.06.008
2017-05-22
國(guó)家重點(diǎn)研發(fā)計(jì)劃(2016YFC0402703);水利部公益性行業(yè)科研專(zhuān)項(xiàng)經(jīng)費(fèi)(201401027,201501007)
胡友兵(1986-),男,安徽池州人,博士,工程師,主要從事水文學(xué)及水利信息化方面工作。