Mais

Raster de amostragem de pontos com PostGIS

Raster de amostragem de pontos com PostGIS


Estou desenvolvendo uma consulta PostGIS para amostras de rasters usando uma tabela de pontos para detectar mudanças na cobertura da terra. Eu li a documentação sobre ST_value e consigo obter o valor raster de um único ponto usando a seguinte consulta:

SELECT rid, ST_Value (rast, 1, ST_SetSRID (ST_Point (484375.820,4742079.979), 32617)) as b1 FROM imagery.l8_2015_09_12 WHERE ST_Intersects (rast, ST_SetSRID (ST_Point (484375.820.4742079.979); :: 32617)

No entanto, ao amostrar usando uma tabela de pontos, não consigo fazer ST_Value funcionar. Ao executar a seguinte consulta na janela SQL do QGIS:

- amostra um raster de uma tabela de pontos SELECT ST_Value (r.rast, 3, p.geom) As band3 FROM analysis_results.sample_points AS p, imagery.l8_2015_09_12 AS r WHERE ST_Intersects (r.rast, p.geom);

Eu obtenho o seguinte erro:

Tentando obter o valor de um pixel com uma geometria não pontual

A tabela possui um tipo de dados de geometria multiponto, então por que ST_value não está funcionando bem?


ST_Value é estrito quanto a desejar um Ponto em vez de um MultiPonto; uma maneira de contornar isso é usar ST_Dump. Fazendo sua primeira consulta e convertendo o Ponto em MultiPonto:

SELECT rid, ST_Value (rast, 1, (ST_Dump (ST_Multi (ST_SetSRID (ST_Point (484375.820, 4742079.979), 32617)))). Geom) AS b1 FROM imagery.l8_2015_09_12 WHERE ST_Intersects (rast, ST_SetSRID, 4742079.979) (32617)))). , 32617) :: geometria, 1);

A solução a seguir funciona para obter uma amostra de um raster usando uma tabela de pontos.

SELECT rid, ST_Value (r.rast, 3, (ST_Dump (p.geom)). Geom) As band3 FROM analysis_results.sample_points AS p, imagery.l8_2015_09_12 AS r WHERE ST_Intersects (r.rast, ST_SetSRID (p.geom, 32617 ) :: geometria, 1);

Assista o vídeo: GeoServer: The big picture