我有一堆纬度/经度对映射到(地理上扭曲的)地图上的已知x / y坐标。

然后我还有一个纬度/经度对。 我想尽可能在​​地图上绘制它。 我该怎么做呢?

起初,我决定为三个最近的纬度/长点创建一个线性方程组,并计算这些变换,但这根本不适用。 由于这是一个线性系统,我也不能使用更多的附近点。

您无法假设North已启动:您拥有的只是现有的lat / long-> x / y映射。

编辑:这不是墨卡托投影,或类似的东西。 它的可读性被任意扭曲(想想地铁地图)。 我想只使用最接近的5到10个映射,这样地图其他部分的失真不会影响我正在尝试计算的映射。

此外,整个地图都在一个非常小的地理区域,所以不必担心全球 - 平地假设是足够好的。

===============>>#1 票数:8 已采纳

是否有关于失真类型的更具体细节? 例如,如果使用墨卡托投影将您的纬度和经度“扭曲”到2D地图上,则转换数学很容易获得

如果地图是真正任意扭曲的,那么你可以尝试很多东西,但最简单的可能是从你现有的点映射计算加权平均值 您的权重可以是从新点到每个现有点的x / y距离的平方倒数。

一些伪代码:

estimate-latitude-longitude (x, y)

    numerator-latitude := 0
    numerator-longitude := 0
    denominator := 0

    for each point,
        deltaX := x - point.x
        deltaY := y - point.y
        distSq := deltaX * deltaX + deltaY * deltaY
        weight := 1 / distSq

        numerator-latitude += weight * point.latitude
        numerator-longitude += weight * point.longitude
        denominator += weight

    return (numerator-latitude / denominator, numerator-longitude / denominator)

该代码将给出一个相对简单的近似值。 如果您可以更准确地了解投影扭曲地理坐标的方式,那么您可以做得更好。

===============>>#2 票数:2

好的。 从理论的角度来看,假设失真是“任意的”,并且任何解决方案都要求你对这种任意失真进行建模,你显然无法得到“答案”。 然而,任何解决方案都将涉及强加(通常是隐含的)某些失真模型,这些模型可能会或可能不会反映情况的实际情况。

由于您似乎对假定失真映射的某种局部连续性的模型最感兴趣,因此最明显的选择是您已经尝试过的:最近点之间的线性插值。 超越这将需要更复杂的数学和数值分析知识。

但是,你错了,假设你无法将其扩展到更多点。 您可以使用最小二乘误差方法。 找到最小化其他点误差的线性答案。 这可能是最直接的扩展。 换句话说,取5个最近的点并尝试提出线性近似,以最小化这些点的误差。 并使用它。 我接下来会尝试这个。

如果这不起作用,那么就会破坏N点区域的线性假设。 此时,您需要升级到二次或三次模型。 那时数学会变得忙乱。

===============>>#3 票数:0

问题是球体可以通过多种方式扭曲,并且在赤道上已知所有这些点,可以说,不会帮助你将点进一步绘制。

你需要更好的'接近'点,然后你可以假设这三个点在第四个平面上并进行插值 - 知道经度的距离是一个函数,而不是一个常数。

===============>>#4 票数:0

嗯。 也许我在这里错过了一些关于这个问题的东西,但如果你有长/拉信息,你也有北方向?

您似乎需要将测地坐标映射到投影坐标系。 例如osgb到wgs84。

所涉及的数学是非常重要的,但代码只出现了几行。 如果我有更多的时间我会发布更多,但我需要淋浴所以我会很无聊并链接到维基百科条目,这是非常好的。

注意:后期淋浴编辑。

  ask by Adam Ernst translate from so

未解决问题?本站智能推荐: