2010-02-17 76 views
1

我試圖對值進行地理編碼,並將它們映射到城市(準確地說紐約市)的衛星圖像。我已經在使用世界地理空間圖像之前成功完成了此操作,然後將最大緯度/經度範圍(-90,90 & -180,180)的經度和緯度值映射/縮放到圖像的最大寬度和高度( 0,寬度& 0,高度)完美運作。我有點困惑如何做到這一點只是一個城市的地圖。將經度和緯度值映射到圖像上

目前,我有一個高分辨率的紐約城衛星圖像,並定位它,以便它與Google地圖上的紐約市地圖完美對齊(我正在使用它們的API對我的位置進行地理編碼) 。我試圖獲取我正在使用的衛星圖像的頂部/底部緯度值和左/右經度值,並嘗試縮放需要在此範圍內映射到圖像上的任何經度/緯度值。然而,這似乎並不奏效。是否有另一種方法可以使用,這樣就可以動態地將緯度/經度座標映射到紐約市的衛星圖像上?

這基本上是我想映射到圖像: alt text http://i50.tinypic.com/15oxog8.jpg

感謝。

回答

4

你是用一種稱爲圖像配準或地圖整改過程參與。這裏有一整套專用於方程的遙感。

也許你可以開始與這個網站 - 它應該基本上做什麼,你需要 http://labs.metacarta.com/rectifier/

如果沒有的話,也許看像QGIS或GRASS工具。如果你有錢和有時間,你也可以使用ESRI ArcGIS桌面或ERDAS Imagine或IDRISI。

+0

謝謝!該metacarta工具是驚人的,正是我需要的! – minimalpop 2010-02-19 22:13:21

6

如果您知道圖像的大小和地理範圍(經/緯度值),可以使用類似:

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

順便說一句,如果您使用的是谷歌地圖API地理編碼位置,爲什麼你不使用它的功能直接添加標記到你的地圖? (也許是我沒有完全理解你的情況)

var latlng = new GLatLng(pointLat, pointLon); 
map.addOverlay(new GMarker(latlng)); 

希望它可以幫助