我有一个问题,我似乎无法理解。我有两个多边形层:
- 多边形A-是具有相同字段的多边形B的子集,并且具有与多边形B相同的多边形
- 多边形B-具有要在多边形A中显示的属性数据
如何才能做到这一点?我尝试使用QGIS工具“按位置连接属性”,但是由于某些多边形在其他多边形内,因此它倾向于链接到找到的第一个相交点(外部多边形)。
我有一个问题,我似乎无法理解。我有两个多边形层:
如何才能做到这一点?我尝试使用QGIS工具“按位置连接属性”,但是由于某些多边形在其他多边形内,因此它倾向于链接到找到的第一个相交点(外部多边形)。
Answers:
@Dano正确地提出了一些最好在完整答复中解决的问题。
@Celenius已经指出,一个困难是B和A之间的连接(在任一方向上)都将复制所有字段。纠正这一点可能会很麻烦。我曾在评论中建议,显而易见的简便方法(导出到电子表格)会引发数据完整性问题。 Celenius的建议已经解决的另一个困难是,当没有任何属性组合可以同时用作A和B的键时解决此问题,因为这排除了数据库联接的可能性。空间连接解决了这个问题。
那么,什么是好的解决方案? 一种方法是使用A来标识包含所需数据的B的相应记录。根据有关多边形配置的假设(它们是否重叠,某些对象是否可以包含其他对象等),这可以通过多种方式来实现:使用一层在另一层中选择对象,或通过联接。这里的要点是,我们在此阶段要做的只是选择与A相对应的B子集。
完成选择后,导出选择并替换A. Done。
该解决方案假定B中的所有字段都打算替换其A中的对应字段。如果不是,则确实有必要执行B(源)与A(目的地)的1-1连接。 基于标识符的联接是最好的,但是如果没有id,则对多边形标识(Celenius)进行联接可以很好地工作,并且A和B中相应的多边形形状不可能会有所不同,但是会略有不同。(这是一个微妙的问题,也是潜在的隐患的原因,因为如果GIS是“捕捉”或“维护拓扑”,则先前在B中对不对应于A的多边形进行的编辑仍可以不可见地修改B中的其他多边形。否则会在本地编辑期间自动进行全局更改。)
此时,每个字段都有两个副本:如果[Foo]是A和B的公共字段,则联接包含A. [Foo]和B. [Foo]。 使用字段计算,将B. [Foo]复制到A. [Foo]。对所有必填字段重复此操作。完成此操作后,删除联接。
尽管在涉及多个领域时此过程可能会有些麻烦,但它的优点包括
此建议涉及的一些指导原则是
一个人可能会反对,在许多情况下,有更快,更轻松的方法来达到相同的结果。是的,可以,而且它们可以有效并且通常在谨慎执行的情况下可以正常工作。但是,冒着数据风险的解决方案很难推荐和捍卫作为通用答案。它们最适合一次性使用小型数据集的情况,在这种情况下,数据损坏应迅速变得显而易见,并且此类错误的后果无关紧要。
将Shapefile“ B”的表导出到Excel,并删除多余的列以及包含不需要信息的任何列。确保保留共享标识符列,然后将其保存到适当的文件夹中。进入ArcMap,添加表,然后在Shapefile“ A”上单击鼠标右键并进行表连接。该链接应引导您观看有关如何执行此操作的视频。
@ whuber-整个方法都是正确的,并且可以确保数据的完整性。我唯一可以反驳这个答案的是,某些情况/项目无法为我们提供方法上的方法性时间或预算。
一个真实的例子:
一家初级矿业公司正坐在一个主要矿体上,以其“证明”资源的能力注资数亿美元。通过对出版物和地质图/数据进行桌面审查,可以得出具有针对性且成本很高的钻探计划。当测定从第一次运行返回时,这些值将通过表格连接标记到它们各自的点位置,并以Excel格式抽回,在此格式中,数据被精心准备导入到DataMine中(用于3D矿体插值)。
以我的经验,项目地质学家要求将数据准备在Excel中,并遵循字母的所有格式规则/惯例(无空格,无特殊字符等),并且DataMine导入文件以.csv格式交付(无论如何,然后返回)。这将导致针对定向钻探的更多投资,并且我们将多次(特别是在某些情况下)重新审查该过程。所有这些通常都发生在非常紧迫和关键的时间表上。
我们每个人都有自己的故事,以及我们自己的一系列经验,这些经验已经融入到我们做事的方法中。话虽如此,根据我的经验,Excel是绝对必要的,并且是工作流程中的重要工具。这就是我所知道的。在准备此数据时,我们采取了所有QA / QC预防措施。你们会回避Excel的地方,我别无选择,只能使用它。
在1990年代后期,我们收到了所有水域和水道的大规模更新,涵盖了约55个NTS地图纸和成千上万的特征。我们需要保留旧水文学的增值属性(湖泊名称,表面标高等)并替换几何图形。新旧几何之间的距离足够近,我们可以保证每个多边形的质心仍会受到新多边形边界的限制-这是很重要的一点,如果没有这种基本确定性,以下方法并不是一个好主意。
在这种特定情况下,解决方案是将几何带到属性,而不是将属性带到几何。因此,从概念上讲:
有关arcinfo-worksation的更多扩展说明和配方,请参见此处。我不确定在现代Arcgis或Qgis中甚至可以在不同时删除属性记录的情况下删除几何图形,但是嘿,以防万一,这就是想法。
像往常一样,胡布是正确的。您需要仔细考虑您的过程。特别是如果这些是大型数据集,并且此操作将执行多次或数据对于任务至关重要。
考虑您的数据和职责:
你做了什么?
你在做什么?
您打算做什么?
总是问:为什么?
现在,一个简单的答案直接针对所提出的问题。请记住,总是至少有5种方法来做事情,但通常只有一种最佳方法。
假设完整集具有您想要包含在子集中的每个属性,并且该子集除了已过时的信息外,没有其他任何内容。
猜测子集拓扑与全套匹配(包括原点/投影和XY容差)。
1)在选中“内部”复选框的情况下使用“特征指向”,并从子集中创建一个点要素类或shapefile。
2)使用“按空间连接选择”以基于新创建的Point要素类或shapefile查找全套中与子集对应的所有多边形。
3)从全集导出选区,这可以是您的新子集。