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))
| improve this answer | |

The function ST_value:


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

| improve this answer | |
  • 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))
| improve this answer | |

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.