gpt4 book ai didi

javascript - 将地理坐标 (lat, lng) 映射到 map (x, y)

转载 作者:数据小太阳 更新时间:2023-10-29 06:03:47 24 4
gpt4 key购买 nike

我有一些城市的地理坐标(纬度和经度),想要获取 x、y 坐标以便将它们绘制到 map 中。

map 是标准 map ,就像http://www.wordtravels.com/images/map/Spain/Fuerteventura_map.jpg一样。例如。

我尝试了几个我发现的公式,但似乎没有一个真正起作用 :(。简单的 javascript 代码或 ruby​​ 最好 :)

最佳答案

有很多方法可以不同程度地解决这个问题。但是,它们都归结为执行与您的 map 对应的投影。

如果您知道您的 map 是墨卡托投影类型,那么可以将纬度/经度坐标简单地视为 X/Y,并进行适当的缩放和平移。也就是说,您会找到一个简单的 ax+b 和 cy+d 来完成这项工作。

如果您的 map 不是墨卡托投影(因为如果它试图使比例保持一致,它可能不是,就像这张 map 那样),那么您最好的选择是假设它是“地球切线”投影。 (这适用于小陆地。)在这种情况下,您需要先将纬度/经度投影到三维坐标系中。

z=sin(lat)
x=cos(lat)*sin(long)
y=cos(lat)*cos(long)

正 z 指向北极。正 y 指向 0, 0,正 x 指向 lat 0 long 90(东),正 lat/long 是北和东。当然你必须先转换成弧度。

所有这些都假设地球是球形的,这并不完全正确,但除非你发射远程迫击炮弹,否则它已经足够近了。

无论如何,一旦您拥有了 XYZ,您就需要针对 map 进行旋转和缩放。要绕 Z 轴旋转,只需在投影到三个维度之前减去基准经度。执行此操作可将您的 map 以零经度为中心,以便进行最简单的数学计算。

完成此操作后,您只需向前旋转地球仪,直到您的原始 map 正面朝前。通过在 y-z 轴上进行二维旋转来执行此操作。使用 http://en.wikipedia.org/wiki/Coordinate_rotations_and_reflections弄清楚那部分。

最后,您的 x,z 坐标将与您的 map 的 x,y 坐标很好地对齐,以实现如前所述的适当比例/平移。

关于javascript - 将地理坐标 (lat, lng) 映射到 map (x, y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3744165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com