I have a tiff raster in my PostGIS 2.0 database. I want to get the value of the raster at a specified lat/lon point.

I have:

  • postgresql-9.1
  • postgis-2.0-svn with raster support
  • a raster imported into PostGIS its SRID is 3035

You can transform the lat/lon point to raster CRS on the fly using ST_Transform(). Combined, the query looks like this:

ST_Value(your_raster, ST_Transform(ST_SetSRID(ST_MakePoint(lon,lat),4326),3035))

The function ST_value:


returns a raster value given a point in either x,y or lat,lon.

  • it works, but in this page the examples forces you to input your query in EPSG:3035, and i want to query in lat lon points..
    – avances123
    Sep 24 '11 at 15:49

While ST_Value works, you still need to spatially join to the point as well:

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))

Or with a 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))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.