Shapefile 是什么?文件组成、打开方式与常见问题解析
Shapefile 是一种用于存储矢量地理数据的开放格式,由 Esri 提出并已成为 GIS 领域的事实标准。它最容易被误解的一点是:shapefile 并不是一个文件,而是一组同名、不同扩展名的文件集合。只要缺少其中某个核心文件,数据就可能无法打开或显示异常。本文说明它的文件组成、打开步骤和常见故障排查,适合刚开始接触 GIS 数据、需要下载或使用 shapefile 的读者。
Shapefile 的文件组成
一个完整的 shapefile 至少包含三个必需文件,它们必须同名且放在同一目录下:
| 扩展名 | 是否必需 | 作用 |
|---|---|---|
.shp |
必需 | 存储几何形状(点、线、面) |
.shx |
必需 | 几何图形的索引,帮助快速定位 |
.dbf |
必需 | 存储每个要素的属性表(字段与记录) |
.prj |
可选但重要 | 定义坐标参考系与投影 |
.cpg |
可选 | 指定 .dbf 的字符编码,影响中文等非 ASCII 文本 |
.sbn / .sbx |
可选 | 空间索引文件 |
.xml |
可选 | 元数据 |
关键点:复制、压缩或传输 shapefile 时,必须把整组文件一起带走。只发一个 .shp 给别人,对方通常打不开,或者打开后没有属性、没有坐标系。
如何打开 shapefile
以常见的 QGIS 和 ArcGIS 为例,基本流程一致:把数据作为矢量图层加载。
QGIS 步骤
- 打开 QGIS,选择“图层 → 添加图层 → 添加矢量图层”。
- 数据源类型选“文件”,浏览到
.shp文件所在位置。 - 选中
.shp后点击“添加”。预期结果是图层出现在图层面板并在地图画布中显示。 - 右键图层查看属性表,确认
.dbf中的字段是否正确加载。
ArcGIS Pro / ArcMap 步骤
- 在“目录”面板中定位到 shapefile 所在文件夹。
- 将
.shp文件拖入地图,或使用“添加数据”。 - 在属性表中检查字段与记录。
验证是否加载成功:地图上能看到要素、属性表有记录、图层属性中坐标参考系不是“未知”。三项都正常,说明文件组完整。
常见问题与排查
缺少 .prj 导致坐标不明
现象:数据能显示,但位置偏移,或软件提示坐标系未知。
原因:.prj 缺失,软件无法判断数据用的是经纬度还是某种投影坐标。
处理:向数据提供方索取 .prj;若确实没有,需要根据数据来源判断坐标系后手动指定,不能随意猜测,否则叠加其他图层时会错位。
中文乱码
现象:属性表里的中文显示为乱码。
原因:.dbf 的编码未声明或声明错误,常见于 GBK 与 UTF-8 不一致。
处理:检查是否有 .cpg 文件;在 QGIS 中可通过图层属性调整编码,或先用工具转换 .dbf 编码。
文件不完整无法加载
现象:软件报错或图层为空。
原因:只复制了 .shp,缺少 .shx 或 .dbf。
处理:回到原始目录,确认同名文件齐全后再整体复制。
字段名被截断
现象:属性字段名超过 10 个字符时被截短。
原因:.dbf 格式对字段名长度有限制,这是格式本身的约束。
处理:接受截断,或在导入数据库后再重命名字段。
获取免费 shapefile 数据的途径
MapCruzin 提供了一批可下载的免费 GIS shapefile,覆盖多个主题,包括:
- 加拿大 FSA 邮政编码
- 美国水体与湿地
- 地理名称(GNIS,200 万以上点位)
- 学区边界
- 印第安与联邦土地
- 邮政编码与人口统计
- 气候变化
- 美国河流与水道
- 龙卷风
- 核设施
- 水坝与风险
- 2013 年有毒物质排放清单(TRI)
该站点自述从事科学、人口研究与 GIS 项目咨询超过 30 年,服务对象包括教育者、学生、非营利组织、企业和政府机构。下载页按主题分类,便于按需获取。
使用注意事项:
- 下载后先解压,确认
.shp、.shx、.dbf是否齐全。 - 检查是否附带
.prj,没有的话先确认坐标系再使用。 - 涉及人口、气候、灾害等主题的数据,注意其时间范围和更新日期,避免用于需要最新数据的场景。
- 站点提到可提供免费和低成本的 GIS 软件与地图资源,具体可用性以页面实际提供为准。
一句话总结
Shapefile 是一组同名文件的集合,核心是 .shp、.shx、.dbf,.prj 决定坐标是否可靠。打开时用 QGIS 或 ArcGIS 加载 .shp,遇到打不开、乱码或错位,优先检查文件是否齐全、编码和坐标系是否明确。需要现成数据时,可从 MapCruzin 等站点按主题下载,但下载后务必先验证文件完整性与坐标系。