我已经使用osmdroid编写了一个雷达天气应用程序,用于地图瓦片,并手动覆盖NOAA山脊雷达数据。一切都运行得很好,除了雷达图像是未投影的,而openstreetmap瓦片是横向墨卡托投影。天气在它应该的范围内,但数据被扭曲了。
我认为有三种方法可以解决这个问题(按偏好排序),但这三种方法都有问题:
1)找到已在墨卡托投影的雷达数据来源-- Googling的小时数后,我什么也没找到。2)在我下载图像后,立即以编程方式重新投影它们。有没有人知道一个好的应用程序接口? 3)即时投影它们,也许可以用openlayers.im读取来重新投影,但是它能在osmdroid mapview之上使用吗?
有什么想法吗?谢谢你的帮助,迈克
发布于 2013-08-06 10:20:35
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();您可能需要做一些调整,但这应该会让您完成大部分工作。
https://stackoverflow.com/questions/18028095
复制相似问题