Билинейная интерполяция

Ответить
Аватара пользователя
Svility
Участник
Сообщения: 55
Зарегистрирован: 24 окт 2017, 19:41
Репутация: 5
Откуда: 32637

Билинейная интерполяция

Сообщение Svility »

Добрый день.
Есть ли уже реализованный алгоритм билинейной интерполяции на Postgre/Postgis?
Собственно необходим алгоритм, который вернет высотную отметку с растра (загруженного в PG) по входным данным - X,Y.
Алгоритм: https://ru.wikipedia.org/wiki/Билинейная_интерполяция
Спойлер
ST_Value(rastr, geom) - отбирает высоты по методу "ближайший сосед" - быстро, но не точно (целые значения).
Аватара пользователя
oldbay
Участник
Сообщения: 53
Зарегистрирован: 14 июл 2015, 11:46
Репутация: 19
Откуда: Санкт-Петербург
Контактная информация:

Re: Билинейная интерполяция

Сообщение oldbay »

Посмотрите в сторону SAGA GIS http://www.saga-gis.org
В качестве источника там можно использовать postgis - а в инструментах посмотрите на "Shapes" -> "Grid Tools"
Аватара пользователя
Svility
Участник
Сообщения: 55
Зарегистрирован: 24 окт 2017, 19:41
Репутация: 5
Откуда: 32637

Re: Билинейная интерполяция

Сообщение Svility »

Модуль rasterinterpolation выполняет билинейную и бикубическую интерполяцию... А вот как бы функцию описать на pg?
Аватара пользователя
antonv
Активный участник
Сообщения: 233
Зарегистрирован: 29 ноя 2016, 10:44
Репутация: 114
Откуда: Санкт-Петербург

Re: Билинейная интерполяция

Сообщение antonv »

Svility, для билинейной интерполяции нужны значения четырёх пикселей, верно? Функция ST_Value умеет не только по координатам точки возвращать значение, но и по номеру столбца и строки ячейки в растре. Верните себе четыре значения вокруг точки и проинтерполируйте сами формулой из Википедии:)
MBG
Активный участник
Сообщения: 123
Зарегистрирован: 02 июн 2012, 12:02
Репутация: 35

Re: Билинейная интерполяция

Сообщение MBG »

См. https://postgis.net/docs/RT_ST_Resample.html - интерполирует целый растр, в том числе билинейная интерполяция поддерживается. Если определить новый растр из одной точки, получите требуемое.
Аватара пользователя
Svility
Участник
Сообщения: 55
Зарегистрирован: 24 окт 2017, 19:41
Репутация: 5
Откуда: 32637

Re: Билинейная интерполяция

Сообщение Svility »

antonv писал(а): 20 фев 2020, 11:57Svility, для билинейной интерполяции нужны значения четырёх пикселей, верно? Функция ST_Value умеет не только по координатам точки возвращать значение, но и по номеру столбца и строки ячейки в растре. Верните себе четыре значения вокруг точки и проинтерполируйте сами формулой из Википедии:)
А нет справки никакой или примера. Теория стала понятной, но с реализацией беда.
Аватара пользователя
Svility
Участник
Сообщения: 55
Зарегистрирован: 24 окт 2017, 19:41
Репутация: 5
Откуда: 32637

Re: Билинейная интерполяция

Сообщение 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
Снимок экрана (60).png (12.93 КБ) 9947 просмотров
Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя