2013-08-03 91 views
4

我已經使用osmdroid爲地圖圖塊編寫了雷達天氣應用程序,並手動覆蓋了NOAA脊線雷達數據。除了雷達圖像未被投影之外,一切工作都很好,而openstreetmap拼圖則是橫向墨卡託投影。天氣在它應該的範圍內,但數據被扭曲。將未投影的雷達圖像投影到osmdroid

我看到三種方式來解決這個問題(按優先順序排列),但我有與所有三個麻煩:

1)找到墨卡託投影已經雷達數據的來源 - 谷歌搜索後幾個小時,我已經沒有發現任何東西 2)以編程方式重新投影后,我下載它們的圖像。有沒有人知道這個好的API? 3)他們在飛行中,可能與openlayers.im閱讀,可以openlayers reproject,但它可以在osmdroid mapview的頂部使用?

任何想法?感謝您的幫助 Mike

+0

@ 2:[gdalwarp](http://www.gdal.org/gdalwarp.html)是一個非常強大的光柵圖像重投影工具。但是當你談論已經平鋪的數據時,這種方法可能需要額外的工作。 – tyr

+0

謝謝tyr,生病看看 – Raptrflite

+0

看起來像gdal是要走的路,但我似乎無法在android上找到它的良好實施。其他人使用什麼?謝謝! – Raptrflite

回答

0

GDAL是要走的路。沒有官方的Android版本,但我知道有些人已經成功地在Android上運行它。例如,Nutiteq在AdvancedMap3D示例項目的libs文件夾中有一個內置版本。把兩個armeabi文件夾的內容放到你項目的lib文件夾中,你應該可以訪問GDAL包。

然後看看GDAL in Java頁面。查看gdalinfo.java示例以瞭解如何加載和檢查GDAL數據集的各個部分。重新投影數據集,你會做線沿線的東西:

SpatialReference sr = new SpatialReference(); 
sr.ImportFromProj4("+proj=merc +datum=WGS84"); 
String result[] = new String[1]; 
sr.ExportToPrettyWkt(result, 1); 
String oldProjection = mDataset.getProjection(); 
String newProjection = result[0]; 
Dataset newDataset = gdal.AutoCreateWarpedVRT(mDataset, oldProjection, newProjection, gdalconst.GRA_NearestNeighbour, 0.0); 
Dataset savedDataset = mDriver.CreateCopy(outpath, newDataset, 0, new String[] { "COMPRESS=LZW", "PREDICTOR=2" }, null, null); 
newDataset.delete(); 
savedDataset.delete(); 

您可能需要做一些調整,但應該讓你最的方式存在。

+0

謝謝,kurtzmarc ..這讓我走上正軌。 – Raptrflite

+0

我似乎無法讓進口得到識別:「import org.gdal.gdal.Band;」例如。我花了大部分時間試圖讓libs和.jar在模塊設置(依賴/庫)中正確添加。 'GDAL in java'頁面提到了綁定API。這是我失蹤的嗎? 非常感謝您的幫助! – Raptrflite

+0

看起來您需要將[org文件夾](https://github.com/nutiteq/hellomap3d/tree/master/AdvancedMap3D/src/main/java/org)的內容添加到您的項目中。這包含所有的SWIG綁定。如果你四處挖掘,可能還有其他預構建的GDAL庫。 – kurtzmarc