使用QGIS将多个记录连接到单个功能?


25

我试图在QGIS中创建一个建筑物的shapefile的联接/关系,为此,我想加入一个包含在每个建筑物中工作的人的非空间表(.csv)。因此,我在表中有多个记录,希望能够连接到shapefile中的单个功能。我只能在QGIS中运行一个联接,在该联接中,第一个记录被连接到shapefile功能(即建筑物),但随后的记录被删除。

有人可以让我知道如何在QGIS中完成此联接/关系吗?


我在这里有类似的问题gis.stackexchange.com/questions/5797/…建议使用 RT SQL Layer插件和eVis插件。我使用了eVis插件,但这并不是理想的解决方案。
安藤

2
我有同样的问题,确实加入表工作。诀窍是将具有多个值的表连接到具有单个值的表(此处是从人到建筑物,而不是相反)。就我所知,问题在于,这样做后,您将无法搜索并将结果导出为经地理定位的文件,这是一个漏洞(至少对我而言)。有什么办法可以绕过这个问题?marc

您想要达到的最终结果是什么?即使您设法进行加入,也要在地图上显示它吗?做统计吗?取决于此,可以遵循不同的工作流程,但是如果要进行联接,通常最好使用数据库。
johanvdw 2011年

Answers:


15

我使用QGIS 1.7.0解决了此问题,方法是首先将矢量层保存为逗号分隔值(CSV)表,并将几何字段转换为众所周知的文本。为此,“将矢量层另存为...”对话框的层字段必须读取GEOMETRY = AS_WKT,以使用名为WKT的列创建几何的众所周知的文本字段。

然后,将CSV几何文件通过非几何属性表的属性联接选项卡下的一对多联接联接到非几何属性表。

生成的联接另存为另一个几何CSV文件。

在QGIS中打开此表时,每个属性记录均由其适当的矢量几何表示。

通过执行所有这些操作,我发现如果分隔符为逗号并且WKT geometry字段名为WKT,则不需要CSV几何文件即可使用Delimited Text插件。

有关如何完成此操作的详细信息,请参见http://georgiawildlife.com/node/2849上的我的教程。


好的方法,我只是使用ogr2ogr从Shapefiles创建CSV文件做过类似的事情。然后是一个简单的R脚本,用于合并我想要的公共字段上的文件并写回CSV。然后ogr2ogr再次创建合并的shapefile。
vpipkt

1
这可能被评为最高,但是为此的过程由下面的@underdark回答。这是一个hack,并不是最好的选择,它速度慢且效率低下,导致文件更大,步骤更多。
nittyjee '18年

10

在图层属性中创建的联接仅将列添加到现有要素。如果矢量图层仅具有160个要素,则联接不能增加要素的数量!

请改用虚拟层功能。它提供了真正的类似于SQL /数据库的联接。有关示例,请参阅我最近的文章:使用虚拟层的OD流图的小倍数

在此处输入图片说明


7

在QGIS 1.7中,有一个用于联接的新引擎(可以在vector属性中找到它)。

现在可以像其他任何(矢量)层一样将无几何表添加到项目中。


7

从2.2版开始,QGIS支持一对多关系。但是,请在“项目属性”中定义它们,而不是在“矢量层属性”中定义。然后相关记录将出现在图层的“属性表”中或通过表单标识结果。

在此处查看答案并链接到好的指南。


4

在LibreOffice Base中加入。

您无法克服试图管理一对多关系的事实。

对于非空间到非空间,值得努力学习。我发现最大的技巧是确保join属性字段具有完全相同的术语。

在QGIS中将空间定位数据作为一个图层打开,然后在QGIS中的属性表中选择所有记录(清除选择,反转选择),并将它们复制到LibreOffice Calc中的新工作表中。您会发现第一个字段是WKT,它是可在GIS中普遍使用的功能的描述。Calc将为您提供一个对话框,以导入粘贴的表,选择制表符分隔的标签,确保不勾选逗号,因为它将咀嚼WKT字段。然后在Calc中突出显示该表,切换到Base,在左侧突出显示Tables图标并粘贴。Base将通过一个对话框来导入表。可以通过联接保留WKT字段,当文件以.csv格式重新导入QGIS时,这些字段将用于重新定位功能。只记得投影。

这样,您将完全控制联接,并且可以“反向”执行。要在Base中进行联接,请确保唯一数据字段(1)是主键,然后如果您熟悉1对多或1对n概念,则将其指向“许多”。通过建立关系| TOOLS |来建立联接。正如我提到的,当您发现联接字段具有相同的信息但使用了不同的文本或语法来表示它时,您可能想踢人。

hth


2

我认为这不可能将QGIS中具有1对多关系的表链接起来。或者,您可能要尝试使用gvSIG。在这里您可以建立1到许多链接。创建链接后,在地图中选择一个要素将突出显示链接表中的所有相关记录。


1
由于引入了虚拟层,因此此答案不再正确。
昏暗
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.