postgresql - 将 lon/lat 集合转换为 geom/linestring
问题描述
我在 postgis 中有一个专栏,例如:
[{"lang":-122.39726983952495,"lat":37.789519907547806},{"lang":-122.39703479547161,"lat":37.78933265166566}]
我需要通过将此列转换为几何图形在 OpenLayers Map 上画线。
解决方案
分步演示: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
- 为每个数组元素创建一行
- 从 json 对象中获取数值
- 为每一行创建点几何
- 将所有点几何图形聚合到一个几何数组中
- 从几何数组中创建线几何
推荐阅读
- hash - 为什么几乎所有的网络服务器都不在客户端散列您的密码?
- google-apps-script - 从运行脚本的 Google 表格中格式化 Google Drive 搜索查询以获取名称 [first & last] 的最佳方法是什么?
- excel - 循环变量的 VBA
- vb.net - 我如何无法获得我所有的 combobox1 并发送到多行文本框
- youtube-api - 如何使用 angularfire2 FirebaseAuth Google 登录对 Youtube 进行身份验证?
- javascript - 异步调用
- sql - (QUERY) - 从特定范围中选择行
- c++ - C++:将 const 用于当前是枚举的函数参数
- angular - Angular:HTML 画布应该是组件还是服务?
- statnet - 节点动态——STATNET / TERGM 中的进入和退出