Растровое значение PostGIS широты / долготы

13

У меня есть TIFF растр в моей базе данных PostGIS 2.0. Я хочу получить значение растра в указанной точке широты / долготы.

У меня есть:

  • PostgreSQL-9,1
  • postgis-2.0-svn с поддержкой растров
  • импортированный в PostGIS растр, его SRID - 3035
avances123
источник

Ответы:

11

Вы можете преобразовать точку широты / долготы в CRS растра на лету, используя ST_Transform (). В совокупности запрос выглядит так:

ST_Value(your_raster, ST_Transform(ST_SetSRID(ST_MakePoint(lon,lat),4326),3035))
Подземье
источник
5

Функция ST_value:

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

возвращает растровое значение, заданное точкой в ​​x, y или lat, lon.

unicoletti
источник
это работает, но на этой странице примеры вынуждают вас ввести свой запрос в EPSG: 3035, и я хочу сделать запрос в точках
широты
4

Пока ST_Value работает, вам все равно нужно пространственно присоединиться к точке:

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

Или со столом:

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
источник