做项目要一份全国分省的矢量底图,找数据的时间往往比用数据的时间还长:论坛资源要积分,网盘链接十个里八个失效;好不容易凑齐一版,这省有道路没水域,那省的数据还停在 2019 年,坐标系和字段结构各玩各的,光"对齐数据"就先烧掉两天。
这篇直接分享一包现成的:OSM 社区最常用的数据导出渠道 Geofabrik 的 2026 年 9 月全国分省快照,33 个省级行政区、单文件 GPKG、共 3.53GB,QGIS 拖进去就能用。除了给包,重点讲清楚三件事:这数据里面有什么、属性精简到什么程度、拿它当生产数据前必须知道的几件事(精度、时效、ODbL 协议),最后附 QGIS 筛选和 PostGIS 入库的常用命令。
这包数据是什么
数据出自 Geofabrik——OSM 社区最常用的官方数据导出渠道,每天从 OSM 主库切一份日更快照,按行政区打包免费提供。这份打包取的是 2026-09-08 的快照(内蒙古晚一天,是 09-09 的),全国 33 个省级行政区一人一个 zip:内地 31 个省市自治区加港澳,台湾 Geofabrik 单列在亚洲区,不在这包里。
命名规则一眼看懂:anhui-260908-free.gpkg.zip = 安徽 + 2026年09月08日快照 + free 版。单个包广东最大 338MB,澳门最小不到 4MB;每个 zip 里就两样东西:一个同名单文件 .gpkg 加一份 README(授权说明),解压即用,安徽包解出来约 177MB。

