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

?

基于ArcGIS Engine的矢柵基礎(chǔ)地理數(shù)據(jù)空間轉(zhuǎn)換方法研究

2011-11-15 03:29劉佰瓊戴相喜
測(cè)繪通報(bào) 2011年12期
關(guān)鍵詞:柵格數(shù)據(jù)控制點(diǎn)矢量

劉佰瓊,周 衛(wèi),戴相喜

(1.南京師范大學(xué)教育部虛擬地理環(huán)境重點(diǎn)實(shí)驗(yàn)室,江蘇南京210046;2.南京市測(cè)繪勘察研究院有限公司,江蘇南京210005)

基于ArcGIS Engine的矢柵基礎(chǔ)地理數(shù)據(jù)空間轉(zhuǎn)換方法研究

劉佰瓊1,周 衛(wèi)1,戴相喜2

(1.南京師范大學(xué)教育部虛擬地理環(huán)境重點(diǎn)實(shí)驗(yàn)室,江蘇南京210046;2.南京市測(cè)繪勘察研究院有限公司,江蘇南京210005)

隨著2000國(guó)家大地坐標(biāo)系的正式啟用,實(shí)現(xiàn)基礎(chǔ)地理數(shù)據(jù)不同坐標(biāo)系間的空間轉(zhuǎn)換具有重要意義和實(shí)用價(jià)值?;贓sri二次開發(fā)組件ArcGIS Engine所提供的空間轉(zhuǎn)換和影像配準(zhǔn)接口,討論ArcGIS平臺(tái)坐標(biāo)轉(zhuǎn)換和投影變換方法,采用C#語言設(shè)計(jì)開發(fā)空間轉(zhuǎn)換系統(tǒng),并進(jìn)行轉(zhuǎn)換誤差分析,驗(yàn)證該轉(zhuǎn)換方法的實(shí)用性和可靠性。

空間轉(zhuǎn)換;投影變換;ArcGIS Engine

一、引 言

經(jīng)國(guó)務(wù)院批準(zhǔn),我國(guó)自2008年7月1日起,正式啟用2000國(guó)家大地坐標(biāo)系(簡(jiǎn)稱CGCS2000)[1-2]。然而我國(guó)現(xiàn)有的測(cè)繪成果大多是基于1954北京坐標(biāo)系、1980西安坐標(biāo)系或地方獨(dú)立坐標(biāo)系獲得的,因此在今后相當(dāng)長(zhǎng)的時(shí)期內(nèi),面臨著大量的基礎(chǔ)地理數(shù)據(jù)空間轉(zhuǎn)換問題。

目前許多學(xué)者都對(duì)空間轉(zhuǎn)換模型進(jìn)行了研究,探討了公共點(diǎn)的選取原則和模型適用范圍[3-4]。本文針對(duì)GIS中矢量數(shù)據(jù)和柵格數(shù)據(jù)的結(jié)構(gòu)特點(diǎn),討論了ArcGIS軟件平臺(tái)坐標(biāo)系統(tǒng)和地理參考投影變換的相關(guān)接口,并以實(shí)例介紹了在 Visual Studio 2005集成開發(fā)環(huán)境下使用Esri二次開發(fā)組件Arc-GIS Engine實(shí)現(xiàn)矢柵基礎(chǔ)地理數(shù)據(jù)空間轉(zhuǎn)換的關(guān)鍵技術(shù)方法。

二、矢量數(shù)據(jù)空間轉(zhuǎn)換

1.轉(zhuǎn)換模型

二維的平面坐標(biāo)轉(zhuǎn)換模型有多項(xiàng)式逼近、正形轉(zhuǎn)換、相似變換、仿射變換等,其中相似變換四參數(shù)模型具有較高的嚴(yán)密性,適用于區(qū)域范圍小、轉(zhuǎn)換區(qū)域在兩個(gè)坐標(biāo)系中的幾何相似程度好的情況[5-6],本文采用平面四參數(shù)模型進(jìn)行矢量數(shù)據(jù)空間轉(zhuǎn)換。

