PIE SDK座標轉換算法

1.算法功能簡介

  數據座標轉換是空間實體位置的位置描述,是從一種座標系統變換到另外一座標系統的過程。經過創建兩個座標系之間一一對應關係來實現。是各類比例尺地圖測量和編繪中創建地圖數學基礎必不可少的步驟。兩個及以上的座標轉換是由極座標參照肯定維數空間。算法

  目前國內常見的座標轉換有如下5種:大地座標(BLH)對平面直角座標(XYZ)、北京5四、西安80及WGS84座標的相互轉換、任意兩空間座標系的轉換、十進制角度和度分秒格式之間進行轉換、經緯度和UTM座標之間進行轉換。ide

  轉換的方法分二維轉換和三維轉換;二維轉換放緩是將平面座標轉換到另外一個座標系統;三維轉換該方法基本操做步驟是利用公共點,也就是同時具備WGS84直角座標和地方座標的直角座標的點位,通常須要3個以上重合點,經過布爾莎模型(或其餘模型)進行計算,獲得從一個系統轉換到另外一個系統中的平移參數、旋轉參數和比例因子。三維轉換方法可以使你肯定最多7個轉換參數(3個平移參數,3個旋轉參數和1個比例因子)。用戶也能夠選擇肯定幾個參數。對於三維轉換方法,能夠僅用3個公共點來計算轉換參數,但使用4個以上點可獲得更多的觀測值而且能夠計算殘差。用這種方法計算轉換參數的優勢在於可以保持GPS測量的精度,只要地方座標精度足夠(包括高程),這種方法能適用任何區域。spa

  PIE支持座標算法功能的執行,下面對該算法功能進行介紹。code

2.算法功能實現說明

2.1 實現步驟

第一步orm

算法參數設置blog

第二步內存

算法執行ci

第三步數學

結果顯示string

2.2 算法參數

C#算法DLL

PIE.CommonAlgo.dll

C#算法名稱

PIE.CommonAlgo.RasterToContourContructAlgo

參數結構體

RasterToContourContruct_Exchange_Info

參數說明

BandIndex

Int

波段

BAutoSetStartEndValue

bool

是否自動計算起始終止值

BClosed

bool

是否閉合

BGenerateContourFace

bool

是否生成等值面

BGenerateContourLine

bool

是否生成等值線

EndValue

double

終止值

InputRasterDataset

IRasterDataset

輸入柵格數據集

OutputContourFaceFDataset

IFeatureDataset

輸出等值面(內存)

OutputContourLineFDataset

IFeatureDataset

輸出等值線 (內存)

SampleRatio

int

採樣比

StartValue

double

起始值

ValueInterval

double

間隔

2.3 示例代碼

數據路徑

百度雲盤地址下/ PIE示例數據/柵格數據/04.World/World.tif

示例代碼

 1  /// <summary>
 2 /// 投影轉換 本例子採用的FY4A其中一個通道 座標系位標稱投影 將標稱投影轉換位WGS-1984座標系
 3 /// </summary>
 4 public void ProjectionTrans()
 5 {
 6     PIE.AxControls.DataPrjTransDialog frmDataPrjTrans = new AxControls.DataPrjTransDialog();    //數據座標轉換界面 
 7     if (frmDataPrjTrans.ShowDialog() != 1) return;
 8 
 9     PIE.CommonAlgo.DataProjectTrans_Exchange_Info info = new CommonAlgo.DataProjectTrans_Exchange_Info(frmDataPrjTrans.GetParams()); //數據座標轉換參數  
10     if (info == null) return;
11 
12     string strExt = System.IO.Path.GetExtension(info.strInputFile);
13     PIE.SystemAlgo.ISystemAlgo algo = null;
14     PIE.DataSource.IDataset dataset = PIE.DataSource.DatasetFactory.OpenDataset(info.strInputFile, DataSource.OpenMode.ReadOnly);
15     if (dataset == null) return;
16 
17     //判斷數據座標轉換是柵格仍是矢量數據
18     if (dataset is PIE.DataSource.IRasterDataset)
19     {
20         algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ImgProjectTransAlgo");
21     }
22     else if (dataset is PIE.DataSource.IFeatureDataset)
23     {
24         algo = PIE.SystemAlgo.AlgoFactory.Instance().CreateAlgo("PIE.CommonAlgo.dll", "PIE.CommonAlgo.ShapeDataCoordTransformAlgo");
25     }
26     (dataset as IDisposable).Dispose();
27     dataset = null;
28     if (algo == null) return;
29     PIE.SystemAlgo.ISystemAlgoEvents algoEvents = algo as PIE.SystemAlgo.ISystemAlgoEvents;
30     algo.Name = "數據座標轉換";
31     algo.Params = info;
32     bool result = PIE.SystemAlgo.AlgoFactory.Instance().ExecuteAlgo(algo);
33     if (result)
34     {
35         MessageBox.Show("執行成功");
36         ILayer layer = LayerFactory.CreateDefaultLayer(info.strOutputFile);
37         if (layer == null) return;
38         m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
39         m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
40     }
41 }
View Code

2.4 示例截圖

 

圖1:源數據座標系統信息

 

圖2:數據座標轉換功能界面

 

圖3:座標轉換後空間參考系統

 

圖4:結果圖 

  注意:座標轉換須要設置參數,能夠在圖2 界面最下面的其參數設置七參數,不知道能夠選默認Default,最好設置七參數,本示例用的是標稱投影Geostationary_Satellite轉WGS-1984,七參數設置默認。

相關文章
相關標籤/搜索