конвертнуть массив 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[] ));
                  
                  
                
можно как-то так: 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
Спасибо, позже попробую.
Обсуждают сегодня