2.轉(zhuǎn)換方法與流程

矢量數(shù)據(jù)是基礎(chǔ)地理數(shù)據(jù)最主要的數(shù)據(jù)類型,能準(zhǔn)確表示地理空間實(shí)體的位置、長(zhǎng)度、面積等特性。由于矢量數(shù)據(jù)的所有空間幾何實(shí)體都是由坐標(biāo)點(diǎn)(串)構(gòu)成的,所以逐點(diǎn)進(jìn)行空間轉(zhuǎn)換是最嚴(yán)密的轉(zhuǎn)換方式。但是逐點(diǎn)轉(zhuǎn)換需要對(duì)所有圖形要素重新生成,要求讀取并保存不同數(shù)據(jù)類型的符號(hào),并且必須保證轉(zhuǎn)換前后符號(hào)的一致性,增大了系統(tǒng)開銷,計(jì)算量大,運(yùn)行效率低。為了在提高轉(zhuǎn)換效率的同時(shí)保證轉(zhuǎn)換成果的可靠性,本文采用逐要素轉(zhuǎn)換的方法,對(duì)矢量數(shù)據(jù)的每個(gè)圖元要素依次進(jìn)行轉(zhuǎn)換。矢量數(shù)據(jù)的空間轉(zhuǎn)換流程如圖1所示,其中包括數(shù)據(jù)輸入、數(shù)據(jù)處理和數(shù)據(jù)輸出3大模塊。

圖1 矢量數(shù)據(jù)空間轉(zhuǎn)換流程圖

3.轉(zhuǎn)換功能的實(shí)現(xiàn)

在二次開發(fā)組件 ArcGIS Engine中,提供了ITransform2D接口實(shí)現(xiàn)圖形要素的平移、旋轉(zhuǎn)和縮放,還提供了強(qiáng)大的坐標(biāo)轉(zhuǎn)換方法(transform)。ITransformation接口則提供了多種轉(zhuǎn)換方法,包括莫洛金斯基轉(zhuǎn)換(Abridged Molodensky transformation)、二次多項(xiàng)式轉(zhuǎn)換(Affine transformation)等。矢量數(shù)據(jù)空間轉(zhuǎn)換的主要代碼與說明如下:

(1)根據(jù)控制點(diǎn)坐標(biāo)擬合四參數(shù)

輸入已知的n組控制點(diǎn)坐標(biāo),根據(jù)這些控制點(diǎn)坐標(biāo)采用最小二乘擬合的方法計(jì)算轉(zhuǎn)換參數(shù)。

IPoint[]fromPts=new PointClass[count];

IPoint[]toPts=new PointClass[count];

∥定義并初始化點(diǎn)數(shù)組,其中count為控制點(diǎn)個(gè)數(shù)

IAffineTransformation2D3GEN pAffineTrans=new Affine-Transformation2DClass();

∥定義并實(shí)例化相似變換接口對(duì)象

pAffineTrans. DefineConformalFromControlPoints (ref fromPts,ref toPts);

∥計(jì)算轉(zhuǎn)換參數(shù),其中Dx、Dy為坐標(biāo)平移量,Dxscale、Dyscale為縮放尺度,Drotate為旋轉(zhuǎn)角度

Dx=pAffineTrans.XTranslation;

Dy=pAffineTrans.YTranslation;

Dxscale=pAffineTrans.XScale;

Dyscale=pAffineTrans.YScale;

Drotate=pAffineTrans.Rotation;

(2)圖元要素的空間轉(zhuǎn)換

ArcGIS中的圖元要素分為點(diǎn)、線、面、注記4種類型,其中點(diǎn)要素由坐標(biāo)點(diǎn)對(duì)構(gòu)成,線要素由一系列坐標(biāo)串構(gòu)成,面要素則由一系列首尾相連的坐標(biāo)串構(gòu)成。點(diǎn)、線、面3類要素都是一般的圖形要素類,只需對(duì)其進(jìn)行平移、旋轉(zhuǎn)、縮放就可實(shí)現(xiàn)空間轉(zhuǎn)換。

