經緯度到螢幕畫素點的換算方法

2021-06-16 01:54:03 字數 2499 閱讀 2495

經緯度到螢幕畫素點的換算方法

相關問題點

1)地球是不規則的球體,兩極扁,赤道鼓。不能簡單地作為圓球體來計算。

2)每緯度在地理位置上的距離是一致的(約

111公里

),但是每經度之間的距離是不同的(越往兩極,東西方向上的距離就越小),不能直接轉換為直角座標系。

3)給出的經緯度座標發生變化後,需要動態的縮放所顯示地圖的大小。

開發環境

.net 2003 (mfc)

解決方法:

1.定出動態參照原點的經緯度。

舉個例子

,如果設定窗體的顯示方式是預設的

mm_text(

即左上點為原點

,x軸向右

y軸向下為正

),就應找到其中緯度的最大值,經度的最小值,以定出最西最北的參照點,將其作為螢幕顯示時的原點。例:

找到的值為

n36.5563     e139.0155

。這樣做,就能解決上面的第三個問題,並為下面實際點的描畫做準備。 2

. 將參照點經緯度轉化為弧度,並得到之後計算橫軸縱軸上距離的中間量。 1

) m_reflaradian = reflatitude*m_pi/180;

m_refloradian = reflongitude*m_pi/180;

以上面的點為例:

reflatitude = 36.5563     reflongitude = 139.0155

36.5563*3.14/180 = 0.6380rad

139.0155*3.14/180 = 2.4263rad 2

) m_refy = polar_radii + (equator_radii - polar_radii)*(90 - reflatitude)/90;

m_refx = m_refy*cos(m_reflaradian);

#define polar_radii      6356752   //

北極[南極]の半徑

#define equator_radii  6378137   //

赤道の半徑

例:縱軸參照距離:

m_refy = 6356752  +

(6378137 - 6356752 )*(90 - 36.5563)/90 = 6369450.8090185188

橫軸參照距離:

m_refx = 6369450.8090185188 *cos

(0.6380)= 5116399.2044743169

3. 

計算已知點到

這個參照點(原點)的x軸

y軸地理距離

1) 將已知點的經緯度

轉換成弧度

laradian = (latitude.degree + latitude.mintue/60 + latitude.second/3600) *  m_pi/180

loradian = (longitude.deree + longitude.mintue/60 + longitude.second/3600) *  m_pi/180;

以大宮為例:

n35.54.10.8 e139.37.37

laradian  =

(35 + 54/60 + 10.8/3600)* 3.14 /180 = 0.6266rad

loradian  =

(139 + 37/60 +37/3600)* 3.14 /180 = 2.4369rad

2) 計算地理位置上離

開參照點的x軸

y軸距離

double dx =  (loradian - m_refloradian)*m_refx;

double dy = -(laradian - m_reflaradian)*m_refy;

以大宮為例: 橫

軸方向上地理距離:

dx =

(2.4369rad  - 2.4263rad )* 5116399.2045 = 54598.2928公尺 縱軸

方向上地理距離:

dy = -

(0.6266rad -  0.6380rad)* 6369450.8090 = 72629.6869公尺

4. 換算成畫素點

,以供螢幕顯示.

point.x = dx/divisor;

point.y = dy/divisor;

// divisor

為地理位置距離和畫素點距離換算的係數,大小可根據情況自己定奪. 以大

宮為例:

橫軸方向上畫素點位置:

point.x = 54598.2928公尺

/27 = 2022 縱軸

方向上畫素點位置:

point.y = 72629.6869公尺

/27 = 2689

經過以上幾步,即可得到各已知經緯度的位置點到乙個動態參照點的x軸

y軸上相距的螢幕畫素點數量。給之後的描畫提供方便。

經緯度到螢幕畫素點的換算方法

經緯度到螢幕畫素點的換算方法 相關問題點 1 地球是不規則的球體,兩極扁,赤道鼓。不能簡單地作為圓球體來計算。2 每緯度在地理位置上的距離是一致的 約 111公里 但是每經度之間的距離是不同的 越往兩極,東西方向上的距離就越小 不能直接轉換為直角座標系。3 給出的經緯度座標發生變化後,需要動態的縮放...

經緯度互換 換算成公尺 兩點的經緯度計算兩點間的距離

gps座標系我本身不太了解它跟谷歌地圖經緯度有多大區別,於是搜了一下,看看他們的區別 地形圖座標系 我國的地形圖採用高斯 克呂格平面直角座標系。在該座標系中,橫軸 赤道,用 表示 縱軸 經線,用 表示 座標原點 經線與赤道的交點,用0表示。赤道以南為負,以北為正 經線以東為正,以西為負。我國位於北半...

經緯度與畫素值間的轉換JAVA

經度到畫素x值 public static double lngtopixel double lng,int zoom 畫素x到經度 public static double pixeltolng double pixelx,int zoom 緯度到畫素y public static double ...