仅包含带名称道路的离线地图有哪些?如何用Python进行管理?
适配需求的地图类型及处理方案
你当前使用的OSM/OSM PBF格式本身就完全满足需求,不需要更换其他地图类型,你遇到的无道路名称、输出静态的问题是处理逻辑配置不当导致的,调整后即可拿到符合要求的离线数据:
- 首先调整pyrosm提取逻辑:pyrosm默认提取路网时不会保留
name字段,你可以在调用方法时显式指定字段并直接过滤无名称道路,示例代码如下:
from pyrosm import OSM # 初始化OSM对象 osm = OSM("本地存储的osm.pbf文件路径") # 提取仅包含名称的驾驶路网,保留道路名称、道路等级字段 driving_network_with_name = osm.get_network( network_type="driving", extra_attributes=["name", "highway"], filter_by=lambda x: x.get("name") not in (None, "") )
上述代码输出的结果就是仅包含带名称驾驶道路的数据集,完全离线可用,你可以根据需求自定义渲染样式,解决输出静态的问题。
如果需要适配不同使用场景的离线地图格式,以下几种都支持仅保留带名称道路、全离线使用:
- GPKG格式:将过滤后的道路数据导出为GPKG格式,支持空间索引,加载速度快,可兼容桌面端GIS工具、移动端地图SDK直接读取,支持动态调整样式和属性查询。
- MBTiles格式:将过滤后的道路数据渲染为矢量切片打包为MBTiles文件,支持前端、移动端离线加载,可灵活自定义样式,不会出现静态输出的问题。
- 精简OSM PBF格式:使用osmosis等工具对原始OSM PBF文件进行预处理,直接过滤掉所有无名称的非道路要素,输出仅包含带名驾驶路网的精简PBF文件,后续可使用任意OSM处理工具读取使用。
内容的提问来源于stack exchange,提问作者Mamad 989331727735
相关产品推荐
相关产品推荐

