我有一张400x400的地图,近似代表250x250km的区域,我希望以Lat / Lon的形式投射GPS坐标。
考虑到精度不是很重要(一些km的误差是可以容忍的),有没有简单的公式或算法来进行投影并转换为像素坐标?如果有,我可以期待什么错误? 或者我真的错了,我需要的精确度并不容易?
注意:
答案 0 :(得分:4)
通常,这是使用transformation matrix并使用Mercarator projection完成的。
这是start的好地方。
虽然它不是java,但是有一个名为OpenHeatMap的开源项目,它在源代码中执行此操作。这可能是个好看的地方(特别是mapLinder / src / maprender.mxml中的setLatLonViewingArea,setLatLonToXYMatrix,mercatorLatitudeToLatitude)。
希望这有帮助!
答案 1 :(得分:2)
地理信息系统的人可能会因此而嘲笑我,但假设你不是一个高纬度,你可以找出地图对角线的纬度/经度来获得边界框,选择一个角作为你的起源,取一下你的GPS坐标和原点之间的差值,然后通过简单的乘法将其缩放到像素,然后绘制点。
我过去曾经使用过这个用于我正在玩的地图程序,而我正处于第39个并行状态。如果它不必是准确的,并且不要太靠近杆(虽然,对于250平方公里,你必须接近极点才能发生严重错误),这将是最快的,并且最容易的。