172 похожих чатов

Добрый день. Вопрос возник, а можно ли как-то средствами postgresql

конвертнуть массив jsonb
'[ -71.1776585052917, 42.3902909739571, -71.1776820268866, 42.3903701743239,
-71.1776063012595, 42.3903825660754, -71.1775826583081, 42.3903033653531, -71.1776585052917, 42.3902909739571 ]'::jsonb
в полигон postgis'а ?
'POLIGON(( -71.1776585052917 42.3902909739571, -71.1776820268866 42.3903701743239,
-71.1776063012595 42.3903825660754, -71.1775826583081 42.3903033653531,-71.1776585052917 42.3902909739571 ))'::geometry


Я могу из jsonb получить набор значений.
select jsonb_array_elements('[ 1, 2, 3, 4 ]'::jsonb)::float;

Но вот как результат сгруппировать по два и подсунуть в конструктор ST_MakePoint и результат собрать в массив для конструктора геометрии?
SELECT ST_MakePolygon(ST_MakeLine( ARRAY[ ST_MakePoint(1,2), ST_MakePoint(3,4), ST_MakePoint(5,6), ST_MakePoint(1,2) ]::geometry[] ));

2 ответов

12 просмотров

можно как-то так: select ST_MakePolygon(ST_MakeLine( array_agg(ST_MakePoint(pair[1], pair[2])))) from ( select array_agg(e.value order by ordinality) pair from jsonb_array_elements( '[ -71.1776585052917, 42.3902909739571, -71.1776820268866, 42.3903701743239, -71.1776063012595, 42.3903825660754, -71.1775826583081, 42.3903033653531, -71.1776585052917, 42.3902909739571 ]'::jsonb ) with ordinality e group by (ordinality-1) / 2) q

Павел-Бабяк Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта