Конвертировать коллекцию lon / lat в geom / linestring - PullRequest
1 голос
/ 21 июня 2019

У меня есть столбец в postgis, как:

[{"lang":-122.39726983952495,"lat":37.789519907547806},{"lang":-122.39703479547161,"lat":37.78933265166566}]

Мне нужно нарисовать линию на карте OpenLayers, преобразовав этот столбец в геометрию.

1 Ответ

2 голосов
/ 21 июня 2019

пошаговая демонстрация: db <> fiddle (из JSON в линию в качестве геометрии)

SELECT
    st_makeline(                              -- 5
        array_agg(point.point)                -- 4
    )
FROM
    my_table,
    json_array_elements(my_points) AS elems,  -- 1
    st_makepoint(                             -- 3
        (elems ->> 'lang')::numeric,          -- 2
        (elems ->> 'lat')::numeric
    ) AS point
  1. Создает одну строку для каждого элемента массива
  2. Получение числовых значений из объекта json
  3. Создание геометрических точек для каждой строки
  4. Объединить все геометрические точки в один геометрический массив
  5. Создание линейных геоматриц из геометрического массива
...