4

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

我看到了三种方法来解决这个问题(按优先顺序),但是这三种方法都有问题:

1)找到已经在墨卡托投影的雷达数据源 - 谷歌搜索数小时后,我什么也没找到 2)在我下载图像后立即以编程方式重新投影图像。有谁知道一个好的API?3) 即时投影它们,也许通过 openlayers.im 读取可以重新投影 openlayers,但它可以在 osmdroid mapview 之上使用吗?

有任何想法吗?感谢您的帮助迈克

4

1 回答 1

0

GDAL是要走的路。据我所知,没有官方的 Android 版本,但是有些人已经成功地让它在 Android 上运行。例如,Nutiteq 在其AdvancedMap3D示例项目的 libs 文件夹中有一个构建。将两个 armeabi 文件夹的内容放在项目的 lib 文件夹中,您应该能够访问 GDAL 包。

然后看看Java页面中的GDAL。查看 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();

您可能需要进行一些调整,但这应该可以帮助您完成大部分工作。

于 2013-08-06T02:20:35.350 回答