我有一些城市的地理坐标(Latidute&经度),并希望获得X,Y坐标,因此可以将它们绘制成地图。

该地图是标准的 http://www.wordtravels.com/images/map/spain/fuerteventura_map.jpg 例如。

我尝试了几个我发现的几个方形,但似乎没有一个真正可行的:(。简单的JavaScript代码或Ruby最好是最好的:)

有帮助吗?

解决方案

除上述答案外,还有开源proj4js库,该库在各种地图投影之间执行转换。它由OpenLayers内部用于此类产品,并支持许多流行的预测和坐标系。

其他提示

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

如果您知道自己的地图是Mercator投影品种,那么可以将LAT/长坐标简单地视为X/Y,适当地缩放和翻译。也就是说,您会发现一个简单的AX+B和CY+D可以完成工作。

如果您的地图不是Mercator预测(如果它试图使比例保持一致,那么可能不会像这一数字一样),那么您最好的选择就是假设它是“地球变形”投影。 (这对小型地产都可以。)在这种情况下,您需要首先将LAT/Long投射到三维坐标系统中。

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

正向Z指向北极。 Y点为0、0,正X点为LAT 0长90(东)和正纬度/长度为North and Long。当然,您必须先转换为弧度。

所有这些都假设了球形地球,这不是完全正确的,但是除非您要开火漫长的迫击炮弹,否则它已经足够接近。

无论如何,一旦拥有XYZ,就需要旋转并扩展地图。要围绕Z轴旋转,请在投影成三个维度之前减去基本经度。这样做以将您的地图置于零永久的中心,以获得最简单的数学。

完成此操作后,您只需要向前旋转地球,直到您的原始地图为前面。在Yz轴上使用2D旋转执行此操作。采用 http://en.wikipedia.org/wiki/coorication_rotations_and_reflections 弄清楚那部分。

最后,您的x,z坐标将与地图的x,y坐标很好地排列,以进行适当的比例/翻译,如前所述。

也许这会有所帮助,我只使用JavaScript为美国完成了实施。

演示/代码: http://the55.net/_11/sketch/us_map

使用Google Maps API,您可以在地图上叠加JPG并正确定位。

这是一个例子http://code.google.com/apis/maps/documentation/javascript/examples/examples/overlay-hideshow.html

这是关于覆盖的API页面http://code.google.com/apis/maps/documentation/javascript/overlays.html

除非您的规模很小(并靠近赤道),否则您不会发现它很容易。维基百科 地理坐标系 是一个很好的开始...

更容易的道路可能是使用类似 网络映射 并坚持您的纬度和纵向。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top