【问题标题】:Convert Latitude / Longitude to relative X / Y coordinates on a georeferenced map将纬度/经度转换为地理参考地图上的相对 X/Y 坐标
【发布时间】:2014-04-09 08:37:50
【问题描述】:

在我知道三个角(或任何三个非对齐点)的坐标 (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?

【问题讨论】:

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


    【解决方案1】:

    这取决于地图,但是线性变换很简单。您还可以使用 Kavrayskiy 变换。我还找到了相反的:Get latitude and longitude from X and Y coordinates。这里有一个关于商人投影的问题:Convert lat/lon to pixel coordinate?

    【讨论】:

    • 我想知道,我是否需要使用投影(我不知道我的地图使用什么投影,我只知道 3 个地理参考点)。简单的线性转换会出现什么问题。
    【解决方案2】:

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

    proj4jmpl,是proj4的部分java端口

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-11
        • 1970-01-01
        • 2016-12-09
        • 1970-01-01
        • 2016-02-07
        相关资源
        最近更新 更多