span8
span4
有一些形状文件,我使用多个变压器合并在一起,包括LineOnlowoverLayer和Line Combiner,并写入SQLite空间格式。文件处理需要几分钟,但SQLite Spatial Writer需要最多需要半小时才能写入130,000行。它必须找到一些不愉快的东西,这些功能是在我的头上。一旦功能处于SQLite格式,并且执行任何额外处理,SQLite Writer就没有更多的问题。我试过从各个角度弄清楚这一点,但是它有时间伸向职业。我在SQLite编写器之前和之后附上了一个样本线功能。如果您需要更多详细信息,请告诉我。
提前致谢。
谢谢你的详细回复。
我应该澄清你的声明。
我的数据处理分为两个主要步骤,主要数据集由三个合并的子集组成。我单独运行子集进程,其中包括读取原始形状文件,按照我的数据标准处理它们,然后将它们写入SQLite文件。这就是作者写得很慢的地方。
第二个过程,基本上是将SQLite子集集成到主数据集。在这一点上,作者是非常快的,我可以做任何额外的行修改,如LineCombiner和LineOnLineOverlayer,作者是不明显的y影响。这告诉我,一旦数据被SQLite结构化,编写者就会非常高兴。
将几何图形设置为“fdo_null”并没有加速作者,因此这不是几何形状。
我需要SQLite的原因是,我需要AutoCAD地图和QGIS的最终文件,我还没有能够得到Spatialite文件与AutoCAD地图的工作。不过,这位SpatialLite的作者并没有这些慢的问题。
这种行为似乎有点不一致,所以,是的,这确实使诊断困难。
为了检查是否遗漏了什么:
这确实很难确定。1和2似乎没有任何共同之处。
如果这与Writer在某种程度上与FME特性的几何形状有关,那么也许可以尝试将几何类型切换为“fdo_null”,看看这是否会产生任何不同,以缩小可能性。如果没有区别,那就说明这与几何图形本身无关。
除此之外,FME和SQLite还在努力解决SQLite的动态数据类型问题。SQLite中的每个值都有自己的数据类型,Table定义中的设置只是一个“松散的”数据类型,它实际上不会在每个值级别上决定,直到有人试图在事务中提交数据,但编写数据的应用程序可以通过API选择性地向SQLite提供“提示”,以帮助它判断它是字符串还是数字等。FME Writer是否使用这个功能还不得而知。LineCombiner可能会扰乱工作空间模式到Writer的推进,结果Writer一直试图暗示SQLite不同意和否决的数据类型,从而导致时间延迟。但这并不能真正解释为什么Workaround 1似乎是成功的,而且我认为我还没有看到一个真实的应用程序编写到SQLite的实例,尽管这是一种可能性。在这个空间中可以尝试的其他事情是在Writer Manually中设置Table Schema,并通过在下拉列表中设置Field数据类型提供自己的提示。
或许尝试的另一个变体方法1,这可以通过设置模拟作家而不是使用空白SQLite数据库文件与零纪录表已经在作者参数设置为一个模板文件,有效地增加了一个步骤将现有的SQLite文件复制到一个新的文件路径,然后打开这个,对着它写字。这覆盖了Writer的默认行为,即获取API来从头生成一个新的SQLite Spatial数据库。我不明白为什么这应该工作或有任何区别,但如果这是您的测试建议的,那么谁知道呢!
此外,我不确定你对下游格式有多灵活,但Spatialite有些功能等同物,并且往往由可用的GIS包联合支持,可以交替地读取SQLite空间或Spatialite。几何模式和架构元数据跟踪有点不同,但在他们的核心它们存储数据基本相同的方式,尽管对某种格式的支持vs另一个格式可以根据需要使用它来改变。
@bwn
完整的文件路径是一个本地驱动器。
我将做一些带有时间戳的翻译。
但我发现,当我绕过修改变压器的线路时,SQLite Writer非常高兴,运行得很快。Line合成器是真正减慢它速度的东西。这些线的特征是二维的,非常简单。将相同的文件以Shape文件格式写入到相同目录的速度非常快。我都快相信作者有问题了。
当编写器没有保持与SQLite数据库时的作者时,它可能是愚蠢的,当作者必须在上游变换器上“等待”时,它保持断开并重新连接每几个功能,导致必须累计的时间开销执行额外的连接/断开步骤无数次(SQLite Writes是通过执行数据库事务:要将数据写入SQLite文件的任何内容必须连接到它,并且此步骤需要一点点处理时间)。
解决方法可能是在写入器的上游插入一个功能持有者,以防止FME将任何功能写入SQLite,直到所有功能都准备写。功能持有者将阻止作者做任何事情,直到绑定的一切都是首先完成。
另一个潜在的问题是几何LineCombiner可能不够“简单”直接写在SQLite fdo_line格式空间格式,而且作者也在几何从一种形式转换到另一个地方,即使在检查员的几何图形“看”这样简单的二维线条。我最近在FME中经历了一点疯狂,因为从LineCombiner出来的一些几何图形似乎有一些隐藏的几何特征,打乱了其他下游变压器。
我使用的似乎有效的“黑客”是使用GeometryRefiner作为最后一步,对所有的几何图形进行后处理,这在理论上不应该做任何事情,但由于无法解释的原因,允许下游变压器再次正常工作,即使检查器表明它没有改变任何几何体属性或特征暴露。
编辑:如果将功能合并到现有的SQLite DataSet中也是快速的。
我更新到FME桌面2019.2.3(最新版本),结果相同。以下是我的写作设置FME Settings.png.fme settings2.PNG
谢谢,几个问题:
除此之外,当“覆盖现有数据库”选项打开时,您不需要将“覆盖表”设置为“是”,但这应该不会有任何区别。
可能进一步挖掘一点正在查看翻译日志,以查看正在消耗时间的步骤。它似乎有点奇怪的是,创建一个新的SQLite数据库与写入现有的数据库VS会产生任何差异。使用SQLite创建新DB的进程几乎没有时间,除非像Overizealous的后台病毒保护程序一样在决定允许进一步访问它之前需要花费大量时间。
如果单击翻译日志“选项”按钮,则有一个选项“日志时间戳信息”。当FME开始写入文件时,这应该显示创建数据库文件之间的相对时间,并且需要多长时间。
它不是写的媒体,因为如果我切换到SHP作家,它是超级快。一旦创建了文件,通过任何额外的处理,SQL编写器也会运行得很快。
我使用的是SqLite Spatial(FDO) writer。它没有索引创建选项。我需要使用这个作家,因为文件兼容性。
©2020 S亚搏在线afe Software Inc |合法的