(转)经纬度坐标转换为屏幕坐标
来源:互联网 发布:手机淘宝打不开黑屏 编辑:程序博客网 时间:2024/05/18 06:40
地理坐标定义规则: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/
- (转)经纬度坐标转换为屏幕坐标
- 经纬度转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- openlayers 根据经纬度转换为屏幕坐标
- 如何把经纬度坐标转换为屏幕显示坐标?
- 经纬度坐标转换成屏幕坐标
- 经纬度坐标转换成屏幕坐标
- 经纬度坐标转换成屏幕坐标
- 经纬度转换成屏幕坐标
- GPS经纬度转换屏幕坐标
- 地理坐标、经纬度坐标与屏幕坐标的转换!
- GPS坐标(经纬度)转换为百度坐标(经纬度)续
- 把屏幕坐标转换成经纬度
- IOS百度地图屏幕坐标与经纬度坐标的转换
- 在MyEclipse中运行tomcat出现Error initializing endpoint错误
- 标签响应javascript的href处理(不响应链接href,响应onclick,避免跳到页首)
- Netty 5用户指南
- java语言读取文本文件的指定行
- String.split(\" \")中多个空格引发的问题
- (转)经纬度坐标转换为屏幕坐标
- java播放音乐文件
- 风力、风向角度 换算
- java模糊匹配某文件夹下的文件并删除
- (转)java权限管理与用户角色权限设计
- 实现基于Spring框架应用的权限控制系统
- 使用poi-2.5.1-final-20040804.jar 操作Excel
- java版本的escape和unescape函数
- web.xml中filter的用法