SPAN8.
SPAN4.
本文包含了许多编写地理数据库关系类的例子。它包含了所涉及概念的演示地理数据库关系类入门.示例覆盖1:m关系,插入m:n m:n或归属关系,先进的m:n关系。
对于以下示例,假设已经在ArcGIS中创建了关系。这是必需的,因为FME无法创建关系,但仅仅填充它们。
*本文中使用的ESRI File Geodatabase reader/writer需要ArcGIS的授权版本。有关所需的ArcGIS许可级别的更多信息,请参见需要FME地理数据库格式的ArcGIS许可证类型.的SDE和Geodatabase的FME读者和作者比较文章也可能有用。
笔记:FME无法在目标地理数据库中创建关系类。要么在ArcGIS / ArcPro中创建关系类,或使用a 模板.
关系.
在此示例中,将演示1:M关系类翻译。如前一篇文章所述,在处理以围绕1:M类别的关系类时,没有中间表以跟踪这些关系。因此,这种关系通过主要和外键彼此束缚。
步骤
1)打开提供的Workspace'One2ManyrelStart.fmwt'或打开空白工作区,然后添加“ESRI文件GeoDB”阅读器。
如果您打开了提供的工作区,请跳到步骤3。
2)对于ESRI文件GeoDB Reader,导航到1ManyrelStart.gdb。选择它,然后单击“确定”。
再次单击“确定”。应添加读者,当被问及拨号和邻域特征类型时,应添加。应添加读取器,当被问及选择Parcels和邻域功能类型时。
3)将attributecreator添加到每个要素类,新属性存在
' geodb_feature_has_relationships ',值为' yes '。
4)同一个“属性创造器”。将'ObjectID'重命名为'geodb_oid',用于初始和目标特性类。这样做是为了告诉作者哪些特征是相关的。必须确保geodb_oid是原始表的ID。例如:要在包和邻居之间建立关系,使用OBJECTID(起源表)和neighborid(目标表)。
AttributeCreator参数
5)现在是时候将编写器添加到工作区了。作家>添加作家。选择“ESRI文件GEODB”格式。
选择要保存输出geodatabase的Folder位置,并为geodatabase命名。
单击参数,并将导入XML工作区模板设置为提供的XML文档:' XMLWorkspaceTemplate.XML '。这将允许您使用提供模式(包括关系类)的模板写入新的地理数据库。
注意:除非在每个完全翻译后更改输出名称,否则删除初始转换后的XML模板,允许覆盖现有的地理数据库。
单击Run。工作区应该成功完成。检查ArcGIS产品中的地理数据库。使用ArcMap,您应该能够看到哪些特性与哪些特性相关。下面是ParcelID: 144的示例。可以看出,它与Kitsilano社区有关。
有时,已存在原点和目标要素类中的数据,并且您只需要向关系表添加关系。如果:如果:
- 关系是m:n或属性关系
关系类已经存在于你的地理数据库中
要添加关系,请将GeoDB_Type设置为GeoDB_RelationShip或GeoDB_Attributed关系(如果属于)和GeoDB_REL_ORIGIN_OID和GEODB_REL_DESTINING_OID到其各自的Objectid的关系。这需要FME读取参与关系的要素类,但不涉及再次撰写它们。在这种情况下,需要写入关系表。
步骤
通过查看工作区,您可以看到正在读入Geodatabase中的两个特性类。在我们继续之前,让我们看看我们正在读取的地理数据库。
2)打开ArcCatalog并导航到包含包含在内的地理数据库的文件夹
fmwt文件。
从查看地理数据库,我们可以看到2个表(结构和地址)以及关系类(struction_to_address_rel)。
检查ArcCatalog中的源数据
在这里,您可以看到已经创建了关系类。可以通过ArcGIS访问视图,并打开关系类的属性。右键单击“关系类”>“属性”。作为提醒,这是因为必须在ArcGIS中创建关系类,然后可以通过FME填充它们。
3)事实上,这是一个M:N关系,我们需要确保一些属性存储在特性上,以便写入关系类。
Origin和Destination oid引用各自特性类上的主键和外键。在本例中,我们使用ObjectID作为新创建的origin/destination oid的值。需要注意的是,这些新创建的值并没有显式地写入地理数据库,而是帮助FME处理特征与关系之间的关系。为了将这些特性存储到每个特性类中,我们需要为每个特性类添加一个AttributeManager。这允许用户创建前面提到的所需属性。
Origin AttributeManager参数(结构表):
目标attributemanager参数(地址表):
4)使用主要和外键设置,我们现在可以使用FeatureMerger变压器合并功能。这将使用两个要素类之间共享的字段合并功能,在这种情况下,structure.siteId和地址remarks。
5)最后,需要另一个AttributManager变压器,以确保该功能被识别为特征类。这是通过将geodb_type设置为'geodb_relationship'来完成的,如果您正在处理属性关系,则需要将该值设置为“geodb_attributed_relationship”。
6)最后加上作者。在这里,我们直接写入关系表。为了正确地做到这一点,我们之前设置的值:
geodb_rel_origin_oid.
Geodb_rel_destination_oid
geodb_type.
我们不必设置外键值(StructureEventID和AddressEventID),因为只要上面的值被相应地映射,这些值就会被写入器填充。
7)运行工作区。Relationship类现在应该被AddressEventID和StructureEventId的外键值填充。
如果以2个要素类开头,并且您希望用关系类插入新的地理数据库,则需要组合1:M关系工作区和更新M:N的关系工作空间来携带此任务。同样,应该注意,通过ArcGIS在翻译之前需要在目的地中创建关系类。在“Many2ManyAdvanced”模板中可以看到这种工作空间的一个例子。
©2019 S亚搏在线afe Software Inc |合法的