首页 > 解决方案 > 在 PostGIS 中沿折线提取栅格像素值

问题描述

我有一个 PostGIS 数据库,其中包含一个包含栅格的表,我想在特定时间提取沿折线(任意数量的坐标点)的像素值。所以目标是:

  1. 选择给定折线和时间戳的相关图块
  2. 返回折线穿过的所有像素的值

因此,每个输出行将包含一个坐标对和相应的像素值。

从我到目前为止谷歌搜索的内容中,我了解到我要么

  1. 将线转换为栅格,然后进行交集,或
  2. 将栅格转换为矢量事物,然后进行交集

但是,我无法将我发现的几个例子应用到我的案例中。有人可以给个提示吗?

栅格表被调用air_temperature,相关列是rasttimestamp。我了解到我可以提供适当的几何图形,例如"st_transform(st_setsrid(st_geomfromtext('MULTILINESTRING ((7.294832 52.697831, 7.294074 52.698534))'), 4326), 3857)".

我想我可以通过包含 where caluse 来选择相关的图块和时间戳,如下所示:

where st_intersects(st_transform(st_setsrid(st_geomfromtext('MULTILINESTRING ((7.294832 52.697831, 7.294074 52.698534))'), 4326), 3857), rast) and timestamp='2017-01-01 01:00:00'

但是这select部分看起来怎么样?

标签: sqlpostgisrasterpolyline

解决方案


我想,你应该将你的栅格上传到数据库中,而不是用来 st_value()提取像素带。这比将栅格转换为几何图形并进一步处理它要快,但缺点是您很可能只能分析线顶点(而不是每个点)。


推荐阅读