span8
span4
教程:Geodatabase转换|上一篇:关系类|下一个:Geodatabase更新
本文包含了一些写地理数据库关系类实例。它包括涵盖概念演示介绍工作与地理数据库关系类。例子包括1:M关系,插入到M:N M:N或属性关系,以及高级M:N关系。
对于下面的示例,假设已经在ArcGIS中创建了关系。这是必需的,因为FME不能创建关系,而只能填充它们。
* ESRI的文件在这篇文章中地理数据库读/写器使用/所提要求的ArcGIS的行货版本。有关要求ArcGIS许可级别的详细信息,请参阅FME地理数据库格式需要ArcGIS许可类型。的SDE和Geodatabase的FME阅读器和编写器的比较文章也可能有用。
请注意: FME无法在目标地理数据库中创建关系类。在ArcGIS/ArcPro中创建关系类,或者使用a 模板。
在本例中,将演示1:M关系类的转换。正如在前一篇文章中提到的,当处理以1:M类别为中心的关系类时,没有中间表来跟踪这些关系。因此,这些关系通过主键和外键彼此绑定。
步骤
1)打开提供的工作区“One2ManyRelStart”。或者打开一个空白工作区,添加一个“Esri文件Geodb”阅读器。
如果你打开了工作区提供,跳到第3步。
2)对于ESRI的文件地理数据库读写器,导航到1ManyRelStart.gdb。选择它,然后单击确定。
再次单击OK。当被要求选择包裹和邻里特征类型时,读者应该添加。当被要求选择包裹和邻里特征类型时,读者应该添加。
3)为每个Feature类添加一个AttributeCreator,新属性为
“geodb_feature_has_relationships”并且是“是”的价值。
4)为相同的“AttributeCreator”。重命名“对象ID”到“geodb_oid”的始发地和目的地要素类。这样做是为了告诉哪些功能相关的作家。你必须确保该geodb_oid是源表的ID。例如:建立包裹和附近使用OBJECTID(源表)和NeighbourID(目标表)之间的关系。
AttributeCreator参数
现在是将写入器添加到工作区中的时候了。添加Writer。选择“Esri文件Geodb”作为格式。
选择文件夹的位置,你想保存输出地理数据库,并给地理数据库的名称。
单击parameters,并将导入XML工作区模板设置为提供的XML文档:“XMLWorkspaceTemplate.XML”。这将允许您使用提供模式(包括关系类)的模板来写入新的地理数据库。还可以切换覆盖现有的地理数据库设置。
点击运行。工作区应成功完成。检查任何ArcGIS产品的地理数据库。你应该能够看到哪些功能使用ArcMap涉及到。下面是ParcelID一个例子:144.可以看出,作为关联的基斯兰奴海邻居。
有时候,源和目标特性类中的数据已经存在,您只想将关系添加到关系表中。你可以这样做,如果:
-关系是M:N或属性关系
- 关系类已经存在于地理数据库
要添加关系,请将geodb_type设置为geodb_relationship或geodb_attributedrelationship(如果带属性),并将geodb_rel_origin_oid和geodb_rel_destination_oid设置为它们各自的OBJECTID。这确实需要FME读取参与关系的特性类,但不需要再次将它们写出来。在这种情况下,只需要写入关系表。
步骤
通过观察工作区,你可以从一个地理数据库正在读看到两个要素类。在我们继续之前,让我们先来看看我们从阅读地理数据库。
2)打开ArcCatalog和导航到Many2ManyInput.gdb文件包含与数据下载。这是我们在从与FME模板读同一地理数据库。
通过查看地理数据库,我们可以看到两个表(结构和地址)以及一个关系类(Structure_to_Address_rel)。
在ArcCatalog中检查源数据
在这里,您可以看到已经创建了relationship类。视图可以通过ArcGIS访问,并打开关系类的属性。右键单击关系类>属性。提醒一下,这是因为关系类必须在ArcGIS中创建,然后可以通过FME填充它们。
3)的事实,这是M:N的关系,我们需要确保一些属性存储上的功能将被写入到关系类。
起点和终点的oid,请参考各要素类初级和外键。在这个例子中,我们使用的对象ID为新创建的起点/终点OID值。这是要注意重要的是,这些新创造的价值,没有明确写入地理数据库,而是帮助FME过程的特征是如何与关系。为了这些功能存储每个要素类,我们需要添加每个要素类的AttributeManager。这允许用户创建前面提到的所需要的属性。
原产地AttributeManager参数(结构表):
目标AttributeManager参数(地址表):
4)与主键和外键设置,现在我们可以合并使用FeatureJoiner变压器的功能。这是怎么回事使用的是两个要素类之间共享的领域合并功能,在这种情况下,Structure.SiteID和Address.Remarks。
5)最后,还需要另一个AttributeManager transformer,以确保将特征识别为特征类。这是通过将geodb_type设置为' geodb_relationship '来实现的,如果要处理带属性的关系,则需要将值设置为' geodb_attributed_relationship '。
6)最后,添加了作者。与前面的练习一样,我们将使用一个Geodatabase模板,该模板包含预期输出的模式和预先构建的关系。单击parameters按钮并填写输出名称、覆盖现有的Geodatabase和模板文件Geodatabase,如下所示:
在转换的这个阶段,我们直接写入关系表。为了正确地做到这一点,我们之前设置的值是必需的:
Geodb_rel_origin_oid
Geodb_rel_destination_oid
Geodb_type
我们没有设置外键值(StructureEventID和AddressEventID),因为这些会由作家来填充,只要上述数值也作了相应的映射。
7)运行的工作区。关系类现在应该与AddressEventID和StructureEventId外键值填充。
如果从两个特性类开始,并且您想要用一个关系类插入到一个新的地理数据库中,那么需要结合1:M关系工作区和更新一个M:N关系工作区来完成这个任务。同样,需要注意的是,在转换之前,需要通过ArcGIS在目的地中创建关系类。这种工作空间的一个例子可以在“Many2ManyAdvanced”模板中看到。
©2020安全亚搏在线软件公司|法律