将未投影的雷达图像投射到osmdroid中

时间:2013-08-03 00:39:02

标签: android openstreetmap osmdroid

我已经使用osmdroid为地图图块编写了雷达天气应用程序,并手动覆盖了NOAA脊雷达数据。一切都很好,除了雷达图像是未投影的,而openstreetmap瓷砖是横向墨卡托投影。天气在它应该的范围内,但数据是扭曲的。

我看到有三种方法可以解决这个问题(按照优先顺序排列),但是这三种方法都有问题:

1)找到已经在mercator中投射的雷达数据来源 - 谷歌搜索的时间稍后,我什么也没发现 2)在下载后立即以编程方式重新投影图像。有谁知道一个很好的API吗? 3)动态投影,也许使用openlayers.im读取可以打开层重新投影,但是它可以在osmdroid mapview的顶部使用吗?

有什么想法吗?谢谢你的帮助 麦克

1 个答案:

答案 0 :(得分: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();

您可能需要进行一些调整,但这应该可以帮助您完成任务。

相关问题