Valeur raster PostGIS d'un point lat / lon

13

J'ai un raster tiff dans ma base de données PostGIS 2.0. Je veux obtenir la valeur du raster à un point lat / lon spécifié.

J'ai:

  • postgresql-9.1
  • postgis-2.0-svn avec prise en charge raster
  • un raster importé dans PostGIS son SRID est 3035
avances123
la source

Réponses:

11

Vous pouvez transformer le point lat / lon en CRS raster à la volée à l'aide de ST_Transform (). Combinée, la requête ressemble à ceci:

ST_Value(your_raster, ST_Transform(ST_SetSRID(ST_MakePoint(lon,lat),4326),3035))
obscur
la source
5

La fonction ST_value:

http://postgis.net/docs/RT_ST_Value.html

renvoie une valeur raster étant donné un point en x, y ou lat, lon.

unicoletti
la source
cela fonctionne, mais dans cette page, les exemples vous obligent à entrer votre requête dans EPSG: 3035, et je veux interroger dans les points lat lon ..
avances123
4

Pendant que ST_Value fonctionne, vous devez également vous joindre spatialement au point:

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 avec une table:

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))
HeikkiVesanto
la source