格式与坐标系转换
在 Shapefile、GeoPackage、GeoJSON、KML、DXF、CSV、MapGIS 等格式之间转换,按 EPSG 代码换坐标系,处理中文字段乱码。这是 GIS 日常里最频繁、最琐碎的工作,交给智能体可以整批完成。
你会得到什么
- 转换后的文件,默认写在本会话的产物目录;
- 一份说明:每个文件转换前后的坐标系、要素数、字段,方便核对。
准备
| 需要 | 说明 |
|---|---|
| GDAL 插件 | 内置,GDAL 3.12,支持 GeoTIFF / COG、GeoPackage、Shapefile、GeoJSON、FlatGeobuf、KML / KMZ、CSV、XLSX、DXF、FileGDB 等格式,见数据处理与空间分析:GDAL |
| MapGIS6x 插件 | 内置,处理 MapGIS 6.x 的 WT / WL / WP / MPJ 文件,不需要安装 MapGIS |
| 数据位置 | 把文件拖进输入框、粘贴路径或说出文件夹,见把数据交给智能体 |
第一次读取某个文件夹时,会弹出文件访问范围确认,确认后智能体才能读取。
这样说
单个文件:
看一下
D:\data\parcels.shp的坐标系、字段和要素数,然后转成 GeoPackage,坐标系转成 CGCS2000 经纬度(EPSG:4490)。
整个文件夹:
把
D:\project\shp文件夹里所有 Shapefile 转成一个 GeoPackage,每个 Shapefile 一个图层,图层名用原文件名,坐标系统一成 EPSG:4490,中文字段不能乱码。转完列一张表:每个图层原来的坐标系、转换后的要素数。
智能体会怎么做
- 先检查再转换:用 GDAL 查看每个文件的坐标系、范围、字段和要素数。查看属于只读操作,不需要审批;
- 发现问题先问你:缺少
.prj(坐标系未知)、编码无法判断、同一批数据坐标系不一致时,会先告诉你,请你确认后再转换; - 执行转换:用 GDAL 转换格式、重投影,写文件需要审批。批量文件可以在第一次审批时点「本会话批准」;
- 核对结果:比对转换前后的要素数、范围,列出结果表。
常见转换示例
| 你说 | 说明 |
|---|---|
| “把这个 Shapefile 转成 GeoJSON” | 矢量格式互转 |
“把 dem.tif 转成 COG,加金字塔” | 栅格转云优化 GeoTIFF |
| “把 KMZ 里的图层导出成 Shapefile” | 奥维、Google Earth 导出的 KML / KMZ |
“把 points.xlsx 按 x、y 两列生成点图层,坐标系是 CGCS2000 3 度带第 38 带” | 表格转点 |
| “把这份 DXF 图纸转成 GeoPackage,按图层拆开” | CAD 转 GIS |
| “读一下这个 FileGDB 里有哪些要素类,全部导出成 Shapefile” | 读取 ESRI 文件地理数据库 |
“把这几景影像按 boundary.geojson 裁剪并镶嵌成一张” | 裁剪、镶嵌 |
| “看一下这个 MPJ 工程里有哪些图层,全部转成 Shapefile” | MapGIS 转 Shapefile,见地质资料处理 |
“把 boundary.shp 转回 MapGIS 区文件 WP,投影参数照 old.wp” | Shapefile 写回 MapGIS |
检查成果
- 在看图窗口里同时加载转换前后的数据,看是否重合;
- 让它报告每个文件的要素数、范围变化;
- 在 QGIS 或 ArcGIS 里打开 Shapefile,检查中文字段是否正常。智能体写出 Shapefile 时按 UTF-8 编码并生成
.cpg。
接着可以说
- “把转换好的数据导入 PostGIS”(见入库并发布地图服务)
- “字段名太长了,Shapefile 截断成了乱码,改成 GeoPackage 输出”
- “把这批数据合并成一个图层,加一个字段记录来源文件名”
注意
- 坐标系要明确:没有
.prj或坐标系信息不可信时,转换结果的位置无法保证。你知道原始坐标系时直接告诉它,例如“这批数据是西安 80 坐标系 3 度带 38 带”; - Shapefile 限制:字段名最长 10 字节(中文约 3–5 个字),单文件不超过 2 GB,不支持混合几何类型,正式成果建议用 GeoPackage;
- 国内互联网坐标:GCJ02(高德、腾讯)、BD09(百度)不是 EPSG 坐标系,GDAL 无法直接转换。单点转换见地址落图与坐标纠偏;
- CAD:DWG 文件只有 R2000 版本能直接在看图窗口打开,其他版本先另存为 DXF;
- 数据库:GDAL 插件不含 PostgreSQL、MySQL 驱动,入库请使用 PostGIS 或 MySQL 插件。