(轉)經緯度坐標轉換為屏幕坐標


經緯度坐標轉換成屏幕坐標
地理坐標定義規則:X軸(代表經度)向右遞增,Y軸(緯度)向上遞增,就好比小學學過的平面坐標。向左、向下的規則。屏幕坐標定義規則:X軸向右遞增,Y軸向下遞增。
可以看出,地理坐標和屏幕坐標的區別僅僅只是在於Y軸遞增方向是相反的(這就是不同)。
這里強調一點的就是為了保證精度,地理坐標的度*3600換算成秒,所有的取值用double來計算,最后的結果再轉換成int。
1 已知道屏幕的高(y)和寬(h),地理坐標區域的范圍(maxLon,minLon,maxLat,minLat),這里我們知道了這些已知的參數。
2 我們可以算出每像素所代表的經度和緯度(有人稱這個為比例因子)。
公式:scaleX = ((maxLon-minLon)*3600)/h ----------X軸上每像素代表的經度秒數;
公式:scaleY = ((maxLat-minLat)*3600)/y ----------Y軸上每像素代表的緯度秒數;
這兩個比例因子就是兩個坐標系之間的關系。
3 很簡單的一步了,那就是算出該地理坐標區域中的任何一點(lon,lat)在屏幕上的坐標了。
公式:screenX = lon*3600/scaleX;---------屏幕坐標X軸坐標
公式:screenY = lat*3600/scaleY; ---------屏幕坐標Y軸坐標
還有最后一步,那就是我們要把該地理區域占滿占個屏幕該怎么辦呢?
4 接着我們需要該地理區域占滿占個屏幕該怎么辦呢
公式:minX = minLon*3600/scaleX;區域左邊置最左端
公式:minY = minLat*3600/scaleY; 區域上面置最上端
5 當地地理范圍區域占滿整個屏幕時,我們需要用到第三步計算出來的 screenX和screenY兩個參數,該區域中的任何一點的公式如下: 
公式:X = screenX - minX = (lon - minLon)*3600/scaleX; 
公式:Y = screenMaxLat - screenLat = (maxLat - lat)*3600/scaleY;
6 總結:
經緯度轉屏幕坐標的最終公式如下:
公式:X = (lon - minLon)*3600/scaleX; 
公式:Y = (maxLat - lat)*3600/scaleY;
接着我們由上面的公式可以推出屏幕坐標轉經緯度坐標公式如下:
   公式:lon = X * scaleX/3600 + minLon;
公式:lat = maxLat - y* scaleY/3600

 

文章轉自:http://blog.163.com/wj_1251/blog/static/15027402520113274529842/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM