GIS属性表怎么导出?格式转换如何操作?
很多 GIS 初学者都会遇到“GIS属性表怎么导出?格式转换如何操作?”这个问题:在 QGIS、ArcGIS Pro 或其他 GIS 软件里能看到属性表,但到了统计、汇报、建库或 WebGIS 发布时,又需要把属性表导出为 Excel、CSV、DBF、GeoJSON 或 Shapefile 等格式。本文用实操思路讲清楚 GIS属性表导出 的常见方法、格式转换步骤、注意事项和检查清单。

引言:GIS属性表导出前先明确你要导出什么
GIS 图层通常由两部分组成:空间几何和属性表。空间几何描述点、线、面的形状和位置;属性表保存名称、编号、面积、人口、类型、等级等字段信息。
因此,GIS属性表导出 并不一定等于导出整个图层。你需要先判断自己的目标:
- 只要表格数据:适合导出为 CSV、Excel、DBF。
- 既要属性又要空间位置:适合导出为 Shapefile、GeoPackage、GeoJSON。
- 要给数据库使用:适合导出为 CSV 后入库,或直接转换为 PostGIS 表。
- 要给 WebGIS 使用:常见格式是 GeoJSON、MVT、PostGIS 或服务接口。
如果只是做统计报表,导出属性表即可;如果后续还要在地图上显示,就不要只导出 Excel,否则会丢失几何信息。
背景:为什么 GIS属性表格式转换 容易出错
属性表看起来像普通表格,但 GIS 数据比 Excel 表复杂。GIS属性表格式转换 经常出问题,主要因为字段类型、编码、几何、坐标系和格式限制不同。
常见导出需求
- 把行政区划属性表导出为 Excel,方便做汇总统计。
- 把 Shapefile 转换为 GeoJSON,用于 WebGIS 前端加载。
- 把 CSV 表格转为空间点图层,用于地图可视化。
- 把 ArcGIS Pro 中的要素类导出为独立表或新图层。
- 把 QGIS 图层属性表导出为 CSV,交给非 GIS 同事使用。
常见错误现象
- 中文字段或中文内容乱码。
- 导出的 CSV 打开后数字编号变成科学计数法。
- 字段名被截断,尤其是导出 Shapefile 时。
- Excel 中看不到坐标字段。
- 导出后地图位置偏移或无法叠加。
- 只导出了选中记录,漏掉了其他要素。
这些问题不是软件“坏了”,而是 GIS 数据格式之间的规则不同。导出之前理解这些规则,可以少走很多弯路。
原理:属性表导出和格式转换的核心逻辑
GIS属性表导出 的核心,是把图层中的字段记录写入另一种数据容器。这个容器可能是纯表格,也可能是带几何信息的空间格式。
只导出属性表和导出图层的区别
| 操作类型 | 导出内容 | 常见格式 | 适用场景 |
|---|---|---|---|
| 只导出属性表 | 字段和值,不包含几何图形 | CSV、Excel、DBF | 统计、报表、数据核查 |
| 导出整个图层 | 字段、值、几何、坐标系 | Shapefile、GeoPackage、GeoJSON | 地图展示、空间分析、格式转换 |
| 导出到数据库 | 字段、值、几何,可建立空间索引 | PostGIS、File Geodatabase | 多用户管理、WebGIS 服务、空间查询 |
字段类型为什么会变化
GIS 属性字段通常有文本、整数、小数、日期、布尔值等类型。不同格式支持的字段类型不同。例如 CSV 本身不严格保存字段类型,Excel 打开时会自动猜测类型;Shapefile 的字段名长度和字段类型也有限制。
所以 GIS属性表格式转换 后,要重点检查字段类型是否仍然正确。特别是行政区划代码、地块编号、身份证号、设备编号等字段,应尽量按文本保存,避免前导零丢失。
编码为什么会乱码
中文 GIS 数据常见编码包括 UTF-8、GBK、GB18030。导出 CSV 或 Shapefile 时,如果软件写出的编码和打开软件识别的编码不一致,就会出现中文乱码。
建议新项目优先使用 UTF-8。跨软件交换 Shapefile 时,要同时保留 .shp、.shx、.dbf、.prj、.cpg 等文件,其中 .cpg 文件通常用于记录编码。
步骤:QGIS中导出GIS属性表
QGIS 是开源 GIS 软件,适合进行属性表导出、格式转换和快速数据检查。下面以 QGIS 3.x 的常见界面为例说明。
步骤一:打开图层属性表
- 在 QGIS 中加载矢量图层,例如 Shapefile、GeoPackage 或 GeoJSON。
- 在图层面板中右键点击目标图层。
- 选择“打开属性表”。
- 检查字段名、字段类型、记录数量是否符合预期。
如果只想导出部分记录,可以先使用“按表达式选择”或在地图上选择要素。但要注意,导出时需要确认是否只保存选中要素。
步骤二:导出为 CSV
- 右键点击图层,选择“导出”。
- 选择“另存要素为”。
- 格式选择“逗号分隔值 CSV”。
- 设置保存路径和文件名。
- 编码建议选择 UTF-8。
- 如果需要坐标字段,可在几何选项中选择导出 X、Y 或 WKT。
- 点击“确定”完成导出。
CSV 适合数据交换和统计分析,但它不是严格的空间数据格式。若需要保留几何,可以导出 WKT 字段,或者直接使用 GeoJSON、GeoPackage。
步骤三:导出为 Excel
QGIS 可以通过“另存要素为”导出为 XLSX,具体步骤类似 CSV:
- 右键图层,选择“导出”中的“另存要素为”。
- 格式选择“MS Office Open XML spreadsheet XLSX”。
- 设置文件路径。
- 确认是否导出选中要素。
- 点击“确定”。
Excel 适合给非 GIS 用户查看,但不建议作为长期 GIS 数据存储格式。因为 Excel 对字段类型、坐标系和几何支持有限,容易在反复编辑后产生数据质量问题。
步骤四:导出为 GeoPackage 或 GeoJSON
如果你需要同时保留空间图形和属性表,建议优先考虑 GeoPackage 或 GeoJSON。
- 右键目标图层,选择“导出”。
- 选择“另存要素为”。
- 格式选择“GeoPackage”或“GeoJSON”。
- 设置坐标参考系统。
- 确认字段是否全部保留。
- 点击“确定”。
GeoPackage 适合本地 GIS 数据管理,支持多个图层和较完整的字段类型;GeoJSON 适合 WebGIS 前端使用,但文件过大时加载可能变慢。
步骤:ArcGIS Pro中导出GIS属性表
ArcGIS Pro 中也可以完成 GIS属性表导出 和格式转换,常见方式包括“导出表”“要素类转要素类”和地理处理工具。
方法一:从属性表直接导出
- 在 ArcGIS Pro 中打开地图并加载图层。
- 右键图层,选择“属性表”。
- 在属性表菜单中找到“导出”。
- 设置输出位置,例如文件地理数据库、文件夹或企业级数据库。
- 确认是否使用选中记录。
- 运行工具并检查结果表。
这种方式适合导出独立表,例如把地块属性、调查表、设施清单导出为数据库表或 CSV。
方法二:使用转换工具导出整个图层
- 打开“地理处理”窗格。
- 搜索“要素类转要素类”或“导出要素”。
- 输入要转换的图层。
- 设置输出位置和输出名称。
- 如有需要,使用字段映射调整字段名和字段类型。
- 运行工具。
字段映射是 ArcGIS Pro 中非常重要的步骤。它可以控制字段是否保留、字段名如何变化、文本长度如何设置。对于正式数据交付,不建议直接一路默认点击,应至少检查一次字段映射。
步骤:用 Python 批量导出属性表和转换格式
如果你要处理多个图层,手动导出会很慢。可以使用 GeoPandas 批量读取 GIS 数据并导出属性表。
GeoPandas导出属性表为CSV
import geopandas as gpd
input_path = "data/parcel.gpkg"
output_csv = "output/parcel_attributes.csv"
gdf = gpd.read_file(input_path)
# 如果只需要属性表,可删除 geometry 字段
df = gdf.drop(columns="geometry")
# 使用 utf-8-sig,方便 Excel 正确识别中文
df.to_csv(output_csv, index=False, encoding="utf-8-sig")
这里使用 utf-8-sig 是因为很多 Windows 环境下的 Excel 对 UTF-8 CSV 识别不稳定,带 BOM 的 UTF-8 文件更容易正确显示中文。
GeoPandas转换为GeoJSON
import geopandas as gpd
input_path = "data/parcel.shp"
output_geojson = "output/parcel.geojson"
gdf = gpd.read_file(input_path)
# WebGIS 常用 WGS84 坐标系
gdf = gdf.to_crs("EPSG:4326")
gdf.to_file(output_geojson, driver="GeoJSON")
如果目标是 WebGIS 前端加载,通常需要把数据转换到 EPSG:4326,也就是 WGS84 经纬度坐标系。但如果你的 WebGIS 底图和服务使用 Web Mercator,也可能需要 EPSG:3857,具体要看项目规范。
ArcPy导出属性表示例
import arcpy
input_fc = r"C:gisdata.gdbparcel"
output_table = r"C:gisoutputparcel_table.csv"
arcpy.conversion.TableToTable(
in_rows=input_fc,
out_path=r"C:gisoutput",
out_name="parcel_table.csv"
)
ArcPy 适合 ArcGIS Pro 环境下的批处理,尤其适合固定生产流程、定期报表和企业内部数据转换。
常见坑:GIS属性表导出后一定要检查这些问题
坑一:只导出选中要素,导致数据缺失
很多 GIS 软件在图层存在选中要素时,会默认只处理选中记录。导出前请确认当前图层是否有选择集。如果你想导出全部记录,应先清除选择。
坑二:中文乱码
如果导出的属性表中文乱码,优先检查编码。CSV 建议使用 UTF-8 或 UTF-8 with BOM;Shapefile 应检查是否有 .cpg 文件。跨平台协作时,尽量在交付说明中写明编码。
坑三:字段名被截断
Shapefile 的 DBF 属性表对字段名长度有限制,长字段名可能被截断。比如“行政区划名称”可能变成简短字段,影响后续脚本处理。正式项目中建议使用 GeoPackage、File Geodatabase 或 PostGIS 保存复杂字段。
坑四:编号字段变成数字
行政区划代码、地块编码、设备编号等字段看起来像数字,但本质是文本。导出到 Excel 后,前导零可能丢失。建议在 GIS 中把这些字段设为文本,或在 CSV 中用文本方式导入 Excel。
坑五:导出属性表后丢失空间位置
CSV 和 Excel 默认不保存 GIS 几何。如果后续要恢复点位,需要保留经纬度字段;如果是线或面,建议导出 WKT 字段,或者直接使用 GeoJSON、GeoPackage。
坑六:坐标系不一致导致地图偏移
格式转换时如果没有正确设置坐标参考系统,导出的图层可能出现偏移。导出前确认源数据坐标系,导出后重新加载到地图中,与底图或权威数据叠加检查。
方法比较:不同GIS属性表导出格式怎么选
| 格式 | 是否保存几何 | 优点 | 限制 | 推荐场景 |
|---|---|---|---|---|
| CSV | 默认不保存,可保存坐标或 WKT | 通用、轻量、方便导入数据库 | 字段类型容易被误识别 | 统计、交换、批量处理 |
| Excel XLSX | 通常不保存 GIS 几何 | 适合人工查看和编辑 | 不适合作为空间数据源长期维护 | 报表、检查、交付给非 GIS 用户 |
| DBF | 仅属性表 | 与 Shapefile 兼容 | 字段名和字段类型限制较多 | 老旧系统兼容 |
| Shapefile | 保存几何 | 兼容性强 | 多文件组成、字段限制明显 | 传统 GIS 数据交换 |
| GeoPackage | 保存几何 | 单文件、支持多个图层、字段能力较好 | 部分旧软件支持不完整 | 本地数据管理、项目归档 |
| GeoJSON | 保存几何 | 适合 WebGIS 和前端调试 | 大文件加载慢,字段类型表达有限 | WebGIS、小规模在线展示 |
| PostGIS | 保存几何 | 支持空间索引和复杂查询 | 需要数据库环境 | 企业级空间数据管理和服务发布 |
简单来说,只做表格分析选 CSV 或 Excel;要保留空间图形选 GeoPackage 或 GeoJSON;要长期管理和查询选 PostGIS;必须兼容传统 GIS 软件时再考虑 Shapefile。
检查清单:导出前后如何确认结果正确
导出前检查
- 确认要导出的是全部记录还是选中记录。
- 确认字段名是否规范,避免空格、特殊符号和过长字段名。
- 确认编号类字段是否为文本类型。
- 确认图层坐标系是否已正确定义。
- 确认是否需要保留几何信息。
- 确认目标软件支持哪种格式和编码。
导出时检查
- CSV 优先选择 UTF-8 或 UTF-8 with BOM。
- 导出 Shapefile 时注意字段名长度限制。
- 导出 GeoJSON 给 WebGIS 时确认坐标系是否符合前端要求。
- 导出 Excel 时注意日期、编号和小数字段。
- 如果软件提示字段被重命名,应记录对应关系。
导出后检查
- 重新打开导出结果,检查记录数量是否一致。
- 检查关键字段是否缺失或被截断。
- 检查中文是否乱码。
- 检查编号字段是否丢失前导零。
- 如果是空间格式,加载到地图中检查位置是否正确。
- 抽查几条记录,与源图层属性表对比。
经验建议:正式交付前,不要只看文件是否生成成功。至少要检查记录数、字段数、关键字段值、编码和空间位置。
FAQ:GIS属性表导出与格式转换常见问题
Q1:GIS属性表怎么导出为Excel?
在 QGIS 中可以右键图层,选择“导出”中的“另存要素为”,格式选择 XLSX。在 ArcGIS Pro 中可以从属性表菜单选择导出,或使用地理处理工具导出表。导出后要检查字段类型和中文编码。
Q2:GIS属性表导出为CSV后中文乱码怎么办?
优先使用 UTF-8 with BOM,也就是常见的 utf-8-sig。如果是从 QGIS 导出,在编码选项中选择 UTF-8;如果用 Python,可在 to_csv 中设置 encoding="utf-8-sig"。
Q3:为什么导出的属性表没有坐标?
因为普通属性表不一定包含几何坐标。点图层可以导出 X、Y 字段;线和面图层如果需要保留几何,可导出 WKT 字段,或者直接导出为 GeoJSON、GeoPackage、Shapefile 等空间格式。
Q4:Shapefile属性表导出后字段名变短正常吗?
这是 Shapefile 格式限制导致的。Shapefile 的 DBF 属性表对字段名长度有限制,长字段名会被截断。若字段较多、字段名较长,建议改用 GeoPackage、File Geodatabase 或 PostGIS。
Q5:GIS属性表格式转换时应该选CSV还是GeoJSON?
如果只需要表格统计,选 CSV;如果需要在 WebGIS 地图上显示空间位置,选 GeoJSON。但 GeoJSON 文件过大时加载会慢,大规模数据更适合发布为瓦片、服务接口或存入 PostGIS。
Q6:Excel能不能作为GIS属性表的长期存储格式?
不建议。Excel 适合查看、临时编辑和报表交付,但不适合作为空间数据的长期主数据源。正式 GIS 项目应使用 GeoPackage、File Geodatabase、PostGIS 等更稳定的数据格式。
Q7:导出后的图层位置偏移怎么办?
先检查源数据坐标系是否正确定义,再检查导出时是否进行了错误投影转换。重新加载导出结果,与可靠底图或控制点叠加检查。如果只是定义错了坐标系,不要盲目重投影,应先修正坐标系定义。
结论:先判断用途,再选择GIS属性表导出格式
GIS属性表怎么导出?格式转换如何操作? 关键不在于找到某一个按钮,而是先判断数据后续要做什么。只做统计,导出 CSV 或 Excel;要保留空间图形,导出 GeoPackage、GeoJSON 或 Shapefile;要用于系统和服务,优先考虑 PostGIS 或标准空间服务。
实际工作中,GIS属性表导出 后最容易出问题的是编码、字段类型、字段名截断、选中记录和坐标系。只要按照“导出前确认用途、导出时选择合适格式、导出后检查结果”的流程操作,大多数 GIS属性表格式转换 问题都可以提前避免。