从纬度/经度计算图像上的x / y位置

时间:2013-11-13 07:14:36

标签: model-view-controller gps kml latitude-longitude transformation

我已经做了一些研究,但没有一个答案适合我的问题: 我有一个由latlonbox表示的图像(jpeg):

https://developers.google.com/kml/documentation/kmlreference?hl=de#latlonbox 所以我有形成图像的北,南,东和西信息,对吧? N / W是左上角点,S / E是右下角点吗?

图片大小为4000x2000。在我的mvc应用程序中,我将尺寸缩小到1500x750像素。

现在我试图通过获取纬度/经度输入来计算此图像上的x / y位置。我怎样才能做到这一点?

我找到了这个链接: http://code.google.com/p/geographical-dot-net/source/browse/trunk/GeographicalDotNet/GeographicalDotNet/Projection/GoogleMapsAPIProjection.cs

但我没有任何缩放信息,我也不明白如何开始,因为我有一个jpeg和latlbox的kml信息。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

感谢您的回复!是的,就我而言,公里很小,也许只有几百米。我尝试用两个线性方程来解决它,这是否合适? 使用第一个链接,以latlonbox为例,我做了以下内容:

WN: (-90,8714285289695/48,25475939255556)  <=> X: (0/0)
ES: (-90,86591508839973/48,25207367852141) <=> Y: (1500/750)

E: -90,86591508839973
S: 48,25207367852141
W: -90,8714285289695
N: 48,25475939255556

Diff EW:  0,00551344056977
Diff_SN:  0,00268571403415

我定义了两个函数:     f_X1:m * x_lon + b其中f_X1是X坐标,x_lon是经度值     f_X2:m * x_lat + b其中f_X2是Y坐标,x_lat是纬度值 获取X坐标的函数:

m = (1500/Diff_EW) = 272062 (rounded)

在函数f_X1中插入已知的X /经度对:     1500 = E * 272062 + b     b = 1500 - (E * 272062)     b = 24722662(四舍五入)

=> f_X1: 272062x + 24722662

获取f_X2的相同程序:

m  = (750/-Diff_SN) = - 279255(rounded)

在功能f_X2中插入已知的Y /纬度对:

750 = S * (-279255) + b
b = 750 - (S*(-279255))
b = 13475382

f_X2: -279255x + 13475382

如果我插入东西方(E和W)的值,我会得到X坐标(大约1500和0;由于四舍五入而偏离)

如果我插入南方和北方(S和N)的值,我将得到Y坐标(大约750和0;由于四舍五入而偏离)

在这种情况下,这是否是正确的方法?我假设函数是线性的,我不知道这是否正确。

感谢您的帮助。