IFeatureCursor pFeaCur=pFeaCls.Update(null,false);

IFeature pFeature=pFeaCur.NextFeature();

IPoint pPoint=new PointClass();∥坐標(biāo)基點(diǎn)

pPoint.X=Dx;pPoint.Y=Dy;

ITransform2D pTransform2D=pFeature.Shape;

∥要素按照四參數(shù)進(jìn)行平移、旋轉(zhuǎn)和縮放

pTransform2D.Move(Dx,Dy);

pTransform2D.Rotate(pPoint,Drotate);

pTransform2D.Scale(pPoint,Dxscale,Dyscale);

pFeature.Shape=pTransform2D as IGeometry;

∥將轉(zhuǎn)換后的要素更新保存

pFeatureCursor.UpdateFeature(pFeature);

注記要素包含文字的空間位置、字體等注記信息,要求空間轉(zhuǎn)換之后保持字體朝向不變,因此可采用中心點(diǎn)位平移的方法進(jìn)行注記的空間轉(zhuǎn)換。即首先計(jì)算出注記中心點(diǎn)經(jīng)四參數(shù)模型轉(zhuǎn)換后的坐標(biāo);再根據(jù)其轉(zhuǎn)換前后的坐標(biāo)值計(jì)算出坐標(biāo)偏移量;最后將注記的文字和圖形均按照中心點(diǎn)偏移量進(jìn)行空間轉(zhuǎn)換。

三、柵格數(shù)據(jù)空間轉(zhuǎn)換

1.轉(zhuǎn)換方法與流程

一般而言,要將柵格數(shù)據(jù)的空間信息轉(zhuǎn)換到其他坐標(biāo)系中,可通過幾何校正來實(shí)現(xiàn)[7]。但是幾何校正需要人工選取同名控制點(diǎn),轉(zhuǎn)換效率比較低。本文探討了在已知兩個(gè)坐標(biāo)系之間轉(zhuǎn)換參數(shù)的情況下,自動(dòng)實(shí)現(xiàn)柵格數(shù)據(jù)空間轉(zhuǎn)換的方法。

柵格數(shù)據(jù)空間轉(zhuǎn)換流程如圖2所示,首先獲得柵格數(shù)據(jù)的四至坐標(biāo),并將其作為空間轉(zhuǎn)換的控制點(diǎn)。然后通過已知的轉(zhuǎn)換參數(shù)計(jì)算出其在目標(biāo)坐標(biāo)系下的新坐標(biāo),再在此基礎(chǔ)上對(duì)柵格像元進(jìn)行重采樣,實(shí)現(xiàn)空間轉(zhuǎn)換。該方法無需人工選取控制點(diǎn),根據(jù)轉(zhuǎn)換參數(shù)就可以方便地實(shí)現(xiàn)柵格數(shù)據(jù)不同坐標(biāo)系之間的空間轉(zhuǎn)換,提高了柵格數(shù)據(jù)空間轉(zhuǎn)換的自動(dòng)化程度,尤其適用于批量轉(zhuǎn)換。

圖2 柵格數(shù)據(jù)坐標(biāo)轉(zhuǎn)換流程圖

2.轉(zhuǎn)換功能的實(shí)現(xiàn)

柵格數(shù)據(jù)空間轉(zhuǎn)換可通過IRaster GeometryProc接口實(shí)現(xiàn),該接口提供了柵格數(shù)據(jù)的剪切(clip)、翻轉(zhuǎn)(filp)、合并(merge)、映像(mirror)及鑲嵌(mosaic)等操作。通過轉(zhuǎn)換參數(shù)對(duì)柵格數(shù)據(jù)進(jìn)行空間轉(zhuǎn)換可以使用該接口的Wrap方法,該方法會(huì)略微改變影像圖的色彩值。柵格數(shù)據(jù)空間轉(zhuǎn)換的主要代碼與說明如下:

1)獲取柵格數(shù)據(jù)源坐標(biāo)系的四至坐標(biāo)

