将纬度和经度值映射到图像上

4
我正在尝试对值进行地理编码,并将它们映射到城市的卫星图像上(确切地说是纽约市)。我之前使用过世界地理空间图像成功完成了这项工作,然后映射/缩放了经度和纬度值,使其从最大纬度/经度范围 (-90,90 和 -180,180) 映射到图像的最大宽度和高度 (0,width 和 0,height),效果非常完美。但是现在对于一个城市的地图,我有点困惑该如何做。
目前,我拥有纽约市的高分辨率卫星图像,并已将其定位,以完全与 Google 地图上的纽约市地图对齐(我正在使用他们的 API 对我的位置进行地理编码)。我已尝试获取我正在使用的卫星图像的顶部/底部纬度值和左/右经度值,并尝试缩放任何需要映射到此范围内的经度/纬度值。然而,这似乎并没有起作用。是否有其他方法可以使用,以便能够动态地将经度/纬度坐标映射到纽约市的卫星图像上?
这基本上就是我想要映射的图像: alt text 谢谢。
2个回答

6

如果您知道图像的大小和地理范围(纬度/经度值),您可以使用以下内容:

x = imageWidth * ( pointLon - ImageExtentLeft ) / (ImageExtentRight - ImageExtentLeft);
y = imageHeight * ( 1 - ( pointLat - ImageExtentBottom) / (ImageExtentTop - mImageExtentBottom));

顺便提一下,如果您正在使用Google Maps API对位置进行地理编码,为什么不直接使用它的函数将标记添加到地图上呢?(也许我没有完全理解您的情况)
var latlng = new GLatLng(pointLat, pointLon);
map.addOverlay(new GMarker(latlng));

希望能帮到您。

5
你正在进行一种被称为图像配准或地图矫正的过程。有一整套遥感方程专门用于执行此操作。
如果需要,可以尝试使用QGIS或GRASS等工具。如果有足够的资金和时间,也可以使用ESRI ArcGIS桌面版、ERDAS Imagine或IDRISI。 也许你可以从这个网站开始 - 它应该基本上做你需要的http://labs.metacarta.com/rectifier/(链接已失效)

谢谢!Metacarta工具非常棒,正是我所需要的! - minimalpop
该网站已不存在。Mapwarper.net是一种地图校正工具,尽管我没有看到任何使用其提供的数据构建图像地图的方法。 - ashleedawg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接