格式转换不是另存为,转换器只搬它能理解的那部分。

同一份数据换个格式,打开看着还在,用起来却对不上:位置偏了、编号变了、中文成了问号、相邻的面之间裂开一道缝。转换器只搬它能理解的部分,理解不了的结构就地丢弃,多数还不报错。

一、四类常见转换,各自发生了什么

转换 转换时实际发生的事
矢量 SHP 与 GeoJSON、GPKG 互转 几何与属性逐条读出再写入,字段宽度、字符集声明、投影定义未必有对等位置
CAD 转 GIS 图元按图层、颜色、线型组织,转成要素类后图层名降为字段值,块参照被炸开或丢弃
倾斜模型转通用浏览格式 连续网格被重新切块、简化,纹理重新压缩,坐标改为局部原点加偏移
表格转矢量 表里只有坐标列、没有几何,按行生成点,字段类型靠抽样推断

四类转换都在做结构映射,而非内容复制:目标格式没有对应位置的,出口只有一个。

二、丢失一:坐标系与精度声明

坐标是一串数字,坐标系是解释这串数字的规则。规则在源数据里有三种放法:独立的投影定义文件、文件头里的定义字段、服务地址上的一个参数。转成纯文本或 JSON 后,数字跟着记录走了,规则往往留在原处。

含 GPS 坐标信息的图片属性面板,经度纬度以纯数字形式列出

容易混的一处是带号与不带号。国内常用的高斯—克吕格投影,横坐标带号写作 38500000 这类八位数,不带号是 500000 这类六位数。数字被截短后,接收方只能按缺省带号去猜;猜错一个带,同一个点在图上就位移几百公里。核对只看一处:横坐标是六位还是八位。

单位也会被改写。以度为单位的经纬度被当成米处理,整幅图会缩到原点附近;反过来,以米为单位的平面坐标被当成度,数据会飞出有效范围。

精度声明同样会消失。小数位从六位减到三位,单看一条记录没问题,放大到构件尺度就能看出折线变钝,面积、长度这类派生值也跟着变。

高程另有独立的基准名,与平面坐标分开声明。这部分丢失后,平面位置看着对,竖向却整体错开一个固定值。

三、丢失二:字段类型与长度

属性表被重建时,依据是目标格式的类型系统,不是源数据的含义。

一是文本转数字。编号列里的 0012 是字符型,转成数值型后前导零消失,变成 12;12 位以上的长编号进入浮点表示,末位开始变,最终显示成 1.2E+11。管线编码、桩号、行政区代码都属于这一类。

二是日期被改写。同一列日期可能存成 2026-10-20、2026/10/20、整数序列号或带时区的时间戳;转成序列号后,人眼读不出,程序按字符串解析也会失败。

三是长度被截断。SHP 的属性表沿用 DBF 结构,字段名上限 10 个字符,字符型字段带固定宽度。管线材质与埋深描述这类字段,名字先被截,内容超出宽度的部分直接丢弃,不产生提示。中文名按字节占位,五个汉字就到顶。

四是数值精度被压低。面积字段原本两位小数,转入只支持整数的字段后只剩整数部分;小数位设置不同,同一批数据的两份成果就对不上账。

四、丢失三:编码

字符集是另一处静默失效点。DBF 没有强制统一的代码页声明,同一批数据里一部分按 GBK 写、一部分按 UTF-8 写,读的时候用错一套,中文字段名与属性值就变成问号或方块。

GeoJSON 要求文本用 UTF-8,从别的编码转过去时不显式转码,同样出问题;反过来把 UTF-8 当 GBK 读,出现的是一串乱码而不是问号,更难判断。

这类丢失能打开、不能读:字段数与记录数都对得上,坏掉的只有中文。核对办法是前后各看一遍字段名和一条含中文的记录,别只数要素个数。

OGC 标准服务示意图,不同来源的空间数据通过统一服务接口对外提供

五、丢失四:拓扑与样式

拓扑不在文件里。SHP 与 GeoJSON 都是简单要素模型,一条记录就是一个独立几何,相邻两个面各存各的顶点,谁和谁共边只体现在坐标是否相同上。转换时坐标被重新舍入,原本重合的顶点变成两个略有差别的点,共边处裂开一道细缝。

H01_同一份数据换个格式会丢什么_CSDN架构图2

缝往往很窄,出图看不出,做叠加、面积汇总、连通性判断时才显形:两块本该相接的用地之间多出一条空隙,面积合计略大于实际。

邻接、连通、包含这类关系型信息,简单要素模型本来就不存储,转换只是让它更难恢复。需要这些关系时,只能在转换后重新构建一遍;重建要先设容差,容差大了会把本该分开的地物并成一块,小了缝隙照旧存在。

样式同理。线型、符号、填充、注记、图层顺序大多存在样式文件或工程配置里,不在数据文件里。数据换格式,样式不跟着走,打开是一堆默认灰面。

注记可能是文本要素,也可能只是一条标注规则;转换后要么变成普通点要素混进图层,要么不再显示。图层顺序在扁平化写入后按读写顺序重排,压盖关系跟着变,出图的先后遮挡就和原来不一样了。样式文件本身也有版本差异,两头对不上时先比对图层数,再逐个核符号。

六、转换前先记下三件事

一是坐标系与高程基准。写下 EPSG 代码或中央经线、是否带号、平面单位,以及高程基准名。

二是字段清单与类型。把字段名、类型、长度、小数位导出成文本,与转换后的表逐条比对。

三是留一份原始数据不覆写。源文件设为只读,输出写到新目录;有损转换不可逆,回退只能靠原件。

七、五个常见问题

一、编号成科学计数法:该列按字符串读取,写入选字符型。

二、字段名被截断:先建一份 10 字符以内的短名对照表。

三、面积重算差一点:确认是否在地理坐标系下计算,再查共边缝隙。

四、样式全丢:样式不随数据走,需在目标端重建符号库。

五、转回来对不上:比对要素数、坐标范围、字段清单、面积合计四项。

八、可以带走的几条

一是转换是有损操作,丢是常态。

二是损失大的往往不在几何本身,而在解释几何的那层信息:坐标系、字段类型、字符集。

三是原始数据只读、输出另存,转换后先做四项核对再谈加工。

中科图新 | 让每一寸空间都有数字灵魂