span8
斯潘4
你好,
我正在尝试创建一个工作区,它可以读取某个几何图形类型的任何要素类(例如线或点)从Oracle空间数据库,并将其写入SDE地理数据库。因为需要处理大约200个特性类,手动转换是不可能的(这意味着分别为每种特性类型创建了读写器)。我尝试过不同的方法,但都失败了:
-通用读取器:应将“源数据集”作为输入。我有一个数据库,但是(我需要通过发布的参数提供其连接参数,而不是提供数据集)
-动态读取器(合并的特征类型):Oracle空间读取器与“合并的特征类型”和“要读取的特征”上的筛选器—>“要读取的特征类型”(由已发布的参数提供)不起作用,因为它的模式不会随着特性类的变化而动态变化。
最后我用了一个冒险家和一个充满活力的作家,这会很好地发挥作用,如果不需要属性转换(或初始编写过程)。然而,我只想在SDE地理数据库中写入增量更新,因此需要检查有关更改的属性值。但由于FeatureReader分别输出数据和模式,这似乎不容易。
是否有可能合并数据及其模式,以便后续的转换器可以处理属性?最好使用不含蟒蛇的方法,但我也很感激有关蟒蛇的提示。或者除了使用FeatureReader,还有其他方法可以满足我的条件吗?
事先谢谢!
最好的问候,
安德烈
您好!@takashi,
谢谢你的回答!同时我也意识到,即使属性值没有被公开,我也可以使用它们。然而,仍然存在一个问题:我需要使用ChangeDetector检查关于更新的两个数据源(包含新数据的Oracle Spatial DB和包含当前数据的SDE Geodatabase)。为此,为了进行比较,应该忽略一些属性(例如:典型的sd属性,如OBJECTID或fme格式参数,如fme_type),使用参数或pythoncaller可以做什么。
一个问题,然而,属性的数据类型没有被正确识别,并且根据源数据库的不同进行不同的处理。示例:属性x根据Oracle空间数据库(源)和SDE地理数据库(目标)的类型编号为(10,0)的sqldeveloper。在壮举领袖和作家之间,然而,OracleSpace中的属性x被处理为64位整数(1111),而SDE中的属性x被处理为64位实数(1111.0)。如果我不能保证来自不同来源的相同属性以相同的方式处理,我几乎看不到基于属性值检测更改的方法。我错过什么了吗?
最好的问候,
安德烈
您好!@andr_,在动态写入器特性类型中到达第一个数据特性之前,必须配置每个目标特性类型的模式。因此,FeatureReader首先输出特征类型的模式特征,然后输出属于特征类型的数据特征。通常没有必要将模式特性合并到数据特性,除非您需要更改模式,即使属性值将通过工作流更改。亚搏在线我认为这个工作流足以执行不亚搏在线改变模式的转换。
?2019安全亚搏在线软件公司|合法的