在Lat / Lon到本地坐标系之间进行转换?知道界限时

时间:2017-02-12 00:49:43

标签: c# mapbox coordinate-transformation

所以我在Lat / Lon中有4个边界点,并且在(x,y)坐标系中我还有4个与lat / lon框的边界点直接相关的边界点。 (它是通过c#中的API加载的磁贴,但不存在获取本地坐标的函数)

这块瓷砖的宽度为305.5单位。高,(它是矢量图块)我如何设置线性代数问题,这样当我在边界内有一个Lat / Lon时,我可以找到与其他坐标系相关的x,y坐标。

我已经阅读了多个投影问题,并且它们都没有处理图像是矢量图像,但我确实有一个绝对距离,地图被表示到(305.5本地单位)。

这是我的一些数据,但我试图将其变成一种算法,我可以在c#中用于不同的边界等(数据是通过API获得的,我可以很容易地获得边界和纬度/经度值:

                              (lat,lon) -> (x,y)
Top-Left Bound:  (38.79691,-90)         -> (-305.5,305.5)
Top-Right Bound: (38.79691,-89.99451)   -> (305.5,305.5)
Bot-Left Bound:  (38.79263,-90)         -> (-305.5,-305.5)
Bot-Right Bound: (38.79263,-89.99451)   -> (305.5,-305.5)
Center-Bound:    (38.79477,-89.99725)   -> (0,0)

1 个答案:

答案 0 :(得分:1)

在您的具体情况下,这就是您正在寻找的

  

X = -305.5 +(305.5 - -305.5)*(lon - -90)/( - 89.99451 - -90)   Y = -305.5 +(305.5 - -305.5)*(纬度 - 38.79691)/(38.79691 - 38.79477)

一般形式是:

  

X = ImageLeft + ImageWidth *(lon - LonLeft)/(LonWidth)

如果最小值位于顶部/左侧或底部/左侧,您可能需要稍微调整一下。