Страница 1 из 1
Билинейная интерполяция
Добавлено: 28 янв 2020, 22:51
Svility
Добрый день.
Есть ли уже реализованный алгоритм билинейной интерполяции на Postgre/Postgis?
Собственно необходим алгоритм, который вернет высотную отметку с растра (загруженного в PG) по входным данным - X,Y.
Алгоритм:
https://ru.wikipedia.org/wiki/Билинейная_интерполяция
ST_Value(rastr, geom) - отбирает высоты по методу "ближайший сосед" - быстро, но не точно (целые значения).
Re: Билинейная интерполяция
Добавлено: 01 фев 2020, 14:35
oldbay
Посмотрите в сторону SAGA GIS
http://www.saga-gis.org
В качестве источника там можно использовать postgis - а в инструментах посмотрите на "Shapes" -> "Grid Tools"
Re: Билинейная интерполяция
Добавлено: 19 фев 2020, 22:42
Svility
Модуль rasterinterpolation выполняет билинейную и бикубическую интерполяцию... А вот как бы функцию описать на pg?
Re: Билинейная интерполяция
Добавлено: 20 фев 2020, 11:57
antonv
Svility, для билинейной интерполяции нужны значения четырёх пикселей, верно? Функция ST_Value умеет не только по координатам точки возвращать значение, но и по номеру столбца и строки ячейки в растре. Верните себе четыре значения вокруг точки и проинтерполируйте сами формулой из Википедии:)
Re: Билинейная интерполяция
Добавлено: 14 мар 2020, 21:10
MBG
См.
https://postgis.net/docs/RT_ST_Resample.html - интерполирует целый растр, в том числе билинейная интерполяция поддерживается. Если определить новый растр из одной точки, получите требуемое.
Re: Билинейная интерполяция
Добавлено: 18 июн 2020, 22:51
Svility
antonv писал(а): ↑20 фев 2020, 11:57
Svility, для билинейной интерполяции нужны значения четырёх пикселей, верно? Функция ST_Value умеет не только по координатам точки возвращать значение, но и по номеру столбца и строки ячейки в растре. Верните себе четыре значения вокруг точки и проинтерполируйте сами формулой из Википедии:)
А нет справки никакой или примера. Теория стала понятной, но с реализацией беда.
Re: Билинейная интерполяция
Добавлено: 28 фев 2021, 20:59
Svility
Ну вот определяю я границы пикселя, вокруг искомой точки, но что то не пойму что дальше нужно сделать.. как то пиксель изменить или с границами пикселя какую то операцию провести нужно...
Кто подскажет в каком направлении дальше двигаться?
Код: Выделить всё
SELECT rid, ST_AsText(ST_Envelope(rast)) As geom, ST_Value(rast, ST_SetSRID(ST_POINT(40.074284, 44.702956),4326)) As z, '219.061719108487' z_RI /*эталон*/
FROM dem b
where ST_Intersects(ST_SetSRID(ST_POINT(40.074284, 44.702956),4326), b.rast)

- Снимок экрана (60).png (12.93 КБ) 10255 просмотров