(转)经纬度坐标转换为屏幕坐标

来源:互联网 发布:手机淘宝打不开黑屏 编辑:程序博客网 时间: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/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我的世界延迟怎么办 黄金棒打不开怎么办 枪火游侠黑屏怎么办 老虎直播封了怎么办 网卡及驱动异常怎么办 电脑刺激战场卡怎么办 grub 文件兼容性错误怎么办 电脑程序不兼容怎么办 运行程序不兼容怎么办 usb驱动删了怎么办 电脑卡死 点不开怎么办 电脑开机找不到驱动程序怎么办 显卡关了黑屏怎么办 xp全部程序打不开怎么办 七彩凤电脑打不开怎么办 鹦鹉鱼不敢吃食怎么办 甘油三酯1.87怎么办 手机移动数据网打不开怎么办 苹果手机浏览器打不开没网怎么办 玩多人游戏很紧张怎么办 dnf容易掉线怎么办 qq名字改不了怎么办 手被打火机烧伤怎么办 无效的菜单句柄怎么办 网课被发现刷课怎么办 华硕笔记本玩游戏卡怎么办 手机玩游戏卡顿怎么办? 360n4s玩游戏卡怎么办 手机玩游戏卡死怎么办 游戏占用cpu过高怎么办 h1z1 cpu占用高怎么办 电视盒子网速慢怎么办 gta5解压完然后怎么办 火山遭举报了怎么办 火山被恶意举报怎么办 gta5无网络链接怎么办 pdf格式没有解压密码怎么办 电脑感染蠕虫病毒怎么办 手机积分被盗兑怎么办 自动雨伞卡住了怎么办 全自动伞收不了怎么办