IEnvelope pEnv=pRasterLayer.AreaOfInterest;

∥根據(jù)最小外接矩形獲得柵格數(shù)據(jù)四至坐標(biāo),并將其存入fromPtsCol點(diǎn)數(shù)組,作為源控制點(diǎn)坐標(biāo)

IPointCollection fromPtsCol=new MultipointClass();

IPoint frPt1=new PointClass();

frPt1.X=pEnv.XMin;frPt1.Y=pEnv.YMin;

fromPtsCol.AddPoint(frPt1,ref obj,ref obj);

……

2)計(jì)算柵格數(shù)據(jù)目標(biāo)坐標(biāo)系的四至坐標(biāo)

∥將四至坐標(biāo)根據(jù)四參數(shù)進(jìn)行坐標(biāo)轉(zhuǎn)換,并將轉(zhuǎn)換結(jié)果存入toPtsCol點(diǎn)數(shù)組,作為目標(biāo)控制點(diǎn)坐標(biāo)

IClone pClone=frPt1 as IClone;

IPoint toPt1=pClone.Clone();

ITransform2D pTrans2D=toPt1 as ITransform2D;

pTrans2D.Move(Dx,Dy);

pTrans2D.Rotate(pPoint,Drotate);

pTrans2D.Scale(pPoint,Dxscale,Dyscale);

toPtsCol.AddPoint(toPt1,ref obj,ref obj);

……

3)根據(jù)控制點(diǎn)坐標(biāo)進(jìn)行柵格數(shù)據(jù)重采樣

∥通過IGeoReference接口或IRasterGeometryProc接口進(jìn)行柵格數(shù)據(jù)空間轉(zhuǎn)換

IGeoReference pGR=pRasterLayer as IGeoReference;

pGR.Warp(fromPtsCol,toPtsCol,0);

pGR.Register();

值得注意的是,在柵格數(shù)據(jù)的空間轉(zhuǎn)換過程中,由于對(duì)數(shù)據(jù)進(jìn)行了重采樣,空間轉(zhuǎn)換后的相鄰兩幅柵格數(shù)據(jù)邊緣會(huì)存在縫隙,無法做到無縫拼接。一種可行的解決方法是在轉(zhuǎn)換前將柵格數(shù)據(jù)劃分為具有一定重疊帶的相鄰圖幅,轉(zhuǎn)換后再將這些圖幅拼接在一起,以消除縫隙對(duì)柵格數(shù)據(jù)的影響。

四、矢柵數(shù)據(jù)投影變換

1.投影變換方法

在已知矢柵數(shù)據(jù)空間轉(zhuǎn)換前后坐標(biāo)系參數(shù)的情況下,可以使用投影變換方法實(shí)現(xiàn)基礎(chǔ)地理數(shù)據(jù)的空間轉(zhuǎn)換。ArcGIS軟件平臺(tái)的坐標(biāo)系統(tǒng)主要有地理坐標(biāo)系統(tǒng)(geographic coordinate system)和投影坐標(biāo)系統(tǒng)(projected coordinate system)。其中,地理坐標(biāo)系統(tǒng)定義了大地橢球體和大地基準(zhǔn)面參數(shù),如橢球體長(zhǎng)半徑、短半徑、偏心率等;投影坐標(biāo)系統(tǒng)則定義了投影參數(shù),如東偽偏移(false easting)、北偽偏移(false northing)、中央經(jīng)線(central meridian)等。

矢柵數(shù)據(jù)的投影變換流程如圖3所示,對(duì)于矢量數(shù)據(jù)來說,仍然采用逐要素的變換方式,使用IGeometry接口的Project方法依次更新每個(gè)圖元要素實(shí)體,實(shí)現(xiàn)不同空間參照系之間的相互轉(zhuǎn)換;對(duì)于柵格數(shù)據(jù),則可以根據(jù)IRaster GeometryPro接口的ProjectFast方法實(shí)現(xiàn)投影變換,并采用ISaveAs接口將柵格存儲(chǔ)為Image、Tiff、Grid等數(shù)據(jù)格式。

