postsql导入tiff文件

文章讲述了如何解决大容量土地利用TIF数据导入PostGIS数据库的问题,包括遇到的乱码、编码问题、启用PostGIS_Raster模块以及遗留的参数问题。作者通过生成SQL文件并转换编码成功导入数据。
摘要由CSDN通过智能技术生成

全球的土地利用数据有600G,占用内存太大,使用加载数据也慢。基于以上情况,改变路子,将tiff文件存到数据库中,以下是实践过程中的情况记录:

我参考到的文章有:

postgis/postsql 导入dem栅格数据到数据库_dem 导入pg-CSDN博客raster2pgsql命令参数详解_raster2psql参数-CSDN博客

如果顺利的话,直接按照文章一中的命令,结合文章二感兴趣参数,执行一下就可以。

我执行命令时,使用了参数要求最少的命令行:

raster2pgsql  "tiff数据路径.tif" -t 256x256 表名| psql -U postgres -d 数据库名 -h localhost -p 5432

结果如下:

满屏的乱码,执行完之后,数据库中也没有产生对应的表,那一般出现乱码的常见原因是编码问题。可是tiff文件没有编码,经过查找资料推断原因大概为解译tiff二进制时出了问题,建议可以先生成一个sql文件,然后在执行sql文件,将数据插入。

1、生成一个中间文件.sql,语句如下:

raster2pgsql -t 256x256 "tiff数据路径.tif" 表名 > "sql文件路径.sql"

2、用文本编辑器,这里我用的Notepad++,将sql文件的编码改为utf8,保存。

3、运行sql语句,将数据导入数据库中,语句如下:

psql -U postgres -h localhost -d 数据库名 -p 5432 -f "sql文件路径sql"

这次总算可以了解数据导入的过程发生了什么,从截图可看,从第一步创建表开始,sql语句就执行失败了。根据错误信息,不存在raster类型的数据。各种查询资料之后,终于搞明白了原因:参考资料:PostGIS Raster助力气象应用 - 知乎 (zhihu.com)

只启用postgis是不够的,处理栅格数据,还要启用postgis_raster,之后重新运行sql文件,或者最开始使用的指令,都可以将tiff导入数据库。正确执行命令的样子如下:

数据库里也有了对应的表,存储数据如下:

4、遗留问题:

如最开始说的,raster2pgsql中还有很多有用的参数,比如记录数据源(文件名)的参数。但我使用-k这个参数的时候就会报错如下:

因为目前不用这个参数,数据也没啥问题,所以并没有研究为啥使用-k参数会出现这个错误,有知道的伙伴可以评论区告诉我。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值