span8
span4
你好。
我们可以控制在[UT GDB要素类的流量,使得第一要素类先阅读,去完成工作区和输出写入?然后第二个要素类被读,去完成工作区和输出写入等等!谢谢。
所以我有一个工作区,将做到这...但它是相当混乱。基本上,你读的源数据,但每个要素类只有一个功能。
这会给你的要素类的列表读取。
然后你那种列表到你想要的任何命令,并将其推入一个FeatureReader。这将让你为该要素类读取数据。
有两种设置。一个是你筛选列表(FeatureTypeFilter),并且每个要素类FeatureReader。另一种是你不过滤列表,并且对FeatureReader读取只有fme_feature_type类(即阅读类,该特征表示)。
第二种方式是整洁,但它意味着你不能直接访问的属性。
看完后你处理这些数据,并将其与FeatureWriter写。唯一的限制是你不能使用基于组的变压器,因为它会影响的特征的顺序。
我在这里做了一个简短的视频演示:https://www.screencast.com/t/ikql5cnz
真的不过,问题是,你为什么要这么做。如果它只是需要的数据按照一定的顺序来写,然后可以做容易得多。另外的信息可以从一个要素类到另一个(与FeatureMerger),这又是比较容易的方式进行传递。例如,而不是“读表1,表写1,读表2从表1中的一些信息”你可能只是“读两个表,从表1中传递信息表2,写出两个表”
总之,如果你可以说*为什么*工作需要在此顺序,也许我们可以提出一个解决方案,更容易实现。
好吧@马克2ATSA亚搏在线FE,也许我没有解释我为什么需要这个。
所以,我在服务器上有一个表格形式的数据。我正在使用sqlcreator(postgis)从服务器中提取数据,然后将其转换为空间形式,该空间形式根据需要填充属性。
另一个输入是基于优先级(p1、p2、p3和p4)的所有国家的集群(网格,没有属性信息),以shapefile的形式使用s3下载器从aws下载(下载压缩文件,存储到本地(使用workspacerunner)。一个国家可以有两个优先事项,即p1或p2、p2或p3、p3或p4。最后一个优先事项有时可能是国家边界。因此,当所有区域一次性运行时,边界信息会自动写入为那些没有优先边界的国家的输出。而且,要在204个国家运行工作台,跟踪错误和警告也有点复杂。
所以,基本上,如果我们需要逐个国家运行工作台(所有优先级都在on-go中),并将输出写入country文件夹中的priority文件夹中。
现在,我们使用featurereader/writer,连接204个连接器太手工了。
共享基本的数据流。
好吧,我很抱歉,但是我做了一些可能不正确的假设。我以为你是从一个地理数据库中读到的,我想有一个要求表2在表1完全完成之前不要开始处理。但我在这里看不到。我看到它需要单独处理,但不是不能同时处理。如果我错了就纠正我,但是A国的结果不会影响B国,对吧?
因此,忽略aws和sql的复杂性,您所拥有的是一组形状文件和一个多边形,每个形状特征集需要覆盖一次属性。
实现这一目标有两种方法。
首先,您可以一次读取所有形状数据,读取多边形特征,并通过设置分组在reaoverlayer的区域中处理它们。您可能需要为每个形状数据集提供一个多边形功能,每个多边形的名称都与形状数据匹配。这样,group by将只覆盖每个shapefile到它的多边形上;不是shapefile上的shapefile。然后你需要写输出。你可以设置一个我们称之为扇形分叉来做这个。扇出允许您指定要写入的文件夹。因此,您有一个带有优先级的属性,一个带有country的属性,并且您向c:\ mydata写入\
对于少量的数据,这种方法很好,但如果每个shapefile都非常大(比如每个10MB或更大的文件有200多个),就不行。
第二种方法是对每个文件进行单独的处理。在那里,我通常会有一个带有文件/目录/路径读取器的控制工作区来读取形状文件的列表。然后我将每个文件名传递给worker工作区,它读取提供的shapefile并将其覆盖到多边形上。WorkspaceRunner在那里工作得很好。然后,和以前一样,可以使用扇形分叉将数据写入正确的文件夹。
在第二种情况下,您还可以发布/传入要用作日志文件名的国家的名称。这样就可以得到每个国家的日志文件。否则每次运行工作区时,它都可能覆盖相同的日志文件。
我希望这能有帮助。aws和sql部分当然也会使它变得更加复杂。虽然我们可以在这里提供帮助,但如果当地认证的FME合作伙伴能够提供帮助,可能还是值得一看的。亚搏在线外管局不提供咨询服务,但我们的合作伙伴提供。显然,这可能会涉及成本,但其他方面会更容易(例如,更容易与他们私下共享工作区)。在线查看合作伙伴页面:https://www.亚搏在线safe.com/partners网站/
@蒂姆·伍德:“如果所有要素类型都来自同一个读取器,则按要素类型名称的字母顺序读取”-对此我不确定。其实我也不知道哪个FT FME首先读,但我从来没有发现的字母顺序排列。
据我了解,有得玩希望第二FT开始读,当第一个完全写操作完成。您可以使用featurereader和featurewriter的组合,但是如果有很多featuretype,那么它可能是一个非常长的串联变压器组合链。
我将提出一个2工作区解决方案:第一个工作区使用schemaAreder,并使用“等待作业完成”选项将ft发送到工作区运行器;第二个工作区使用扇形输出将传入的featuretype写入或将其筛选到相应的writer-ft。
我可能会和专业读者和专业作家一起去。
另一个选项是包含两个工作空间运行器的父工作空间,第一个运行读写第一个要素类的工作空间,第二个运行读写第一个要素类的工作空间。
@托马斯塔克斯曼我认为如果所有的功能类型都来自同一个阅读器,那么它们是按功能类型名称的字母顺序读取的。但是您可以使用单独的读卡器读取它们,然后您可以通过在导航器窗格中向上或向下移动读卡器来控制顺序。但它仍然不能提供你想要的解决方案。
如果您想在所有数据处理完毕之前保存所有数据,还可以使用featureholder transformer。
另一件需要注意的事情是gdb层的潜在锁定。我不确定您使用的是什么格式,但是当您从正在写入的相同数据中读取数据时,有时会遇到锁定问题。如果使用esri fgdbs,则可能需要使用open api reader/writer和需要安装arcgis的esri进行测试。我最近遇到了一个sql server死锁问题,因为我使用了一个并行处理的workspacerunner,因此有4个工作区同时运行。我正在寻找一些解决此问题的选项,包括在运行子工作区之前和之后使用sql更改数据库设置。
@蒂姆·伍德我想我可以读取zip文件,但是在第一个数据集完成后,workspace runner在遍历第二个数据集时出现问题。如果我使用featurereader/writer,那么连接204个数据集就太需要人工干预了。此外,WorkspaceRunner不继承父工作区中的属性。对于这个或文档,您是否已有WB?
我想有三个选择,两个已经提到了。
一。使用FeatureReaders和FeatureWriter而不是Readers和Writer。然后你可以控制阅读和写作的顺序。
2.使用运行两次的WorkspaceRunner。基于已发布的参数读取文件。
三。如果要写入的文件不是要读取的文件,则可以使用读卡器读取所有文件,但在准备好写入第一个文件之前,请使用功能保持器来保持进一步的过程。但是他们总是一个接一个地读所有的文件。在这种情况下,运行完整的过程并逐个写入所有文件。这可能不是你想要的。
您无法控制FeatureTypes的顺序,也无法仅使用一个工作区以迭代方式运行FeatureTypes。
您可以做的是发布“featuretypes to read”参数,然后按featuretype启动工作区featuretype。
©2019安全亚搏在线软件公司|法律