确定给定地图中的投影
Posted
技术标签:
【中文标题】确定给定地图中的投影【英文标题】:Determining the projection in a given map 【发布时间】:2009-11-29 22:24:39 【问题描述】:我意识到这可能不是一个编程问题,但这是我作为程序员经常遇到的一个问题,所以我认为这里的其他人可能有有用的知识可以分享。
我有一张地球区域的地图(可以是任何区域,但这里是an example)我应该如何确定地图中使用的投影,然后我应该如何以编程方式将纬度和经度坐标转换为像素位置图片。
目前我有 matlab 代码来打开图像并绘制结果 (x,y) 坐标,但我不知道如何将 lat/longs 转换为 x,y!
任何帮助都将不胜感激。
【问题讨论】:
【参考方案1】:地理坐标是球坐标的变体。您可以将它们转换为正常坐标:
x = r * sin(90 - lat) * cos(lon)
y = r * sin(90 - lat) * sin(lon)
z = r * cos(90 - lat)
这不是很准确,因为地球并不完全是一个球体。根据地图的类型,有几种方法可以从中获取 2D 坐标。图像可以从球体投影到圆柱体或两个平面。
这些链接可能会有所帮助:
http://en.wikipedia.org/wiki/Geographic_coordinate_system http://en.wikipedia.org/wiki/Map_projection http://en.wikipedia.org/wiki/Spherical_coordinates【讨论】:
情况并非总是如此 - 例如,任何地图都可能是墨卡托投影、罗宾逊投影或此处列出的任何一种:radicalcartography.net/?projectionref。我的问题是确定给定图像是这些投影中的哪个(显然你可以通过检查来做到这一点,但它非常费力且效率低下!)【参考方案2】:事实证明,以编程方式计算地图的投影是一项复杂的图像处理任务。我设法解决这个问题的方法是简单地使用具有明确投影的地图 - 例如谷歌地图使用墨卡托投影,英国的大多数地图也是如此(因为我们的英国参考网格基于通用横轴墨卡托)。
我希望这对其他人有所帮助!
【讨论】:
以上是关于确定给定地图中的投影的主要内容,如果未能解决你的问题,请参考以下文章