span8号
斯潘4
本文包含许多编写地理数据库关系类的示例。它包括以下所述概念的演示使用地理数据库关系类简介.示例包括1:m关系,插入到m:n m:n或属性关系中,和先进的M:N关系。
对于以下示例,假设关系已经在Arcgis中创建。这是必需的,由于FME无法创建关系,但仅仅是填充它们。
*本文中使用/提到的ESRI文件geodatabase reader/writer需要获得许可的Arcgis版本。有关所需ArcGIS许可级别的更多信息,请看FME地理数据库格式所需的ARCGIS许可证类型.这个SDE和地理数据库的FME读写器比较文章也可能有用。
注意:fme无法在目标地理数据库中创建关系类。在arcgis/arcpro中创建关系类,或使用 模板.
在这个例子中,将演示一个1:m的关系类翻译。如前文所述,当处理以1:m类别为中心的关系类时,没有中间表来跟踪这些关系。因此,关系通过主键和外键彼此绑定。
步骤
1)打开提供的工作区“1manyrelstart.fmwt”或打开空白工作区并添加“esri文件geodb”读卡器。
如果打开提供的工作区,跳过第3步。
2)对于ESRI文件geodb reader,导航到1ManyRelStart.gdb。选择它并单击“确定”。
再次单击“确定”。应添加读卡器,当被询问时,选择包裹和邻里特征类型。应添加读卡器,当被要求时,选择地块和社区特征类型。
3)向每个功能类添加一个attributeCreator,新属性为
“geodb_feature_具有_relationships”,值为“yes”。
属性创建器参数
4)在每个“attributeCreator”后添加一个“attributeRanmer”转换器。这允许我们将源和目标要素类的objectid重命名为geodb ou oid。这样做是为了告诉作者哪些功能是相关的。
属性名称参数
5)现在是时候将编写器添加到工作区了。编写器>添加编写器。选择“esri file geodb”作为格式。
选择要保存输出地理数据库的文件夹位置,并给地理数据库命名。
单击参数,并将导入XML工作区模板设置为提供的XML文档:“xmlWorkspaceTemplate.xml”。这将允许您使用提供模式(包括关系类)的模板写入新的地理数据库。
注意:除非在每次完整转换后更改输出名称,在初始转换之后移除XML模板,允许覆盖现有的地理数据库。
单击运行。工作区应成功完成。检查任何ArcGIS产品中的地理数据库。您应该能够使用arcmap查看哪些特性与哪些特性相关。下面是parcelid:144的一个例子。可以看到,与基思拉诺社区有关。
有时,源和目标要素类中的数据已经存在,您只想将关系添加到关系表中。您可以在以下情况下执行此操作:
-关系是m:n或属性关系
-关系类已存在于地理数据库中
要添加关系,将geodb_type设置为geodb_relationship或geodb_attributed relationship(如果已属性化),将geodb_rel_origin_oid和geodb_rel_destination_oid设置为各自的objectid。这确实要求FME读取参与关系的特性类,但不涉及再次将它们写出。在这种情况下,只需要写入关系表。
步骤
从工作区看,您可以从正在读取的地理数据库中看到两个要素类。在继续之前,让我们先看看我们正在读取的地理数据库。
2)打开arcCatalog并导航到包含地理数据库的文件夹
FMWT文件。
通过查看地理数据库,我们可以看到2个表(结构和地址)以及一个关系类(结构到地址)。
检查arcCatalog中的源数据
在这里,您可以看到关系类已经创建。可以通过Arcgis访问视图,打开关系类的属性。右键单击关系类>属性。作为提醒,这是因为关系类必须在Arcgis中创建,然后才能通过FME填充。
3)事实上,这是一个m:n关系,我们需要确保在要写入关系类的特性上存储一些属性。
起点和终点OID,请参阅各自功能类上的主键和外键。在这个例子中,我们使用objectid作为新创建的源/目标OID的值。重要的是要注意,这些新创造的价值观,未显式写入地理数据库,而是帮助FME处理特性与关系的关系。为了将这些特性存储到每个特性类中,我们需要为每个功能类添加一个attributeManager。这允许用户创建前面提到的所需属性。
原始属性管理器参数(结构表):
目标attributeManager参数(地址表):
4)设置了主键和外键,我们现在可以使用FeatureMerge Transformer合并功能。这将使用两个要素类之间共享的字段合并要素,在这种情况下,结构.地点ID和地址.备注.
5)最后,需要另一个attributeManager转换器来确保特性被识别为特性类。这是通过将geodb_类型设置为“geodb_relationship”来完成的,如果你处理的是归属关系,该值需要设置为“geodb_attributed_relationship”。
6)最后,写入程序已添加。在这里,我们直接写入关系表。为了正确执行此操作,我们之前设置的值:
geodb相关原点
地理数据库相关目标
吉奥布型
我们不必设置外键值(structureEventID和addressEventID),因为只要上述值已相应映射,编写器就会填充这些值。
7)运行工作区。现在应该用AddressEventID和StructureEventID的外键值填充Relationship类。
如果从2个要素类开始,并且您希望插入到一个新的具有关系类的地理数据库中,执行此任务需要1:m关系工作区和更新m:n关系工作区的组合。再一次,需要注意的是,在翻译之前,需要在目的地中创建关系类,通过ArcGIS。在“many2manyaadvanced”模板中可以看到这样一个工作区的示例。
?2019安全亚搏在线软件公司|法律