1. 程式人生 > 其它 >Gdal 之 座標轉換 ( C# 實現 )

Gdal 之 座標轉換 ( C# 實現 )

Gdal 之 座標轉換 ( C# 實現 )

定義座標系

這裡就不詳細講解了,如果感興趣直接私聊,很樂意和您交流。(大地水準面,橢球座標系,橢球基準,地心座標系,大地座標系,投影座標系(笛卡爾座標系)->(高斯、UTM等等,投影方式不同))


常用的座標系

wgs84 -- 最常用的,市面上無論硬體還是軟體大都用它作為基準。不是因為精度高等,個人認為就是早先佔領市場,壟斷了。參控GPS相關產品,訊號解析出來就是wgs84的,那能怎麼辦。

北京54、西安80 -- 這兩個不一樣 不一樣 不一樣。我寫在一起是因為國家不太支援這兩個了,主推2000

cgcs 2000 -- 還沒有轉換的朋友抓緊了,哈哈。


code


GdalBase.ConfigureAll();

// 建立北京54座標系
var bj54 = new SpatialReference("");
// 每一套座標系引數都又一個編號,在 http://epsg.io/ 中可以查詢
bj54.ImportFromEPSG(4214);//4214

//計算中央子午線
var clong = 120 + 35 / 60.0; 

//設定橢球引數 中央緯度 , 中央經線 , 縮放 , 北向加常數 , 東向加常數
bj54.SetTM(0, clong, 1.0, 50895, -3421829);

//設定七引數 Δx Δy Δz θx θy θz scale  Δ -- 偏移   θ -- 旋轉
bj54.SetTOWGS84(-14.309, -21.731, -8.562, -1.4979, 0.016604, -0.591758, -0.44782521);

//建立wgs84座標
var wgs84 = new SpatialReference("");
wgs84.ImportFromEPSG(4326); //這個是投影座標系

//從座標系克隆出 地理座標系統
var wgs84Geo = wgs84.CloneGeogCS();

//建立轉換
var coordinateTransformation = new CoordinateTransformation(bj54, wgs84Geo);

double[] B = { 42.109450692 };
double[] L = { 120.585583357 };
double[] H = { 0 };
coordinateTransformation1.TransformPoints(1, B, L, H);
Console.WriteLine("北京54投影座標:X:" + L[0] + " Y:" + B[0]);


總結

這些都是gdal基本寫法,沒啥總結的。之後文章會寫一下 cad轉geojson 中間會用到座標轉換,這樣就可以將gdal用於生產了