首页 > 解决方案 > 将 lon/lat 集合转换为 geom/linestring

问题描述

我在 postgis 中有一个专栏,例如:

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

我需要通过将此列转换为几何图形在 OpenLayers Map 上画线。

标签: postgresqlgispostgis

解决方案


分步演示: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. 从几何数组中创建线几何

推荐阅读