span8
span4
问题:我正在将导体从oracle spacial加载到文件地理数据库中(最终的输出需要是SDE)。目标数据集都用我试图添加到的现有数据填充。源导体目前被fme分成几个目标特性类;主要的开销和主要的地下。我将需要增加二次开销,二次地下,以及废弃在未来。这部分在初选中运行良好。但是我很难处理好这些关系。每个esri导体特性类都有许多关系。
主要开销的关系。
最后,我将需要处理大部分的关系,如果不是全部的话。但是现在,我只是在处理pioh_conductor - info和它的合作伙伴piug_conductor - info的关系。这是一对多的关系,没有关系表。
主要的地铁看起来差不多,但是在指挥信息表中使用了一个不同的字段作为外键。
每个初级导体可以有1、2或3个相。每个相位获取一个导体信息行(1:M)。
源数据将所有这些信息捆绑在一个表中。因此,对于源表中的每一行(特性),我需要检测它有多少个相位,然后创建1、2或3个相关的导体信息行。
解决方案到目前为止(不工作):
因此,我添加了geodb_feature_has_relationship属性,然后为geodb_oid添加了一个计数器(它们都有名称计数器——我认为这将确保每个整数都是惟一的),以使每个分支成为输出特性和导体信息行。我没有做任何努力来检测阶段的数量或创建额外的行…
任何输入将是伟大的!谢谢!
附带说明:在一个工作空间中尝试并管理所有的关系和其他转换是否有意义?我原以为最后跑得最快的会是这个,但想要跑对就更难了。或者,我应该尝试为每个操作创建一些更小的工作区吗?一个用于更新功能,另一个用于更新每个关系?谢谢!
看看你的工作空间的截图,不确定你的问题是什么。问一个不太明显的问题,目标fgdb中是否已经创建了关系类?
我支持这种从小处开始,然后逐步构建的方法。电子数据集相当复杂,在构建时隔离工作的东西总是很好。
更清晰! ! ! !对不起,我来自一个使用FME的电气GIS背景。我爱电! !我们来找点乐子吧。正如Mark(此处插入真正的FME master)所示,使用FME在Esri中处理1:n关系非常简单。
我附加了一个简单的工作空间,我认为这将真正帮助你。它查看主节点的阶段,然后使用cloner \ attribute管理器生成“导体单元”。我知道这很简单,但这只是其中一个例子。我知道不是所有的电压或数据都是精确的,但它仍然很有趣。
@fallingdog我们有一些关于处理Esri Geodb关系的教程,以及需要在源和目标特性类上设置的属性。介绍使用地理数据库关系类和编写地理数据库关系类
我附加了一个工作空间(基于@dellerbeck这说明了你需要做什么(使用地理标志代替Oracle作为源)。工作区(2019):Create1toMRelationship.fmwt
只是再次强调:FME使用geodb_oid在源和目标特性类之间进行连接。因此geodb_oid对于A_ParentClass和B_ChildClass(或CondctorInfo和PriOHElectricLineSegment)中的相应记录必须具有相同的值。
@markat亚搏在线safe——谢谢你的工作空间!不幸的是,我的还是不管用。我已经添加到我的基于@dellerbeck工作空间和您的工作空间。我认为你和我在关系方面的唯一区别就是使用了ParentID。因为我将一行分解为一个feature类和一个表,所以我只有一个源ID。因此,我使用了geodb_oid的计数器(我在一些教程中看到过这样做)。但我得到:
试图将一行存储到表“传导信息”时出错。一个rcObjects的错误编号是:'-2147221230'。来自ArcObjects的错误消息是:{}
我在之前的环境中也遇到了同样的错误当我试着写出主要的开销时。最后我删除了一个注释关系,然后它就清除了。但现在我无法释怀……即使我删除了所有的关系,但目标关系,我仍然得到它…
@dellerbeck感谢您的反馈以及示例工作区和数据!非常感谢。
我理解的对吗?你想建立关系并在输出数据库中创建“导体的数量”?Esri简单关系就是使用您的源和目标字段的PK \ FK值。”
我不认为这是完全正确的。我本应该更好地解释这个问题。我将提供一些模拟的数据/例子(我将跳过功能映射到主要开销和地下部分,只关注关系部分):
假设输入行作为主要开销从属性过滤器中取出后看起来是这样的:
id | 电压 | 阶段 | 材料 |
1 | 36伏特 | 美国广播公司 | 铝 |
因此,我希望编写器在输出主开销特性类中创建一个新行。这是导线的折线。
objectid | 电压 | 阶段 |
80000 | 36伏特 | 美国广播公司 |
然后在指挥信息表中,将有三行新的。每个阶段一个。
objectid主要开销 | 阶段 | 材料 |
80000 | 一个 | 铝 |
80000 | B | 铝 |
80000 | C | 铝 |
将“objectid”作为PK,将“主开销objectid”作为对象之间关系的FK。当然,如果输入行只有两个相位。那么在导体信息表中只会有两行。
我不知道PK对象id将提前,因为这是由esri管理。但是看起来fme将支持这种“单通道”工作流程。亚搏在线这是我目前坚持的部分。我考虑过加载所有的数据,然后在一个单独的操作中返回并更新关系。但这会增加我的时间。我们正设法使装船时间减到最少。
感谢您对工作空间调用者的提示。我不知道它的存在!
我理解正确吗?您想要在输出数据库中建立关系并创建“导体数量”?Esri简单关系就是使用您的源和目标字段的PK \ FK值。
有很多方法可以实现这一点,但是如果您不使用成千上万的行,那么特性合并是非常棒的。您可以要求它创建一个列表,并使用源列和目标列作为请求者和提供者。完成后,父节点将以列表格式拥有子节点的所有选定属性。
这只是众多方法中的一种,但我希望它能有所帮助!至于多个工作空间,这取决于您希望在其中投入多少工作。我非常幸运地创建了“步骤”,然后将它们与主工作区结合起来,主工作区按操作顺序使用workspace调用程序。当然,这是在功能写手和Safe提供的新缓存选项出现之前。亚搏在线您可以缓存每个步骤,以便从该位置进行测试。
希望这能给你一个主意!
©2019安全亚搏在线软件公司法律