2.投影變換功能實(shí)現(xiàn)

在進(jìn)行投影變換之前,需要確定轉(zhuǎn)換前后的空間參考信息,定義地理坐標(biāo)系統(tǒng)和投影坐標(biāo)系統(tǒng)的相關(guān)參數(shù),其主要代碼與說明如下:

1)設(shè)置空間參考信息

∥定義投影方式為高斯克呂格投影

IProjection pProj=pFact.CreateProjection((int)esriSR_

ProjectionType.esriSRProjection_GaussKruger);

∥定義投影單位、中央經(jīng)線、東偽偏移、北緯偏移、比例系數(shù)、原點(diǎn)緯度等投影參數(shù)

IParameter[]pParm=new IParameter[5];

pParm[0]=pFact.CreateParameter((int)esriSRParameterType.esriSRParameter_FalseEasting);

……

2)實(shí)現(xiàn)投影變換

∥若為矢量數(shù)據(jù),則依次對(duì)每個(gè)圖形要素進(jìn)行重投影處理,并更新圖形實(shí)體

IGeometry pGeo=pFeature.Shape as IGeometry;

pGeo.SpatialReference=pSpatialRefFrom;

pGeo.Project((ISpatialReference)pSpatialRefTo);

∥若為柵格數(shù)據(jù),則對(duì)整個(gè)柵格對(duì)象賦予投影信息,并進(jìn)行重采樣

IRasterGeometryProc pRasterGeometryPropc=new Raster-GeometryProcClass();

pRasLayer.SpatialReference=pSpatialRefFrom;

IRaster pRaster=pRasLayer.Raster;

pRasterGeometryPropc.ProjectFast(pSpatialRefTo,0,ref Missing,pRaster);

圖3 投影變換方法流程圖

五、應(yīng)用實(shí)例與誤差分析

筆者基于二次開發(fā)組件ArcGIS Engine,采用C#語言設(shè)計(jì)開發(fā)了矢柵基礎(chǔ)地理數(shù)據(jù)空間轉(zhuǎn)換系統(tǒng),界面如圖4所示。對(duì)同一區(qū)域的矢量和柵格數(shù)據(jù)采用同一套轉(zhuǎn)換參數(shù)進(jìn)行空間轉(zhuǎn)換,將轉(zhuǎn)換結(jié)果疊加顯示,如圖5所示,矢柵數(shù)據(jù)轉(zhuǎn)換后具有較好的一致性。

為驗(yàn)證轉(zhuǎn)換精度,選取4幅1∶1 000地形圖從地方獨(dú)立坐標(biāo)系轉(zhuǎn)換到2000國(guó)家大地坐標(biāo)系,將轉(zhuǎn)換后的圖形數(shù)據(jù)與實(shí)際數(shù)據(jù)進(jìn)行對(duì)比,抽樣選取25個(gè)同名點(diǎn)進(jìn)行誤差分析,圖6為轉(zhuǎn)換后隨機(jī)采樣點(diǎn)的坐標(biāo)分量殘差,表1為誤差統(tǒng)計(jì)表。由表1可知,X坐標(biāo)的中誤差為±7 mm,平均值為0 mm;Y坐標(biāo)的中誤差為±6 mm,平均值為±3 mm。

圖4 系統(tǒng)主界面

圖5 空間轉(zhuǎn)換后矢量與柵格圖層疊加

圖6 空間轉(zhuǎn)換隨機(jī)采樣點(diǎn)的坐標(biāo)分量殘差

表1 空間轉(zhuǎn)換誤差統(tǒng)計(jì)表 mm

六、結(jié)束語

