3

我目前正在开发一小块 (Java) 软件,它应该能够显示地图以及该地图中的当前 GPS 位置。我对此完全陌生,但很明显我必须进行某种坐标转换。我找到了“Proj4J”,它似乎可以为我做很多事情。现在,我拥有什么以及我想做什么:

  1. 我有一张地图的位图。该地图的投影可以是任何“明确定义”的投影,例如 Lambert 或 Mercator。我无法将其修复为一个投影。
  2. 我有来自“标准”GPS 接收器的 GPS 坐标。我相信他们在 WGS84 中是纬度/经度,对吗?

现在我的问题是:我必须将 GPS 位置映射到地图位图中的基本“屏幕坐标”。为此,我假设需要参考点,我知道它们的纬度/经度和相应的像素位置。由于我的地图可以轻松覆盖几百公里的范围,已知点和任意位置之间的线性插值可能不适用于所有类型的投影,我说对了吗?到目前为止,我已经阅读了“将给定图片上的长/纬度转换为像素 x/y”,但这涉及墨卡托投影,我相信线性近似会比兰伯特图更好。我想整个过程如下:

  1. “校准”地图,即识别位图中已知纬度/经度的两个位置,从而获得它们的像素位置。
  2. 使用从“lat/lon WGS84”到“地图投影”的 Proj.4 转换将这些参考点从 (1.) 映射到地图坐标中。
  3. 从 (2.) 中获取点并将它们再次映射到允许对像素位置进行线性插值的投影,我将其称为“像素投影”。
  4. 现在我在“像素投影”中有两个坐标参考点及其对应的像素位置。

对于来自 GPS 接收器的纬度/经度值,请执行以下操作:

  1. 使用“地图投影”将位置转换为地图位置。
  2. 从 (1.) 获取地图位置,并使用上面的“像素投影”将其转换为坐标。
  3. 由于“像素投影”中的所有距离都保持不变(即像素投影的条件!),因此可以对从(2.)得到的坐标与上面参考点的已知位置进行插值。

这里有几个大问题:

  1. 这是要走的路吗,使用最终的“像素投影”来允许线性插值?
  2. Proj.4 会是什么类型的投影,可以用它来完成吗?
  3. 可以“返回” - 我有一个像素位置并希望完成纬度/经度(如“像素位置”->“像素投影”->“地图投影”->“纬度/经度”)?

非常感谢,詹斯。

4

0 回答 0