OpenStreetMap 数据的三大件——osm2pgsqlosmosisdefault.style,你只要玩过 GIS 或者折腾过 PostGIS 地图服务,率都绕不开它们。这个组合挺硬核的,功能也蛮灵活,适合需要定制数据导入流程的你。

osm2pgsql的活儿比较“重”,负责把 OSM 的 XML 数据扔进 PostgreSQL 数据库里。你可以配合HStore扩展存非结构化数据,速度还不错,适合本地建图、做空间啥的。嗯,简单来说,就是把杂乱无章的地图数据整整齐齐地放进数据库,后续查起来爽。

osmosis就比较像个数据打杂的,它能拆包、拼包、筛选、比对,干活儿细致。比如你只想导入某城市的数据?交给osmosis就对了,还能按照时间戳筛,灵活性相当高。就是命令行多点、配置多点,第一次上手要多折腾下。

default.style是个不起眼但挺重要的小东西。它告诉osm2pgsql:嘿,哪些元素该导,哪些字段要映射到表里。你可以改这个文件来精简数据库,比如只关注道路和建筑?就别让水体进来了,轻量不少。

通常流程是这样的:先用osmosis预下数据,比如裁个城市边界;拿osm2pgsql,配合你的default.style导入到 PostgreSQL 里;在PostGIS里随便玩,查询、可视化、建图服务都行。这套下来,地理数据的掌控感简直拉满。

如果你想搭个自己的地图服务,或者搞点有空间需求的项目,强烈建议你把这三件工具整明白。熟了之后,OSM 数据效率会高出不少,数据干净、可控、查询快。