Wartość rastrowa PostGIS punktu lat / lon

13

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
avances123
źródło

Odpowiedzi:

11

Możesz przekształcić punkt lat / lon w CRS rastrowy w locie za pomocą ST_Transform (). Łącznie zapytanie wygląda następująco:

ST_Value(your_raster, ST_Transform(ST_SetSRID(ST_MakePoint(lon,lat),4326),3035))
podmrok
źródło
5

Funkcja ST_value:

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

zwraca wartość rastra podaną w x, y lub lat, lon.

unicoletti
źródło
to działa, ale na tej stronie przykłady zmuszają cię do wprowadzenia zapytania w EPSG: 3035, a ja chcę zapytać w punktach lon lon.
avances123 24.09.11
4

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))
HeikkiVesanto
źródło