如何将纬度/经度映射到扭曲的地图?

Ada*_*nst 23 mapping math maps latitude-longitude

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

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

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

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

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

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

fas*_*all 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)
Run Code Online (Sandbox Code Playgroud)

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