GPKG 是个啥,为什么不用 shapefile
gpkg(GeoPackage)是 OGC 标准的"单文件空间数据库",本质是一个 SQLite 库,一个省的所有图层装在一个文件里。对比 shapefile,优势实打实:
-
单文件:没有 shp/shx/dbf 三件套,也就没有拷文件漏拷 prj、投影当场丢失的经典事故;
-
字段名不截断:shapefile 字段名限 10 字符,landuse_type 得缩成 landuse_1,gpkg 想多长写多长;
-
没有 2GB 上限:shapefile 单文件 2GB 封顶,省级建筑物图层很容易撞线,gpkg 上限是 SQLite 的天花板;
-
中文不乱码:gpkg 全程 UTF-8,shapefile 的 GBK 与 UTF-8 之争可以直接翻篇。
QGIS 3.x 原生支持,把 gpkg 拖进图层窗口就完事;ArcGIS Pro 也直接认,老版本 ArcMap(10.2.1 以上)可以走数据库连接只读打开。
图层构成:一个省 20 个图层
每个 gpkg 里固定 20 个图层,按几何类型分三拨:6 个点层、3 个线层、11 个面层(面层名带 _a 后缀)。以安徽为样本数一遍(其他省同构):
| 道路 | gis_osm_roads_free | 线 | 216,185 |
| 铁路 | gis_osm_railways_free | 线 | 12,677 |
| 水系 | gis_osm_waterways_free / gis_osm_water_a_free | 线 / 面 | 10,938 / 18,537 |
| 建筑物 | gis_osm_buildings_a_free | 面 | 75,871 |
| 土地利用 | gis_osm_landuse_a_free | 面 | 45,781 |
| POI | gis_osm_pois_free / gis_osm_pois_a_free | 点 / 面 | 6,175 / 14,154 |
| 地名 | gis_osm_places_free / gis_osm_places_a_free | 点 / 面 | 16,899 / 116 |
| 交通设施 | gis_osm_transport_free / _a、gis_osm_traffic_free / _a | 点 / 面 | 4,488+296 / 7,706+3,361 |
| 自然要素 | gis_osm_natural_free / gis_osm_natural_a_free | 点 / 面 | 4,976 / 21 |
| 行政区 / 保护区 | gis_osm_adminareas_a_free / gis_osm_protected_areas_a_free | 面 | 2,229 / 132 |
| 宗教场所 | gis_osm_pofw_free / gis_osm_pofw_a_free | 点 / 面 | 62 / 174 |
道路 21.6 万条、建筑物 7.6 万个、土地利用 4.5 万个斑块——做省级底图的料是够的。拿到手想自己核对图层清单,两条路:装了 GDAL 用 ogrinfo;没装也没关系,gpkg 本质是 SQLite,Python 标准库就能读:
# ogrinfo 是 GDAL 自带工具,QGIS 安装目录的 bin 里就有
ogrinfo D:\\osm\\anhui.gpkg # 列出全部 20 个图层
ogrinfo -so D:\\osm\\anhui.gpkg gis_osm_roads_free # 只看道路图层的字段和要素数
# 没装 GDAL 也能看:gpkg 本质是 SQLite 库,标准库直接读
import sqlite3
con = sqlite3.connect(r"D:\\osm\\anhui.gpkg")
for (t,) in con.execute("select table_name from gpkg_contents"):
cnt = con.execute(f'select count(*) from "{t}"').fetchone()[0]
print(f"{t:<38}{cnt:>10,}") # 图层名左对齐、要素数右对齐,一目了然
属性精简到什么程度
free 版的定位是"几何全量、属性精简"。以道路层为例,一共 12 个字段:osm_id(OSM 要素号)、code 与 fclass(要素编码和分类)、name(名称)、ref(道路编号,G3、S102 这类)、oneway / maxspeed / layer / bridge / tunnel(单双行、限速、跨越层次、桥隧标记)。分类体系全挂在 fclass 上,道路一共 28 类:motorway / trunk / primary / secondary / tertiary 这套主干道体系之外,service、track(机耕道,还细分 grade1~5)、footway、path、cycleway、steps 这些细粒度也都在。
想要完整属性(所有 OSM tag,比如车道数、路面材质、宽度)的话,free 版满足不了,两个路子:去 Geofabrik 同名页面下 internal 版(字段更全),或者直接下 pbf 用 osmium 按需抽取。日常做底图、专题图、原型验证,free 版字段够用。
QGIS 里最高频的动作就是按 fclass 过滤:图层右键 → 过滤:
— QGIS 图层右键 → 过滤,粘进 SQL 框即可
— 只留主干路网,画交通类专题图第一步
fclass IN ('motorway','trunk','primary','secondary')
— 反向排除更省事,人行类和机耕道一次剔掉
— 注意 track 细分了 grade1~5,别只排除 track
fclass NOT IN ('footway','path','steps','pedestrian','cycleway','bridleway',
'track','track_grade1','track_grade2','track_grade3','track_grade4','track_grade5')
数据科普:当生产数据用之前,先知道这几件事
精度:没有承诺,但分层看。 OSM 是志愿者协作测绘,官方不承诺几何精度,这一点和基础测绘成果有本质区别。实际规律是:motorway / trunk / primary 这些高等级道路多沿官方底图或影像描绘,几何质量普遍不错;residential 以下的城市支路居中;要小心的是 track、footway、path 这类——很多来自 GPS 轨迹或手描,噪点毛刺多。要较真就得做精度验证:抽几个样本区,拿高精度参考数据(官方路网、高分影像矢量化结果)按 fclass 分级对比,算缓冲区重叠率或 Hausdorff 距离,别拿全省一个指标糊过去。
时效:日更快照,不等于处处最新。 包是 2026-09-08 的快照,OSM 在国内发达区域更新很勤,但编辑活跃度地域差异大,偏远地区要素可能多年没人动过。用之前看一眼数据日期,关键区域做抽查。
定位:参考底图,不是法定成果。 OSM 数据不能当权属依据、进不了规划审批、替代不了法定测绘成果;权属清楚、精度可证的活儿必须用官方数据。反过来,做产品原型、专题图、教学科研、互联网应用的底图参考,OSM 是成本最低的那一档。
协议:ODbL,署名是硬要求。 包里 README 写得很明白:数据基于 OpenStreetMap,遵循 ODbL 1.0 协议。笼统说三条:对外分发要署名 "© OpenStreetMap contributors";基于它做出来的衍生数据库要发布,同样按 ODbL 开放;图件和报告记得标注来源。商用没问题,署名和 share-alike 这两条别省。
拿到手怎么用
QGIS:gpkg 拖进图层窗口,一个文件展开 20 个图层,勾选即加;配合上面的 fclass 过滤,几分钟出一张干净的路网专题图。

要交付 shapefile 或者入库,ogr2ogr 一条命令的事:
# 只抽高等级道路导出 shp,交接给不用 QGIS 的同事也方便
ogr2ogr -f "ESRI Shapefile" anhui_main_roads.shp anhui.gpkg gis_osm_roads_free \\
-where "fclass IN ('motorway','trunk','primary','secondary')"
# 或者整层进 PostGIS:转 Web 墨卡托、指定表名和几何列名
# 转完直接对接之前那套 GeoTools 矢量瓦片实时出图接口
ogr2ogr -f PostgreSQL PG:"host=localhost user=postgres password=你的密码 dbname=gis" \\
anhui.gpkg gis_osm_roads_free -nln t_road -t_srs EPSG:3857 -lco GEOMETRY_NAME=geom
获取方式
-
已存放至网盘(33 个省共 3.53GB):夸克网盘分享 提取码:S49i




