将纬度/经度转换为地理配准地图上的相对X / Y坐标

时间:2014-03-06 15:38:32

标签: maps coordinate-systems coordinate-transformation map-projections

在我知道三个角(或任何三个非对齐点)的坐标(lat / lng)的地图上,我有一些位于地图上的点的坐标(lat / lng)。

我想要的是相对于地图的点的相对坐标(相对于左上角的x / y)。

我也对其他转换感兴趣(x / y到lat / lng)。

我的地图非常小(小于10公里x 10公里)我需要使用投影系统吗?或者我可以假设我的表面完全平坦并使用线性转换?

编辑:我不知道(我无法知道)我的背景地图使用哪个投影。我只知道3个地理参考点。

解决方案是使用线性转换:

如果我的三个点是A(xA,yA),B(xB,yB),C(xC,yC)和我想要位置X(x,y)的点。

我可以在lat / lng参考中将ab计算为AX = aAB + bAC

x = xA + a * (xB-xA) + b * (xC - xA) y = yA + a * (yB-yA) + b * (yC - yA)

但看起来我错过了什么?

相关问题:How to map a latitude/longitude to a distorted map?

3 个答案:

答案 0 :(得分:0)

这取决于地图,但线性变换很简单。您还可以使用Kavrayskiy转换。我也发现相反:Get latitude and longitude from X and Y coordinates。以下是有关mercantor投影的问题:Convert lat/lon to pixel coordinate?

答案 1 :(得分:0)

如果您想获得准确的转换,则需要使用国家/地区的本地投影,这些坐标属于。你可以通过查找谷歌地图中的一个坐标(假设整个坐标集不跨越一个巨大的区域)轻松识别出来,这将告诉你坐标在哪个国家/地区。从那里,您可以查找该国家/地区使用的本地投影系统。除非此处的目的是为您自己提供转换算法/实用程序,否则您可以使用一些库来实现所有需要的计算,以便从多个投影系统重新投影坐标:

proj4jmpl,这是proj4的部分java端口

答案 2 :(得分:0)

你是对的,你错过了什么。你的公式(我没有深入研究过)看起来是线性的,因此似乎只适用于仿射变换。地图不是(通常)从(lat,lon)到(x,y)的仿射变换。

如果事情那么简单,即使你知道10x10平方的点(0,0),(10,0)和(5,10)的坐标,你也可以确定转换 - 但你不能,因为x方向可以保存距离或经度或其他东西(当纬度,即y变化时),你不能区分这些情况。您将不得不使用其他信息。