我正在尝试对值进行地理编码,并将它们映射到城市的卫星图像(准确地说是纽约市)。我在使用世界地理空间图像之前已成功完成此操作,然后将最大纬度/经度范围(-90,90& -180,180)中的经度和纬度值映射/缩放到图像的最大宽度和高度(0,宽度和0,高度)完美地工作。我有点困惑如何做到这只是一个城市的地图。
目前,我有纽约市的高分辨率卫星图像,并将其定位,以便与Google地图上的纽约市地图完美对齐(我正在使用他们的API对地理位置进行地理编码)。我试图获取我正在使用的卫星图像的上/下纬度值和左/右经度值,并尝试缩放需要映射到该范围内的图像上的任何经度/纬度值。然而,这似乎不起作用。我可以使用另一种方法,以便可以将lat / lng坐标动态映射到纽约市的卫星图像上吗?
这实际上是我要映射到的图像: alt text http://i50.tinypic.com/15oxog8.jpg
感谢。
答案 0 :(得分: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));
希望有所帮助
答案 1 :(得分:5)
您正在进行名为图像注册或地图整改的流程。有一整套遥感专用于这样做的方程式。
也许你可以从这个网站开始 - 它应该基本上做你需要的 http://labs.metacarta.com/rectifier/
如果没有,那么可以查看QGIS或GRASS等工具。如果您有钱和时间,也可以使用ESRI ArcGIS桌面或ERDAS Imagine或IDRISI。