0

我已经做了一些研究,但没有一个答案适合我的问题:我有一个由 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 和带有 latlonbox 的 kml 信息。

谢谢你的帮助

4

1 回答 1

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;由于四舍五入而存在偏差)

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

谢谢你的帮助。

于 2013-11-14T07:41:14.330 回答