Eu tenho um raster tiff no meu banco de dados PostGIS 2.0. Quero obter o valor da varredura em um ponto lat / lon especificado.
Eu tenho:
- postgresql-9.1
- postgis-2.0-svn com suporte a raster
- uma varredura importada para o PostGIS, seu SRID é 3035
Eu tenho um raster tiff no meu banco de dados PostGIS 2.0. Quero obter o valor da varredura em um ponto lat / lon especificado.
Eu tenho:
Respostas:
A função ST_value:
http://postgis.net/docs/RT_ST_Value.html
retorna um valor raster dado um ponto em x, y ou lat, lon.
Enquanto o ST_Value funciona, você ainda precisa se juntar espacialmente ao ponto:
SELECT ST_Value(your_raster.rast, ST_Transform(ST_SetSRID(ST_MakePoint(lon,lat),4326),3035))
FROM your_raster
WHERE ST_Intersects(your_raster.rast, ST_SetSRID(ST_MakePoint(lon,lat),4326),3035))
Ou com uma mesa:
SELECT ST_Value(your_raster.rast, ST_Transform(ST_SetSRID(ST_MakePoint(your_table.lon,your_table.lat),4326),3035))
FROM your_raster
JOIN your_table ON ST_Intersects(your_raster.rast, ST_SetSRID(ST_MakePoint(your_table.lon,your_table.lat),4326),3035))