1、二维平面坐标系转换三维空间屏幕坐标系研究摘 要本文通过研究二维平面地理坐标系转换到三维空间屏幕坐标系的数学模型,缩短了人们对周围兴趣点(POI Point of Interest)信息方向识别,距离远近感知过程的时间,以更合理的方式来展现身边的信息。 关键词坐标转换;地图;几何 中图分类号:TP317 文献标识码:A 文章编号:1009-914X(2015)44-0358-01 1 问题重述 当今时代智能手机已经普及到广大人民群众。无论 Android、IOS 还是 Windows,黑莓等各种 APP 也是层出不穷.而基于位置的服务1 (Location Based Service,LBS)是
2、移动领域服务的核心业务,人们可以通过定位自己的位置来查询周围的 POI(Point of Interest)信息,来实现生活的便捷,工作效率的提高等目的。而 POI 信息的表达一般都是基于二维地图的,以标注的形式在地图上表现出来。看懂在 2 维地图上以标注形式表达的 POI 信息并不是每一个人都能做到的,现实生活中很多人没有方向感,分不清东西南北,无法把现实中事物的方位,和地图中虚拟事物一一对应起来。根据以上问题重述,我提出以下两个问题: (1) 如何根据当前位置,将四周的 POI 信息的相对位置,相对方向正确得投影到手机摄像头屏幕中。 (2) 如何在运动的过程中,动态更新高程信息。 2 模型
3、建立 针对问题(1) ,我们提出经纬度和屏幕坐标进行相互映射的数学模型。 已知手机屏幕的高度和宽度,我们分别设为 H 和 W,还有地理区间的区域范围坐标 maxLon,minLon,maxLat,minLat 四个坐标的值。 首先我们计算出每个像素(px)与实际经纬度之间的变量关系,通过 maxLon-minLon 获取经度的跨度,然后这里的 3600 表示把地理坐标的度换算成更加精确的秒2,我们用 N 来表示这个常量 N = 60 * 60 最后除以屏幕的宽度 w,同理计算纬度 ratioX = (maxLon-minLon) * N)/W ratioY = (maxLat-minLat)
4、* N)/H 通过以上计算,我们可以得出像素在该尺寸的屏幕上和实际经纬度之间的变量关系 ratioX 和 ratioY,这 2 个数的物理意义是屏幕上的一个像素的宽占多少经度,像素的高占多少纬度。 通过以上变量关系我们可以求出二维地理坐标系的原点 minLon 和minLat 在屏幕坐标系中的坐标值 minX 和 minY minX = minLon * N/ratioX; minY = minLat * N/ratioY; 通过手机 GPS 传感器我们可以获得当前位置所在经纬度信息, 经度 lon,纬度 lat,把经纬度信息带入我们得变量因子中,可以获取当前经纬度投影到屏幕坐标系中的 X 和
5、 Y 的值 screenX = lon * N/ratioX; screenY = lat * N/ratioY 最后我们求出相对于屏幕原点左上角点的实际屏幕坐标 X?= screenX - minX = (lon - minLon) * N/ratioX (1) 然后由于屏幕坐标系是以左上角为原点,X 轴方向和地理坐标系一致,Y 轴方向和地理坐标系相反,所以我们先求出纬度最大点的屏幕坐标: screenMaxLat = (maxLat - minLat) * N/ratioY 然后求出当前点相对于纬度最小点得屏幕坐标: screenLat = (lat - minLat) * N/ rati
6、oY 然后用纬度最大点坐标与当前点相对于纬度最小点坐标做差值,这样得效果就是把 Y 轴得方向反过来了,其结果就是 Y = screenMaxLat - screenLat = (maxLat - lat) * N/ ratioY;?(2) 整理等式(1)和等式(2)我们最终获得二维平面地理坐标系转换到三维空间屏幕坐标系的数学模型公式,其中 lon 和 lat 为手机 GPS 模块提供,输出 X,Y 即为屏幕坐标 : X = (lon - minLon) * N/ ratioX;? Y = (maxLat - lat) * N/ ratioY; 针对问题(2) ,我们需要建立通过计算步行的距离来
7、动态更新当前高程信息的数据模型。 我们假设成人正常步行速度为 v=1.5m/s,从 C 点出发经过时间 t 到达 A 点。已经知道在 C 的高程为 altitudeC,现在要求解在 A 点得高程altitudeA 通过步行速度 v 和运行的时间 t(t 由手机内部的系统时间计算时间差得出)我们可以得到运行的距离 distanceAC = v * t,角度ACB 由手机传感器获取,通过三角几何学我们可以算出的 distanceAB 距离为: distanceAB = sinACB * distanceAC 又已知 C 点得高程为 altitudeC,所以在 A 点的高程为: altitudeA = altitudeC + distanceAB 3 原型系统实现 以上 2 个模型都已经成功运用到天之眼 APP 中的摄像头展示 POI 模块中,效果图如下,把原本在二维平面地图上的 POI 信息,通过以上模型的实现,成功的叠加在摄像头屏幕坐标系中。使得 POI 信息更加直观。总结 本文主要提出了的数学模型,解决了 POI 信息在二维平面中人类认知困难的问题,但是我们没有考虑地图缩放的情况下屏幕坐标变换的问题,可以进一步改善模型。 参考文献 1LBS http:/zh.wikipedia.org/wiki/地理位置服务 2度分秒转换规则 http:/