1

我有一张 400x400 的地图,大约代表 250x250km 的区域,我想以 Lat/Lon 的形式投影 GPS 坐标。

考虑到精度不是很重要(可以容忍几公里的误差),有什么简单的公式或算法可以进行投影并转换为像素坐标?如果有,我可以期待什么错误?或者我真的错了,没有简单的方法来达到我需要的精度?

笔记:

  • 我读过关于 PROJ.4 但我更喜欢不使用任何外部库,因为该程序必须在小型设备中运行
  • 我在地图上没有任何校准数据,但我可以使用在线地图自己校准。
  • 这里我记录了一点,我知道如何将纬度/经度转换为 x/y/z 坐标。但是我不知道怎么用Z拨号
4

2 回答 2

4

通常,这是使用变换矩阵墨卡托投影来完成的。

这是一个很好的起点

虽然它不是 java,但有一个名为OpenHeatMap的开源项目,它在其源代码中执行此操作。这可能是一个查看的好地方(特别是 maprender/src/maprender.mxml 中的 setLatLonViewingArea、setLatLonToXYMatrix、mercatorLatitudeToLatitude)。

希望这可以帮助!

于 2010-12-12T23:36:33.603 回答
2

GIS 人员可能会为此向我扔石头,但假设你不是一个高纬度地区,你可以找出地图对角的纬度/经度来获得边界框,选择一个角作为你的原点,取您的 GPS 坐标和原点之间的差异,然后进行简单的乘法以将其缩放为像素,然后绘制点。

我过去曾将它用于我正在玩的地图程序,我大约在第 39 平行。如果它不必非常准确,也不必太靠近杆子(虽然,对于 250 公里的正方形,你必须靠近杆子才会发生严重错误),这将是最快的,并且最简单的。

于 2010-12-13T06:28:25.327 回答