GDAL 3.0.4及更高版本转换MapInfo MID/MIF到TAB格式报错求助
GDAL 3.x版本转换MID/MIF到TAB格式报错原因解析
错误核心原因
报错ERROR 1: Cannot format 1234.1 as a 20.16 field的本质是GDAL 3.x版本对MapInfo字段精度的校验逻辑大幅收紧,具体细节:
- MapInfo的
20.16数值字段定义规则为:总长度20位(包含小数点和小数部分),其中小数位占16位。按此规则,整数部分最多只能容纳3位(20-16-1=3,减去的1是小数点占位)。 - 你的数据中存在
1234.1这类整数部分为4位的数值,超出了20.16字段的合法长度限制。 - GDAL 2.1.2版本的校验逻辑较为宽松,允许超出长度的数值强行写入;但GDAL 3.0.4及更高版本(包括3.5)修复了这个“兼容漏洞”,严格执行MapInfo的字段长度规范,因此触发报错。
为什么改Float类型可以正常转换
MapInfo的Float类型属于无固定长度限制的浮点型字段,GDAL不需要对数值的整数/小数位长度做严格校验,因此可以绕过长度限制完成转换。
内容的提问来源于stack exchange,提问作者Sergei Dmitriev
相关产品推荐
相关产品推荐

