0
推薦
如何實現經度緯度到平面座標的相互轉換?
現在好多人在使用arcobject的時候都可能需要作經緯度和平面座標的相互轉換。由於經緯度是球面座標,平面座標是x-y的笛卡爾座標系統,所以這是乙個看起來比較難的問題。
好多人一上來就搬出地圖學、地圖投影學或者測繪學中的投影公式(如高斯投影 或 墨卡托投影),又是基準座標又是角度的搞的人頭都大了。
實際上要想實現這個功能非常easy。 arc engine中的ipoint就可以進行投影和反投影運算了。
投影過程(c#):
/// flatref 投影的座標系統,這裡的54013是世界投影 ,世界投影所有經緯度都可以轉換為平面座標,但是由於投影面積大失真也會比較大(相當於把整個地球劈成一片片的,然後拉伸最後貼到平面上,失真當然大了)。當然也可以選擇精度更高的平面如:esrisrprojcs_beijing1954gk_23n 對應數值21483 僅僅把北京附近的地球平面拉伸鋪在平面上,由於投影面積變小,所以投影經度提高。但是由於面積變小,所以有些經度緯度不能轉換,比如所美國的精度緯度用北京投影就投不了。
flatref = pfactory.createprojectedcoordinatesystem(54013);
//沒什麼說的,標準大地經緯度,可以將x-y逆投影為經度和緯度
earthref = pfactory.creategeographiccoordinatesystem((int)esrisrgeocstype.esrisrgeocs_nad1983);
/// 將經緯度點轉換為平面座標。
private ipoint getproject(double x, double y)
/// 將平面座標轉換為經緯度。
private ipoint getgeo(double x, double y)
實際上ipoint的投影和任何地圖都沒什麼大關係,完全可以不用地圖,直接呼叫ipoint進行投影的轉換
經緯度經度和平面距離誤差關係計算
由座標經度計算平面誤差距離,小數點後6位經緯度誤差約0.1m wkid 4490是地理座標系2000,wkid 4549是平面座標系2000的120度分帶 使用arcsde計算兩個經緯度座標點之間的平面距離 select sde.st distance sde.st transform sde.st...
MATLAB程式實現經緯度轉換成平面座標
近期搜了下經緯度座標轉換成直角座標的程式和原理啥的,哎,真難啊,其實道理都懂吧,下面直接貼 主要是加了個for迴圈而言,優化輸出效果。matlab程式實現經緯度轉換成平面爾座標 m pi 3.14159265358979323846 l 6381372 m pi 2 地球周長 w l 平面展開後,x...
利用公尺勒投影法實現經緯度和平面座標的相互轉換
因為我這裡需求是地球經緯度座標轉平面笛卡爾座標,所以選和墨卡托投影方式類似的公尺勒投影。這種投影簡單是說,就是假設有乙個和赤道垂直的圓柱套在地球上,然後在地心點亮一盞燈,燈光將地球各個點投影在圓柱上,在把圓柱展開,就得到地球的平面投影了,示意圖如下 使用這種方式得到的投影地圖在兩極會拉長,如圖所示 ...