我已经编写了一个雷达天气应用程序,使用osmdroid绘制地图,并手动覆盖noaa海脊雷达数据。一切都很好,除了雷达图像是未投影的,而openstreetmap瓷砖是横向墨卡托投影。天气在应有的范围内,但数据失真了。
我看到了三种解决方法(按优先顺序),但这三种方法都有问题:
1)找到一个已经在墨卡托投影的雷达数据来源——数小时后的谷歌搜索,我什么也没找到
2)在我下载图像后立即以编程方式重新投影它们。有人知道这个的好api吗?
3)可以动态地投影它们,也许可以使用openlayers.im读取,openlayers可以重新投影,但是它可以在osmdroid映射视图的顶部使用吗?
有什么想法吗?谢谢你的帮助
迈克
最佳答案
格达尔是一条路。我不知道官方的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();
你可能需要做一些调整,但这会让你大部分的方式。