使用shp2pgsql导入las2tin生成的SHP时遇Unknown geometry type:31错误
问题调试与解决:shp2pgsql转换TIN格式SHP报错Unknown geometry type:31
问题背景
执行以下流程时触发错误:
- 使用las2tin工具从LAS文件生成TIN格式的SHP文件:
las2tin64.exe -i input.las -o tin.shp - 调用shp2pgsql将该SHP文件转为PostGIS兼容的SQL文件:
shp2pgsql -s 4326 tin.shp temp_table > tin.sql - 错误提示:
Unknown geometry type: 31
错误原因
ESRI Shapefile中的TIN几何类型(代码31)并非shp2pgsql原生支持的类型,因此无法直接完成转换。
调试方向
- 用
ogrinfo查看原始SHP的几何类型,确认是否为TIN:ogrinfo tin.shp -so - 执行
shp2pgsql --help或核对官方文档,确认其支持的几何类型范围,验证TIN是否不在列表内。
已验证的可行解决方法
通过PostGIS附带的ogr2ogr工具将TIN转换为PostGIS兼容的POLYGONZ类型,再进行SQL转换:
- 生成兼容的中间SHP文件:
参数说明:ogr2ogr -f "ESRI Shapefile" -nlt POLYGONZ -explodecollections output.shp input.shp-nlt POLYGONZ:指定输出几何类型为带Z值的多边形-explodecollections:将复合几何对象拆分为单个独立对象
- 用shp2pgsql处理中间文件(补充原命令中缺失的SRID参数):
shp2pgsql -s 4326 -I output.shp temp_table > tin.sql
内容的提问来源于stack exchange,提问作者Mandroid
相关产品推荐
相关产品推荐

