PostGIS-растрове значення точки lat / lon


13

У мене в базі даних PostGIS 2.0 є тифрний растр. Я хочу отримати значення растра у вказаній точці lat / lon.

Я маю:

  • postgresql-9.1
  • postgis-2.0-svn з растровою підтримкою
  • растр, імпортований в PostGIS, його SRID становить 3035

Відповіді:


11

Ви можете перетворити точку lat / lon в растрову 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.


це працює, але на цій сторінці приклади змушують вас вводити свій запит у EPSG: 3035, і я хочу зробити запит у лат. точках ..
avances123

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))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.