在PostgreSQL的QGIS中使用array []数据类型


9

我只是GIS的初学者,所以很高兴在这里看到任何评论。

我在PostgreSQL中有已连接到QGIS的表。表中的列具有数据类型array[]。但是用户使用{a,d,c}这样的视图将数据插入列并不容易。有没有简单的方法可以编辑数据?

我只是想将数据放入'a,b,c'这样的QGIS中,并trigger在INSERT / UPDATE之前进行创建,以便将数据Postgres正确地放入表中。但这似乎也不是最好的方法。

Answers:


1

我知道的唯一方法是一种“按使用情况的混战”。

例如,我的数据包含一个属性编号数组(属性名propnum_array,dtype varchar[]),有时我想标识该数组为空的任何数据。

测试propnum_array = {}propnum_array is nullpropnum[0]=''(或该主题类型的任何其他变体)会使QGIS 陷入困境,但是我可以将 regexp_match( propnum_array,'\\d')propnum_array ilike '{""}'propnum_array = '{""}'将数据划分为具有非空的内容propnum_array和没有空的内容。

这意味着如果数组具有结构(例如,数组中特定元素处的特定值),则可以扫描以下内容:如果要使3元素数组中第二个元素为“ Y”的所有值,则您将需要类似的内容regexp_match( propnum_array,'[,]*\'Y\'\[,]*')(非常确定您必须转义匹配字符串内部的逗号和单引号,但这是其他人担心的用例)。

有效的事实propnum_array ilike '{""}'似乎表明QGIS将数组视为文本。另外,如果需要的话,它可能会即时将其转换为文本-但是对于未记录数组类型(AFAIK)来说,这是没有意义的。我还没有找到有关数组处理的任何文档,而osgeo-qgis邮件列表中的问题最晚于2015年1月。

我想主要的提示是,表达式编辑器中没有数组函数,尽管我了解到“数据驱动输入掩码”插件自v1.0.0(2015年2月)以来就具有数组处理功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.