Mam raster tiff w mojej bazie danych PostGIS 2.0. Chcę uzyskać wartość rastra w określonym punkcie lat / lon.
Mam:
- postgresql-9.1
- postgis-2.0-svn z obsługą rastra
- Raster zaimportowany do PostGIS ma SRID 3035
Mam raster tiff w mojej bazie danych PostGIS 2.0. Chcę uzyskać wartość rastra w określonym punkcie lat / lon.
Mam:
Odpowiedzi:
Funkcja ST_value:
http://postgis.net/docs/RT_ST_Value.html
zwraca wartość rastra podaną w x, y lub lat, lon.
Podczas gdy ST_Value działa, nadal musisz również dołączyć przestrzennie do tego punktu:
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))
Lub ze stołem:
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))