当前位置:文档之家› 地理坐标、经纬度坐标与屏幕坐标的转换

地理坐标、经纬度坐标与屏幕坐标的转换

地理坐标、经纬度坐标与屏幕坐标的转换
地理坐标、经纬度坐标与屏幕坐标的转换

地理坐标、经纬度坐标与屏幕坐标的转换地理坐标定义规则:

X轴(代表经度)向右递增,Y轴(纬度)向上递增,就好比小学学过的平面坐标(貌似又忘了,要重读小学了)吧?向左,向下的规则,这个不用我再阐述了吧

屏幕坐标定义规则:

X轴向右递增,Y轴向下递增..

可以看出,地理坐标和屏幕坐标的区别仅仅只是在于Y轴递增方向是相反的…(这就是不同).好了,现在我们开始转换他们吧.这里强调一点的就是为了保证精度,地理坐标的度*3600换算成秒,所有的取值用double来计算,最后的结果再转换成int

1.已知道屏幕的高(y)和宽(h),地理坐标区域的范围

(maxLon,minLon,maxLat,minLat)..这里我们知道了这些已知的参数…

2.我们可以算出每像素所代表的经度和纬度(有人称这个为比例因子):

公式:

scaleX = h/((maxLon-minLon)*3600)———-X轴上每像素代表的经度秒数;公式:

scaleY = y/((maxLat-minLat)*3600)———–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 = (maxLat–minLat)*3600/scaleY;

公式:

screenLat = (lat–minLat)*3600/scaleY;

公式:

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;

相关主题
文本预览
相关文档 最新文档