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

3
在我知道三个角落(或任意三个非对齐点)的坐标(lat/lng)的地图上,我有几个位于地图上的点的坐标(lat/lng)。
我想要的是将这些点的相对坐标(相对于左上角的x/y)转换为地图上的坐标。
我还对另一种转换(x/y到lat/lng)感兴趣。
我的地图很小(小于10 km x 10 km),我需要使用投影系统还是可以假设我的表面是完全平坦的并使用线性转换?
编辑:我不知道(也没有办法知道)我的背景地图使用哪种投影。我只知道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)

但是看起来好像还缺少一些东西?

相关问题:如何将纬度/经度映射到扭曲的地图上?

3个回答

0

我在想,我是否需要使用投影(我不知道我的地图使用什么投影,我只知道3个地理参考点)。 如果进行简单的线性转换,会遇到哪些问题? - luxcem

0
如果您想获得准确的转换结果,需要使用所涉及国家/地区的本地投影坐标系。您可以通过在谷歌地图中查找其中一个坐标(假设整个坐标集不跨越巨大区域),轻松确定其所在的国家/地区。从那里,您可以查找该国家使用的本地投影系统。除非您的目的是自己开发转换算法/实用程序,否则您可以利用一些库来实现从多个投影系统重新投影坐标所需的所有计算: proj4jmpl,这是 proj4 的部分 Java 移植版。

0

你说得对,你漏掉了一些东西。你的公式(我没有深入研究)看起来是线性的,因此似乎只适用于仿射变换。一个映射通常不是从(纬度,经度)到(x,y)的仿射变换。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接