郭強(qiáng) 何瀟 朱大明
摘 ?要: 針對(duì)天地圖·云南平臺(tái)數(shù)據(jù)更新的需求,提出了基于地理信息系統(tǒng)(GIS)的海量DOM影像數(shù)據(jù)重采樣系統(tǒng)的設(shè)計(jì)方案,論述了系統(tǒng)的結(jié)構(gòu)以及實(shí)現(xiàn)方法。重點(diǎn)對(duì)系統(tǒng)的整體框架、功能設(shè)計(jì)和系統(tǒng)實(shí)現(xiàn)進(jìn)行了詳細(xì)介紹。有效解決了將1:2000DOM影像批量化重采樣為1:5000DOM影像的問題,完成了天地圖·云南平臺(tái)數(shù)據(jù)更新工作。
關(guān)鍵詞: GIS;DOM;重采樣;ArcObjects
中圖分類號(hào): TP391. 41 ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.08.004
本文著錄格式:郭強(qiáng), 何瀟, 朱大明, 等. 基于GIS的海量DOM影像數(shù)據(jù)重采樣系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件,2019,40(8):1419
【Abstract】: Aiming at the demand of Map World·Yunnan platform data update, a design scheme of massive DOM image data re-sampling system based on geographic information system (GIS) is proposed, and the structure and implementation method of the system are discussed. The focus is on the overall framework, functional design and implementation of the system. It effectively solves the problem of re-sampling 1:2000 DOM image into 1:5000 DOM image, and completes the data update work of Map World·Yunnan platform.
【Key words】: GIS; DOM; Re-sampling; ArcObjects
0 ?引言
數(shù)字正射影像圖(Digital Orthophoto Map),縮寫DOM)是對(duì)航空航天影像的像素進(jìn)行數(shù)字微分糾正和鑲嵌,按照國家基本比例尺的圖幅范圍裁剪生成的數(shù)字正射影像集[1]。DOM不但具有地圖的影像特征和幾何精度,而且集高精度、信息豐富和真實(shí)直觀等優(yōu)點(diǎn)于一體。DOM不僅可以充當(dāng)?shù)貓D分析的背景控制信息、還可以從中獲取自然資源的信息和社會(huì)發(fā)展的情況、為災(zāi)害防治以及建筑規(guī)劃提供可靠的依據(jù)。
天地圖·云南平臺(tái)作為國家“天地圖”的省級(jí)節(jié)點(diǎn),旨在為公眾提供提供專業(yè)的地理信息綜合服務(wù)。云南地處高原,部分地區(qū)海拔落差太大,氣象條件不穩(wěn)定,采集到原始影像包括1:2000DOM和部分1:5000DOM。為滿足天地圖·云南平臺(tái)的更新需求和國家保密要求,需要將現(xiàn)有全省范圍的1:2000DOM影像重采樣為1:5000DOM影像。天地圖·云南的影像數(shù)據(jù)處理工作主要基于ArcGIS軟件平臺(tái)進(jìn)行,海量DOM影像重采樣的生產(chǎn)過程繁瑣,而且包含了大量耗時(shí)耗力重復(fù)性工作。針對(duì)現(xiàn)有的云南全省約39萬平方公里的DOM影像,本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于GIS的海量DOM影像數(shù)據(jù)的重采樣系統(tǒng)。
1 ?基本思路與技術(shù)路線
1.1 ?基本思路
系統(tǒng)需要對(duì)30T以上的數(shù)據(jù)進(jìn)行處理,要求實(shí)時(shí)性和可維護(hù)性好,安全可靠性高,操作使用方便,同時(shí)滿足7*24小時(shí)不間斷運(yùn)行的要求。由于原始影像數(shù)據(jù)數(shù)量龐大,情況復(fù)雜,要求系統(tǒng)隨時(shí)根據(jù)突發(fā)的特殊情況進(jìn)行修改,故采用分布執(zhí)行方案。將較為獨(dú)立的數(shù)據(jù)處理步驟分成多個(gè)子系統(tǒng)進(jìn)行操作,在人工的干預(yù)下各個(gè)子系統(tǒng)有序運(yùn)行;為了降低數(shù)據(jù)處理過程的風(fēng)險(xiǎn)性,對(duì)影像數(shù)據(jù)進(jìn)行單個(gè)處理,即每個(gè)圖幅根據(jù)自身情況要執(zhí)行全部的或者部分的操作步驟。在執(zhí)行過程發(fā)生意外中斷后,可繼續(xù)執(zhí)行,不影響整體進(jìn)度。
1.2 ?技術(shù)路線和要求
(1)技術(shù)路線
整個(gè)重采樣過程分為兩部分:一是將現(xiàn)有的1:2000DOM原始影像轉(zhuǎn)換為1:5000DOM。首先要按照國家標(biāo)準(zhǔn)生成云南省0.5米分辨率的影像分幅外擴(kuò)圖框,每個(gè)圖框要攜帶標(biāo)準(zhǔn)圖幅號(hào)屬性,找出外擴(kuò)圖框與原始影像圖框的對(duì)應(yīng)關(guān)系,然后將0.2米分辨率的影像圖經(jīng)過重采樣操作變?yōu)?.5米分辨率。二是對(duì)原始1:5000DOM影像數(shù)據(jù)進(jìn)行空間參考轉(zhuǎn)換,把重采樣后臨時(shí)影像和空間參考轉(zhuǎn)換后臨時(shí)影像進(jìn)行鑲嵌合并、裁剪得到成果影像。
(2)技術(shù)要求
以《GDPJ 05-2013數(shù)字正射影像生產(chǎn)技術(shù)規(guī)定》為依據(jù),可知1:5000數(shù)字正射影像產(chǎn)品的標(biāo)準(zhǔn):大地基準(zhǔn)采用2000國家大地坐標(biāo)系、高程基準(zhǔn)采用1985國家高程基準(zhǔn)、投影分帶采用高斯克呂格投影3°分帶[2]。
2 ?關(guān)鍵技術(shù)
2.1 ?雙線性內(nèi)插法(Linear Interpolation)
重采樣是指根據(jù)一類象元的信息內(nèi)插出另一類象元信息的過程。目前,最常用的重采樣方法有:雙線性內(nèi)插法(Linear Interpolation)、最鄰近內(nèi)插法(Nearest Neighbor Interpolation)和三次卷積內(nèi)值法Cubic Convolution Interpolation)[3]。考慮到本項(xiàng)目既要保證成果數(shù)據(jù)盡量精確,又要體現(xiàn)執(zhí)行效率,故采用雙線性內(nèi)插法作為影像重采樣技術(shù)。
2.2 ?ArcObjects
ArcObjects作為ArcGIS這個(gè)大型地理信息軟件的開發(fā)平臺(tái),可同時(shí)對(duì)ArcMap、ArcScene和Arc-Catalog等應(yīng)用程序進(jìn)行開發(fā)。ArcObjects是一系列基于微軟的COM技術(shù)所構(gòu)建的組件集[5],具有強(qiáng)大的開放性和拓展性。用戶可以從支h持COM標(biāo)準(zhǔn)的各種開發(fā)環(huán)境中進(jìn)行選擇,例如VB,VBA,VC++和DELPHI等??梢宰灾鏖_發(fā)COM組件對(duì)ArcObjects組件庫進(jìn)行擴(kuò)展補(bǔ)充。
2.3 ?Geoprocessing
Geoprocessing是用于處理地理數(shù)據(jù)和相關(guān)數(shù)據(jù)的框架和工具集,可用于執(zhí)行空間分析或以自動(dòng)化方式管理GIS數(shù)據(jù)。通過Geoprocessing,用戶只需要簡單的填寫參數(shù)和設(shè)置環(huán)境變量,就可以實(shí)現(xiàn)相應(yīng)的數(shù)據(jù)處理,適用于大量數(shù)據(jù)的循環(huán)處理。
2.4 ?ModelBuilder
ModelBuilder是一種可視化編程語言,用于構(gòu)建地理處理工作流。ModelBuilder常用于空間分析和數(shù)據(jù)管理流程的自動(dòng)化處理。用戶可以通過對(duì)ModelBuilder中的地理處理模型進(jìn)行創(chuàng)建或修改,將一系列流程和地理處理工具串聯(lián)在一起,達(dá)到將一個(gè)流程的輸出用作另一個(gè)流程的輸入的效果并生成示意圖[6]。用戶具體可以通過添加地理處理工具、地圖圖層、數(shù)據(jù)集以及其他數(shù)據(jù)類型并將其連接到流程來構(gòu)建所需的地理處理模型。
3 ?系統(tǒng)設(shè)計(jì)
3.1 ?系統(tǒng)總體框架設(shè)計(jì)
由于系統(tǒng)涉及到多條業(yè)務(wù)線,由若干個(gè)子系統(tǒng)模塊組成,為了保證各個(gè)子系統(tǒng)、子模塊具有可擴(kuò)展性、易維護(hù)性、高容錯(cuò)性,將采用四層架構(gòu)進(jìn)行設(shè)計(jì),包括基礎(chǔ)設(shè)施層、數(shù)據(jù)層、支撐層、應(yīng)用層。
(1)基礎(chǔ)設(shè)施層
基礎(chǔ)設(shè)施層包括計(jì)算資源、存儲(chǔ)資源、安全設(shè)備、網(wǎng)絡(luò)設(shè)備等,是組成數(shù)據(jù)更新系統(tǒng)的各種硬件設(shè)備。計(jì)算資源主要用于運(yùn)行各子系統(tǒng),保證運(yùn)行過程穩(wěn)定、準(zhǔn)確、高效;存儲(chǔ)資源主要用于存儲(chǔ)各種原始數(shù)據(jù)、過程數(shù)據(jù)、成果數(shù)據(jù),要保證讀寫流暢、存儲(chǔ)穩(wěn)定、備份完整;安全設(shè)備為系統(tǒng)網(wǎng)絡(luò)安全、數(shù)據(jù)安全、運(yùn)行安全、操作安全等提供各種保護(hù)措施;網(wǎng)絡(luò)設(shè)備實(shí)現(xiàn)計(jì)算資源和存儲(chǔ)資源的連接,保證數(shù)據(jù)傳輸高效、穩(wěn)定、安全。
(2)數(shù)據(jù)層
通過Geodatabase和Shapefile實(shí)現(xiàn)標(biāo)準(zhǔn)圖框數(shù)據(jù)、元數(shù)據(jù)、空間參考數(shù)據(jù)、原始影像、輔助數(shù)據(jù)、過程數(shù)據(jù)、成果影像的存儲(chǔ);通過ArcGIS相關(guān)組件實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入、導(dǎo)出、轉(zhuǎn)換、合并、查詢、空間分析等操作,為下一步的數(shù)據(jù)處理準(zhǔn)備材料。
(3)支撐層
本系統(tǒng)的數(shù)據(jù)處理主要基于ArcGIS提供的各種組件、中間件、類庫、工具和模塊,開發(fā)框架主要基于.Net和Python,具體體現(xiàn)方式為:.Net+ArcOb-j??ects、Python+ArcToolBox+Geoproc?essing+ModelB?ui-lder, 通過優(yōu)化組合,各自實(shí)現(xiàn)相關(guān)功能。
(4)應(yīng)用層
應(yīng)用層包含標(biāo)準(zhǔn)圖框生成子系統(tǒng)、圖框匹配子系統(tǒng)、重采樣子系統(tǒng)、空間參考轉(zhuǎn)換子系統(tǒng)、鑲嵌子系統(tǒng)、裁剪子系統(tǒng)。
3.2 ?系統(tǒng)功能設(shè)計(jì)
基于天地圖·云南的生產(chǎn)需求,結(jié)合已有的程序功能,來設(shè)計(jì)本系統(tǒng)的功能。
3.2.1 ?標(biāo)準(zhǔn)圖框生成子系統(tǒng)
標(biāo)準(zhǔn)圖框生成子系統(tǒng)按照國家標(biāo)準(zhǔn)生成云南省0.5米分辨率影像分幅外擴(kuò)圖框,每個(gè)圖框要攜帶標(biāo)準(zhǔn)圖幅號(hào)屬性。該子系統(tǒng)包含四個(gè)步驟:
(1)根據(jù)《國家基本比例尺地形圖分幅和編號(hào)》(GB/T 13989-2012)生成涵蓋云南省范圍的0.5米影像分幅圖框,并計(jì)算每個(gè)圖框的圖幅號(hào)[7]。
(2)用云南省的行政區(qū)域與0.5米分辨率影像分幅圖框做覆蓋分析,得到云南省0.5米分辨率影像分幅圖框。
(3)對(duì)云南省0.5米分辨率影像分幅圖框做緩沖區(qū)和外接矩形操作,得到云南省0.5米分辨率影像分幅外擴(kuò)圖框。
(4)對(duì)云南省0.5米分辨率影像分幅外擴(kuò)圖框按照CGCS2000投影坐標(biāo)系分帶范圍進(jìn)行覆蓋分析。
3.2.2 ?圖框匹配子系統(tǒng)
圖框匹配子系統(tǒng)用于找出云南省0.5米分辨率影像分幅外擴(kuò)圖框與原始影像圖框的對(duì)應(yīng)關(guān)系。具體要把多個(gè)0.2米分辨率影像進(jìn)行鑲嵌,鑲嵌后得到的臨時(shí)影像范圍要大于對(duì)應(yīng)的標(biāo)準(zhǔn)0.5米分辨率影像圖幅。輸出結(jié)果為標(biāo)準(zhǔn)0.5米分辨率圖幅號(hào)與原始影像圖幅號(hào)的對(duì)應(yīng)關(guān)系列表。
3.2.3 ?重采樣子系統(tǒng)
重采樣子系統(tǒng)用于把0.2米分辨率的原始影像數(shù)據(jù)經(jīng)過重采樣操作變?yōu)?.5米分辨率的影像數(shù)據(jù)。為了提高執(zhí)行效率,采用多進(jìn)程技術(shù)。輸出結(jié)果為重采樣后臨時(shí)影像和記錄臨時(shí)影像的圖幅號(hào)與影像文件的路徑的文本文件。
3.2.4 ?空間參考轉(zhuǎn)換子系統(tǒng)
空間參考轉(zhuǎn)換子系統(tǒng)用于把原始數(shù)據(jù)中0.5米分辨率的影像圖經(jīng)過投影操作變?yōu)镃GCS2000地理坐標(biāo)系。
3.2.5 ?鑲嵌子系統(tǒng)
鑲嵌子系統(tǒng)用于把重采樣后臨時(shí)影像和空間參考轉(zhuǎn)換后臨時(shí)影像進(jìn)行鑲嵌,也就是合并。
3.2.6 ?裁剪子系統(tǒng)
裁剪子系統(tǒng)用于把無需鑲嵌臨時(shí)影像和鑲嵌后臨時(shí)影像按照云南省0.5米分辨率影像分幅外擴(kuò)圖框進(jìn)行裁剪,得到最終的成果影像。
4 ?系統(tǒng)實(shí)現(xiàn)
4.1 ?開發(fā)環(huán)境
本系統(tǒng)采用分布執(zhí)行方案,針對(duì)不同的數(shù)據(jù)類型可分別采用不同的開發(fā)環(huán)境。對(duì)于非柵格數(shù)據(jù)處理,采用.Net+ArcObjects的方式進(jìn)行開發(fā);對(duì)于柵格數(shù)據(jù)處理,采用Python+ArcToolBox+Geoproce?ss-ing+ModelBuilder的方式進(jìn)行開發(fā),支持對(duì)進(jìn)程處理方式,不需額外安裝開發(fā)環(huán)境,通過人工檢查臨時(shí)數(shù)據(jù)的方式分析運(yùn)行結(jié)果。
4.2 ?系統(tǒng)實(shí)現(xiàn)
在整個(gè)天地圖·云南數(shù)據(jù)更新項(xiàng)目(一期)小比例尺影像數(shù)據(jù)重采樣項(xiàng)目中,本系統(tǒng)運(yùn)行的關(guān)鍵步驟及實(shí)現(xiàn)代碼如下:
(1)在ModelBuilder中建立模型、輸入?yún)?shù)生成云南省0.5米分辨率影像的標(biāo)準(zhǔn)分幅圖框(如圖5)。并進(jìn)行緩沖區(qū)、外接矩形分析。
(2)將云南省0.5米分辨率的影像分幅外擴(kuò)圖框與原始影像圖框進(jìn)行匹配,依次選擇輸入路徑、線程數(shù)和輸出路徑(如圖6)。樣例代碼如下:
…
private void lbl2CellFeatureClass_Click(object sender, EventArgs e)
{
IGxDialog iGxDialog = new GxDialogClass();
IEnumGxObject iEnumGxObject;
…
}
…
(3)通過命令行調(diào)用重采樣子系統(tǒng)把原始數(shù)據(jù)中0.2米分辨率的影像圖經(jīng)過重采樣操作變?yōu)?.5米分辨率的影像圖(如圖7)。樣例代碼如下:
…
import sys,os,re,datetime,multiprocessing,arcpy
def resample(inTif,outTif):
try:
…
def main():
if len(sys.argv)<3:
print "need argument:"
…
pool=multiprocessing.Pool(threadCountMax)
index=0
…
#arcpy.Resample_management(inTif, outTif, ".5 .5","BILINEAR")
#print "Resample_management", outTif
…
(4)對(duì)原始數(shù)據(jù)中0.5米分辨率的影像圖進(jìn)行空間參考轉(zhuǎn)換,處理后影像會(huì)有少量的旋轉(zhuǎn)變形,周圍會(huì)產(chǎn)生細(xì)微的無數(shù)據(jù)邊框(如圖8),最終需要裁剪掉這些無數(shù)據(jù)邊框才能作為最終成果??臻g參考轉(zhuǎn)換操作的樣例代碼為:
…
try:
outRef="GEOGCS['GCS_China_Geodetic_Coordinate_System_2000',DATUM['D_China_2000',SPHER-OID['CGCS2000',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199?4?3-3]]"
…
(5)以圖框映射表(如圖9)為依據(jù)進(jìn)行影像鑲嵌。樣例代碼為:
import sys,os,re,datetime,multiprocessing,arcpy
def mosaic(temp5TifFileNameList,outPath,cellId5):
try:
arcpy.MosaicToNewRaster_management(";".join-(temp5TifFileNameList),outPath,cellId5+"_.tif","","",?"",-3,"","")
…
(6)進(jìn)行影像裁剪,得到成果影像(如圖10)。樣例代碼為:
import sys,os,re,datetime,multiprocessing,arcpy
def clip(cell5ShapeFileName,tif5Path,cellId5):
try:
clipShapeFileName=tif5Path+"\\"+cellId5+-"__.shp"arcpy.Select_analysis(cell5ShapeFileName,clipShapeFileName,"圖幅號(hào)='"+cellId5+"'")
arcpy.Clip_management(tif5Path+"\\"+cellId5+"?
_.tif","",tif5Path+"\\"+cellId5+".tif",clipShapeFileName, "","true","true")
…
5 ?結(jié)語
基于GIS的海量DOM影像數(shù)據(jù)重采樣系統(tǒng),能夠批量化地對(duì)DOM影像數(shù)據(jù)進(jìn)行重采樣工作。不但解決了海量DOM數(shù)據(jù)重采樣工作耗時(shí)耗力、效率低下和程序繁瑣等問題,而且優(yōu)化了整個(gè)業(yè)務(wù)流程、為地圖數(shù)據(jù)管理提供了新思路;在遵守國家涉密數(shù)據(jù)處理規(guī)范的前提下,高效地完成了天地圖·云南平臺(tái)的數(shù)據(jù)更新工作,為各行業(yè)提供豐富詳實(shí)的數(shù)據(jù)資源,為政府、企事業(yè)單位等專業(yè)部門提供更好的基礎(chǔ)地理信息數(shù)據(jù)支撐保障服務(wù)。
參考文獻(xiàn)
[1] 史與正, 王英, 張淑玲. 基于VirtuoZoNT的DEM和DOM的制作方法[J]. 地礦測繪, 2013, 29(03): 30-32.
[2] GDPJ 05-2013, 數(shù)字正射影像生產(chǎn)技術(shù)規(guī)定[S].
[3] 李德仁, 王樹根, 周月琴. 攝影測量與遙感概論[M]. 北京:測繪出版社, 2008.
[4] 郭衛(wèi)芳. 3D產(chǎn)品在地理國情普查應(yīng)用中的關(guān)鍵技術(shù)研究[D]. 東華理工大學(xué), 2015.
[5] 李光雨. 農(nóng)經(jīng)權(quán)確權(quán)數(shù)據(jù)匯交與質(zhì)檢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 中國礦業(yè)大學(xué), 2018.
[6] 張振鵬, 米鴻燕. 基于流域提取模型的河網(wǎng)結(jié)構(gòu)信息研究[J]. 軟件, 2018, 39(08): 117-121.
[7] GB/T 13989-2012, 國家基本比例尺地形圖分幅和編號(hào)[S].
[8] Pimpler E. Programming ArcGIS 10.1 with Python Cookbook[M]. Packt Publishing Ltd, 2013.
[9] Zhang Y, Unger D, Grogan J, et al. Using ArcPy to Automate Making Thematic Map Books: Two Cases[J]. 2012.
[10] 張小璞, 左小清. 在ArcGIS下基于Python的路網(wǎng)數(shù)據(jù)批處理方法[J]. 軟件, 2018, 39(07): 130-133.
[11] 劉翔宇, 朱大明. Arcgis中基于Python的地理數(shù)據(jù)庫批量合并方法研究[J]. 軟件, 2018, 39(07): 161-165.
[12] 吳建波, 孫慶. 基于Web的地鐵盾構(gòu)施工數(shù)據(jù)管理平臺(tái)[J]. 軟件, 2018, 39(02): 120-124.
[13] 楊帆, 門偉. 嵌入式環(huán)境下柵格數(shù)據(jù)訪問引擎的設(shè)計(jì)[J].軟件, 2015, 36(11): 115-119.