Pyogrio不支持像Fiona这样的现有数据源的增量写入或附加。它使用一种无状态的,面向批量的方法来读写空间矢量数据格式,这意味着所有数据均以单个通行方式读取或编写。这意味着Pyogrio不允许在不重写整个文件的情况下将新记录添加到现有数据源或附加到文件中。相比之下,Fiona支持增量写作或附加,从而提供了更多的灵活性和对数据处理的控制。
Pyogrio是作为Fiona的实验性高性能替代品开发的,专门针对地理群的I/O操作更快。 Pyogrio在内部使用Cython的Numpy面向方法来处理空间数据,在将它们转换为Geopandas GeodataFrames之前,将几何形状作为众所周知的二进制对象和字段属性作为Numpy阵列。整个GeodataFrame都在内存中处理并以一个大型操作写入,这提高了速度,但限制了灵活性,例如增量写作。
另一方面,Fiona是一个功能齐全的通用Python库,用于使用OGR矢量数据源。它采用一种状态方法,其中数据被多次读取或编写。这使Fiona更适合各种用例,包括复杂的数据转换和增量写入或附加操作。 Fiona的设计允许在现有的空间文件中添加新功能或在不重新处理所有内容的情况下修改数据集。这种处理增量写作的能力对于需要随着时间的推移需要更新对地理空间数据集的工作流程至关重要。
Pyogrio专注于通过避免Python和Fiona执行的本机数据类型之间的多次转换来提供更快的阅读访问。它利用预编译GDAL/OGR库的绑定以矢量和批量方式完成数据操作。性能比较表明,在阅读和编写文件时,Pyogrio与Fiona相比可以实现超过5-20次的加速度,这非常适合处理大型数据集或有利于吞吐量而不是细微的编辑的操作。
两个库之间的关键权衡取决于灵活性与速度。尽管Fiona支持增量更新,多样化的文件格式和丰富的控制功能,但它并未显示出与Pyogrio提供的批量数据操作相同的高速处理。相反,Pyogrio的无状态,全面处理可显着提高速度,但以不支持现有数据集的增量附加或修改为代价。
此外,与Fiona不同,Pyogrio不支持在写作过程中指定模式,这可以在编写数据时详细控制属性类型和几何形状。 Pyogrio还明确地对待空的几何形状,在某些情况下将其写为空而不是空的,反映了其关注直接的,面向批量的数据处理。
总之,Pyogrio无法处理诸如Fiona之类的增量写作或附加。它在单个操作中读取和写入空间数据源,而无需部分更新现有文件。 Fiona仍然是需要增量数据修改的工作流程的更灵活的选择,而Pyogrio擅长于高性能的体积I/O操作,尤其是在以Geopandas中心工作流程中。
这些信息是从有关Pyogrio和Fiona的官方文档,用户指南和开发人员讨论中收集的,突出了它们的架构差异,使用模式以及与增量写入和数据附加的支持功能。