隨著2000國(guó)家大地坐標(biāo)系的正式啟用,實(shí)現(xiàn)不同坐標(biāo)系之間的空間轉(zhuǎn)換具有重要意義。本文根據(jù)我國(guó)多種坐標(biāo)系統(tǒng)共存的現(xiàn)實(shí),研究了一種通過坐標(biāo)轉(zhuǎn)換參數(shù)實(shí)現(xiàn)基礎(chǔ)地理數(shù)據(jù)空間轉(zhuǎn)換的實(shí)用方法,該方法的特點(diǎn)是使用一套轉(zhuǎn)換參數(shù)即可完成矢量數(shù)據(jù)和柵格數(shù)據(jù)的同步轉(zhuǎn)換。

另外,本文還介紹了在已知轉(zhuǎn)換前后空間參考信息的情況下,通過投影變換實(shí)現(xiàn)矢柵數(shù)據(jù)空間轉(zhuǎn)換的關(guān)鍵技術(shù)。筆者根據(jù)本文所述方法開發(fā)了矢柵基礎(chǔ)地理數(shù)據(jù)空間轉(zhuǎn)換系統(tǒng),該系統(tǒng)能快速高效地完成不同坐標(biāo)系間的空間變換,減少了人工干預(yù),大大提高了轉(zhuǎn)換效率和自動(dòng)化水平,轉(zhuǎn)換精度較高。

[1] 立實(shí).2000國(guó)家大地坐標(biāo)系7月1日啟用[N].中國(guó)測(cè)繪報(bào),2008-07-01.

[2] 陳俊勇,楊元喜,王敏,等.2000國(guó)家大地控制網(wǎng)的構(gòu)建和它的技術(shù)進(jìn)步[J].測(cè)繪學(xué)報(bào),2007,36(1):1-8.

[3] 黨亞民,成英燕,孫毅,等.圖件更新北京54和西安80坐標(biāo)系轉(zhuǎn)換方法研究[J].測(cè)繪科學(xué),2006,31(3): 20-22.

[4] 成英燕,程鵬飛,顧旦生,等.三維4參數(shù)模型實(shí)現(xiàn)地圖到CGCS2000的轉(zhuǎn)換[J].武漢大學(xué)學(xué)報(bào):信息科學(xué)版,2010,35(6):747-751.

[5] 郭金運(yùn).地圖數(shù)據(jù)幾何糾正時(shí)仿射變換與相似變換的對(duì)比分析[J].測(cè)繪通報(bào),2001(4):23-27.

[6] 韓雪培,廖幫固.海岸帶數(shù)據(jù)集成中的空間坐標(biāo)轉(zhuǎn)換方法研究[J].武漢大學(xué)學(xué)報(bào):信息科學(xué)版,2004,29(10):933-936.

[7] 王強(qiáng),束炯,張曉滬.一種遙感圖像的坐標(biāo)轉(zhuǎn)換方法[J].測(cè)繪科學(xué),2006,31(4):137-139.

Research on Space Conversion Method for Foundation Geographical Data Based on ArcGIS Engine

LIU Baiqiong,ZHOU Wei,DAI Xiangxi

0494-0911(2011)12-0054-04

P208

B

2010-11-23

劉佰瓊(1986—),女,四川瀘州人,博士生,主要研究方向?yàn)榛A(chǔ)地理信息系統(tǒng)。

猜你喜歡
柵格數(shù)據(jù)控制點(diǎn)矢量
一種適用于高軌空間的GNSS矢量跟蹤方案設(shè)計(jì)
矢量三角形法的應(yīng)用
NFFD控制點(diǎn)分布對(duì)氣動(dòng)外形優(yōu)化的影響
基于風(fēng)險(xiǎn)管理下的項(xiàng)目建設(shè)內(nèi)部控制點(diǎn)思考
面向移動(dòng)GIS的快速檢索方法研究
基于GDAL的標(biāo)準(zhǔn)圖幅生成及數(shù)據(jù)批量裁剪方法*1
基于矢量最優(yōu)估計(jì)的穩(wěn)健測(cè)向方法
三角形法則在動(dòng)態(tài)平衡問題中的應(yīng)用
相似材料模型中控制點(diǎn)像點(diǎn)坐標(biāo)定位研究
基于ArcGISEngine的南水北調(diào)工程基礎(chǔ)柵格數(shù)據(jù)管理