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

Android 将未投影的雷达图像投影到osmdroid中,android,openstreetmap,osmdroid,Android,Openstreetmap,Osmdroid,我已经编写了一个雷达天气应用程序,使用osmdroid绘制地图,并手动叠加NOAA山脊雷达数据。除了雷达图像是未投影的,而openstreetmap图块是横向墨卡托投影的之外,一切都很好。天气在应有的范围内,但数据失真 我认为有三种方法可以解决这个问题(按优先顺序),但我在这三种方法上都遇到了问题: 1) 找到一个已经在墨卡托投影的雷达数据源——几个小时的谷歌搜索之后,我什么也没发现 2) 在我下载图像后立即以编程方式重新投影图像。有人知道这方面的好API吗? 3) 动态地投影它们,可能是使用o

我已经编写了一个雷达天气应用程序,使用osmdroid绘制地图,并手动叠加NOAA山脊雷达数据。除了雷达图像是未投影的,而openstreetmap图块是横向墨卡托投影的之外,一切都很好。天气在应有的范围内,但数据失真

我认为有三种方法可以解决这个问题(按优先顺序),但我在这三种方法上都遇到了问题:

1) 找到一个已经在墨卡托投影的雷达数据源——几个小时的谷歌搜索之后,我什么也没发现 2) 在我下载图像后立即以编程方式重新投影图像。有人知道这方面的好API吗? 3) 动态地投影它们,可能是使用openlayers.im阅读,openlayers可以重新投影,但是它可以在osmdroid mapview上使用吗

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

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

然后看看这一页。查看gdalinfo.java示例,了解如何加载和检查GDAL数据集的各个部分。要重新投影数据集,您需要执行以下操作:

SpatialReference sr=新的SpatialReference();
sr.ImportFromProj4(“+proj=merc+datum=WGS84”);
字符串结果[]=新字符串[1];
高级ExportToPrettyWkt(结果1);
字符串oldProjection=mDataset.getProjection();
字符串newProjection=结果[0];
Dataset newDataset=gdal.autocreatedWarpedVRT(mDataset,oldProjection,newProjection,gdalconst.GRA_nearestnexture,0.0);
数据集savedDataset=mDriver.CreateCopy(输出路径,新数据集,0,新字符串[]{“COMPRESS=LZW”,“PREDICTOR=2”},null,null);
newDataset.delete();
savedDataset.delete();

您可能需要进行一些调整,但这应该可以让您实现大部分目标。

@2:是一个非常强大的光栅图像重投影工具。但正如你所说的已经平铺好的数据,这种方法可能需要额外的工作。谢谢tyr,我来看看gdal似乎是一种可行的方法,但我似乎无法在android上找到一个很好的实现。其他人用什么?谢谢我似乎无法识别导入:“import org.gdal.gdal.Band;”。我花了大部分时间试图在模块设置(依赖项/库)中正确添加libs和.jar。“java中的GDAL”页面提到了绑定API。这就是我错过的吗?非常感谢你的帮助!看起来您也需要将的内容添加到项目中。这包含所有SWIG绑定。如果你四处挖掘,可能还会有其他预构建的GDAL库。