數據座標轉換是空間實體位置的位置描述,是從一種座標系統變換到另外一座標系統的過程。經過創建兩個座標系之間一一對應關係來實現。是各類比例尺地圖測量和編繪中創建地圖數學基礎必不可少的步驟。兩個及以上的座標轉換是由極座標參照肯定維數空間。算法
目前國內常見的座標轉換有如下5種:大地座標(BLH)對平面直角座標(XYZ)、北京5四、西安80及WGS84座標的相互轉換、任意兩空間座標系的轉換、十進制角度和度分秒格式之間進行轉換、經緯度和UTM座標之間進行轉換。ide
轉換的方法分二維轉換和三維轉換;二維轉換放緩是將平面座標轉換到另外一個座標系統;三維轉換該方法基本操做步驟是利用公共點,也就是同時具備WGS84直角座標和地方座標的直角座標的點位,通常須要3個以上重合點,經過布爾莎模型(或其餘模型)進行計算,獲得從一個系統轉換到另外一個系統中的平移參數、旋轉參數和比例因子。三維轉換方法可以使你肯定最多7個轉換參數(3個平移參數,3個旋轉參數和1個比例因子)。用戶也能夠選擇肯定幾個參數。對於三維轉換方法,能夠僅用3個公共點來計算轉換參數,但使用4個以上點可獲得更多的觀測值而且能夠計算殘差。用這種方法計算轉換參數的優勢在於可以保持GPS測量的精度,只要地方座標精度足夠(包括高程),這種方法能適用任何區域。spa
PIE支持座標算法功能的執行,下面對該算法功能進行介紹。code
第一步orm |
算法參數設置blog |
第二步內存 |
算法執行ci |
第三步數學 |
結果顯示string |
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 |
間隔 |
數據路徑 |
百度雲盤地址下/ 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 } |
圖1:源數據座標系統信息
圖2:數據座標轉換功能界面
圖3:座標轉換後空間參考系統
圖4:結果圖
注意:座標轉換須要設置參數,能夠在圖2 界面最下面的其參數設置七參數,不知道能夠選默認Default,最好設置七參數,本示例用的是標稱投影Geostationary_Satellite轉WGS-1984,七參數設置默認。