Извлечение значений растровых пикселей вдоль полилинии в PostGIS - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть база данных PostGIS с таблицей, содержащей растры, и я хочу извлечь значения пикселей вдоль полилинии (произвольное количество координатных точек) в определенное время.Итак, цель такова:

  1. Выберите соответствующие плитки с заданной полилинией и отметкой времени
  2. Верните значения всех пикселей, которые пересекаются полилинией

Таким образом, каждая выходная строка будет содержать пару координат и соответствующее значение пикселя.

Из того, что я до сих пор гуглил, я понимаю, что либо

  1. преобразую строку врастр, а затем выполнить пересечение или
  2. преобразовать растр в векторную вещь, а затем выполнить пересечение

Однако я не могу применить несколько примеров, найденных мной, к моемудело.Может кто-нибудь дать подсказку?

Растровая таблица называется air_temperature, а соответствующие столбцы - rast и timestamp.Я узнал, что могу предоставить правильную геометрию, как, например, "st_transform(st_setsrid(st_geomfromtext('MULTILINESTRING ((7.294832 52.697831, 7.294074 52.698534))'), 4326), 3857)".

. Я думаю, что могу выбрать соответствующие тайлы и метки времени, включив выражение where следующим образом:

where st_intersects(st_transform(st_setsrid(st_geomfromtext('MULTILINESTRING ((7.294832 52.697831, 7.294074 52.698534))'), 4326), 3857), rast) and timestamp='2017-01-01 01:00:00'

Но как выглядит деталь select?

1 Ответ

0 голосов
/ 20 декабря 2018

Полагаю, вам следует загрузить свои растры в базу данных, а затем использовать st_value() для выделения полос пикселей.Это будет быстрее, чем преобразование растра в геометрию и его дальнейшая обработка, но недостатком является то, что вы, скорее всего, сможете анализировать только вершины линии (не каждую точку).

...