Postgis使用工具raster2pgsql批量导入栅格数据(一)

1.栅格数据

        WorldClim是一个高空间分辨率的全球天气和气候数据的数据库。可以从该网站下载天气数据。网址如下:https://www.worldclim.org

下面是12个月份温度统计数据。

2.使用工具raster2pgsql 将栅格数据导入到postgis

首先,生成sql文件。

raster2pgsql  -d  -I -C  -M -F -t 100x100 -s 4326 tmax*.bil  public.tmax > tmax.sql

其中,命令参数如下:

参数含义
-d表存在时,删除并重新创建
-I在栅格数据列上生成GIST空间索引
-C在栅格数据列上生成约束
-M 在栅格列上运行VACUUM ANALYZE
-F增加一列,值为文件名
-t将栅格数据切分为片,片的大小格式为WIDTHxHEIGHT,然后插入每一行。
-s空间坐标系

然后,执行sql文件。

psql -d postgis_32_sample -U postgres -f tmax.sql

命令中的参数如下:

参数含义
-d数据库
-U用户名
-f文件名

3.查看表raster_columns信息

SELECT * FROM raster_columns where r_table_name = 'tmax';

在pgAdmin中显示查询结果:

4.查看栅格块元信息

SELECT rid, (foo.md).* FROM (SELECT rid, ST_MetaData(rast) As md FROM public.tmax ) As foo;

 在pgAdmin中显示查询结果:

 5.统计栅格块数目

SELECT MIN(filename), COUNT(*) AS num_raster 
FROM public.tmax
GROUP BY filename 
ORDER BY filename;

 在pgAdmin中显示查询结果:

6.统计经度12.49,纬度41.88的地方每个月的平均温度

 SELECT REPLACE(REPLACE(filename, 'tmax', ''), '.bil', '') As month,
 (ST_VALUE(rast, ST_SetSRID(ST_Point(12.49, 41.88),4326))/10) As tmaxtemp 
 From tmax where rid IN 
  (SELECT rid FROM tmax WHERE ST_Intersects(ST_Envelope(rast),  ST_SetSRID(ST_Point(12.49, 41.88),4326)))
 ORDER BY tmaxtemp;

 命令中用到的函数如下:

函数含义
ST_Point使用给定坐标值,构建point对象。
ST_Envelope根据栅格的地理参考信息,获得栅格对象的外包矩形
ST_Intersects判断空间上是否相交
ST_VALUE输出指定位置的元素值
ST_SetSRID设置栅格对象的空间参考标识符

在pgAdmin中显示查询结果:

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值