postgresql - Postgresql:访问路径中的各个点?
问题描述
我一直在试图弄清楚如何访问路径的各个点(或任何其他几何类型)。我阅读了 v13 文档的第 8.8 章和第 9.11 章,尽管(对我而言)这似乎是一个非常基本的要求,但我找不到解决方法。我现在正在考虑将路径转换为不同类型的文本,并使用字符串操作函数提取信息。
我在这里错过了什么吗?我也搜索了 SO 并且从未被问过,所以这真的让我想知道我是否以错误的方式思考这个问题。
我希望有一些函数或运算符可以在其中输入路径和索引并得出相应的点。
感谢您对此的任何帮助。
PS:我使用的是香草 PostgreSQL 13(即没有 postgis)。我对 postgis 不熟悉,我最初的印象是,仅仅满足这个要求就有点过头了(也许在性能方面,但主要是因为我需要了解它)。
此致
解决方案
同样在这里,不要gis,因为它太多了。
我会说用正则表达式解析 path::text 表达式并返回一个带有点的数组。
我会去报告任何结果。此函数将路径转换为字符串数组。如果需要,这些字符串可以转换为点。
create or replace function path2points( path ) returns point[] as
$$
with points as (
select point( unnest(
string_to_array( regexp_replace( $1::text,'[()][()]','', 'g' ),'),(')
) ) as point
) select array_agg( point ) from points
$$ language sql immutable strict;
这是解决这个问题的一种非常愚蠢的方法,可能不是很快,但它会成功。
推荐阅读
- google-chrome - 将网页快捷方式打开为窗口(Google Chrome 浏览器)时如何删除信息栏?
- javascript - 如何删除此代码中的重复?
- javascript - 在 div 顶部添加和删除类?
- python - IndexError:列表索引超出范围 - 绘制图像时
- r - 如何允许用户在闪亮的数据表中将表格内容编辑为全新的值(例如数字到文本)
- solr - Solrj v6.1.0 上的 facet.limit
- javascript - 仅使用 javascript 逐渐更改/转换输入的背景颜色
- flutter - NetworkImage 错误无法实例化图像代码
- c# - c#中如何比较两个波形的相似度?
- python - IndentationError:需要一个缩进块,Python 3,6