GIS属性表怎么导出?格式转换如何操作?

GIS基础理论
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

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

GIS属性表导出与GIS属性表格式转换操作流程
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 的常见界面为例说明。

步骤一:打开图层属性表

  1. 在 QGIS 中加载矢量图层,例如 Shapefile、GeoPackage 或 GeoJSON。
  2. 在图层面板中右键点击目标图层。
  3. 选择“打开属性表”。
  4. 检查字段名、字段类型、记录数量是否符合预期。

如果只想导出部分记录,可以先使用“按表达式选择”或在地图上选择要素。但要注意,导出时需要确认是否只保存选中要素。

步骤二:导出为 CSV

  1. 右键点击图层,选择“导出”。
  2. 选择“另存要素为”。
  3. 格式选择“逗号分隔值 CSV”。
  4. 设置保存路径和文件名。
  5. 编码建议选择 UTF-8。
  6. 如果需要坐标字段,可在几何选项中选择导出 X、Y 或 WKT。
  7. 点击“确定”完成导出。

CSV 适合数据交换和统计分析,但它不是严格的空间数据格式。若需要保留几何,可以导出 WKT 字段,或者直接使用 GeoJSON、GeoPackage。

步骤三:导出为 Excel

QGIS 可以通过“另存要素为”导出为 XLSX,具体步骤类似 CSV:

  1. 右键图层,选择“导出”中的“另存要素为”。
  2. 格式选择“MS Office Open XML spreadsheet XLSX”。
  3. 设置文件路径。
  4. 确认是否导出选中要素。
  5. 点击“确定”。

Excel 适合给非 GIS 用户查看,但不建议作为长期 GIS 数据存储格式。因为 Excel 对字段类型、坐标系和几何支持有限,容易在反复编辑后产生数据质量问题。

步骤四:导出为 GeoPackage 或 GeoJSON

如果你需要同时保留空间图形和属性表,建议优先考虑 GeoPackage 或 GeoJSON。

  1. 右键目标图层,选择“导出”。
  2. 选择“另存要素为”。
  3. 格式选择“GeoPackage”或“GeoJSON”。
  4. 设置坐标参考系统。
  5. 确认字段是否全部保留。
  6. 点击“确定”。

GeoPackage 适合本地 GIS 数据管理,支持多个图层和较完整的字段类型;GeoJSON 适合 WebGIS 前端使用,但文件过大时加载可能变慢。

步骤:ArcGIS Pro中导出GIS属性表

ArcGIS Pro 中也可以完成 GIS属性表导出 和格式转换,常见方式包括“导出表”“要素类转要素类”和地理处理工具。

方法一:从属性表直接导出

  1. 在 ArcGIS Pro 中打开地图并加载图层。
  2. 右键图层,选择“属性表”。
  3. 在属性表菜单中找到“导出”。
  4. 设置输出位置,例如文件地理数据库、文件夹或企业级数据库。
  5. 确认是否使用选中记录。
  6. 运行工具并检查结果表。

这种方式适合导出独立表,例如把地块属性、调查表、设施清单导出为数据库表或 CSV。

方法二:使用转换工具导出整个图层

  1. 打开“地理处理”窗格。
  2. 搜索“要素类转要素类”或“导出要素”。
  3. 输入要转换的图层。
  4. 设置输出位置和输出名称。
  5. 如有需要,使用字段映射调整字段名和字段类型。
  6. 运行工具。

字段映射是 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属性表格式转换 问题都可以提前避免。