【问题标题】:Map country coordinates to screen pixels on hold将国家坐标映射到暂停的屏幕像素
【发布时间】:2018-05-28 03:03:35
【问题描述】:

我有拉脱维亚三个城市的坐标

57.4093885,21.5246563

56.9713962,23.9890814

55.8958226,26.4671762

我需要将它们放在我的拉脱维亚地图上。我无法理解算法,因为它放在我的地图上。我可以使用什么算法将我的纬度和经度转换为地图上的点。

my map

【问题讨论】:

  • 你必须熟悉不同的地图投影。
  • 我使用墨卡托地图

标签: algorithm math coordinates latitude-longitude


【解决方案1】:

对于 Merkator 投影映射相当简单。

地图有边界坐标 - LatMin, LonMin, Lattin, LonMax。它对应于坐标为 0、0、Width、Height 的屏幕矩形。

经度有线性映射

X = Width * (Lon - LonMin) / (LonMax- LonMin)

应该计算纬度with some math:

 a = 6378137    //geo-ellipsoid parameters
 b = 6356752.31
 f=(a-b)/a
 e=sqrt(2*f-f^2)  //excentricitet
 YY = a * ln(Tan(pi / 4 + Lat / 2) * 
     ((1 - e * sin(Lat)) / (1 + e * sin(Lat)))**(e/2)); 

更简单,不太精确的版本:

 YY = a * ln(Tan(pi / 4 + Lat / 2))

为 LatMin、LatMax、城市纬度 Lat 查找 YY,并应用类似的线性插值

 Y = Height * (YY_Lat - YY_LonMin) / (YY_LonMax- YY_LonMin)

【讨论】:

  • Сenter of Latvia 56.946285, 24.105078。我可以建立在这些数据上吗?你有什么考虑?可以用真实数据展示一个例子吗?
  • 我重新检查了纬度计算并给出了公式
  • Сenter 拉脱维亚是不够的,需要两点来确定规模
  • 我不明白究竟是什么数据。你能给我看一个拉脱维亚地图的例子吗?
  • 你有地图的边界坐标吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多