我使用 google API 和 osmdroid API 为安卓设备设计和开发了几个导航应用程序。现在我正在寻找使用 osmdroid API 创建一个室内导航系统。但是,为了做到这一点,我需要从一个简单的 PNG 文件创建类似于常规地图图块的图块,其命名约定类似于 OpenStreetMap。
请建议我如何做到这一点?
干杯, Susheel
我使用 google API 和 osmdroid API 为安卓设备设计和开发了几个导航应用程序。现在我正在寻找使用 osmdroid API 创建一个室内导航系统。但是,为了做到这一点,我需要从一个简单的 PNG 文件创建类似于常规地图图块的图块,其命名约定类似于 OpenStreetMap。
请建议我如何做到这一点?
干杯, Susheel
您可以使用JOSM设计您的室内地图。将其保存为 .osm 文件。除非合适,否则不要将数据上传到 OpenStreetMap(OpenStreetMap 有一些基本的室内特征,例如高速公路=穿过购物中心的人行道,但通常很多非常详细的室内资料不适合 OSM ) 但...
使用 .osm 文件,您可以使用其中一种 OpenStreetMap渲染工具来创建栅格地图,并将其切割成图块。为了快速满意,我推荐 Maperative,尽管我不确定最后一个瓷砖切割步骤有多容易。我从来没有用 Maperative 做过这个。Mapnik 有一个不错的 generate_tiles.py 输出,它将为您提供所需的图块集,但首先设置起来有点棘手。
实际上,最后一步是您要问的主要问题。您可以将任何图像分割成图块。以某种有意义的方式对图块进行地理定位可能对您很重要,也可能不重要。对于一个旧项目,我使用谷歌瓷砖切割器脚本做了一个快速的软糖解决方案,它实际上是一个围绕 GDAL 工具的包装器。
看看gdal库,尤其是 gdal2tiles。这是一个旨在从光栅图像创建地图的库,并且完全符合您的目的。
您可以决定投影以及源图像的边界是什么。该库允许您将图像重新投影到正确的坐标空间。
它还可以使用 gdal2tiles 生成各种缩放级别的图块,无论是否有重投影。
现在您可以通过将 OSM geojson 数据拖放到https://app.openindoor.io网页来检查室内渲染。