【问题标题】:Geopandas warning on read_file()在 read_file() 上的 Geopandas 警告
【发布时间】:2021-03-07 18:13:10
【问题描述】:

我在使用 geopanda 的 read_file() 读取 geojson 时收到以下警告:

...geodataframe.py:422: RuntimeWarning: Sequential read of iterator was interrupted. Resetting iterator. This can negatively impact the performance.
  for feature in features_lst:

这是我使用的代码示例:

crime_gdf = gpd.read_file('datasets/crimes.geojson', bbox=bbox)

crimes.geojson 是一个包含大量点的文件,每个点都有一个“犯罪类型”

bbox 定义边界

代码按预期运行,但我不明白那个警告。

编辑

我将 geojson 转换为羽毛,我得到了同样的警告。

【问题讨论】:

  • 您确定没有其他内容正在写入或以其他方式使用该文件吗?
  • 是的,文件只被这个脚本使用
  • 它在 Google Drive 文件夹中。会是这个原因吗?
  • 我不知道,你可以把它移出 Google Drive 看看是否有帮助
  • 它在 Google Drive 文件夹外运行时出现同样的警告

标签: python geopandas


【解决方案1】:

在 Fiona 的问题跟踪器中查看我的评论:https://github.com/Toblerity/Fiona/issues/986

GDAL(Fiona 用来访问地理数据的库)在当前读取的特征上维护一个迭代器。对于某些驱动程序,有一些操作会影响此迭代器。因此,在这些操作之后,我们必须确保将迭代器设置到正确的位置,以确保连续读取数据。此类操作包括对数据集中的所有特征进行计数,分别计算其范围。

GDAL 中有不同类型的驱动程序。有些驱动程序支持随机访问,有些则不支持。对于不支持随机访问的驱动程序,迭代器的重置涉及再次读取所有特征直到迭代器位置。由于这可能是一项代价高昂的操作,因此会发出此 RuntimeWarning,以便用户了解此行为。

【讨论】:

  • 抱歉我在这个问题上的无知,但是我可以选择支持随机访问的驱动程序吗?
  • @leosole 这取决于您正在阅读的文件。 GeoJSON 有一个驱动程序,GPKG 有一个驱动程序,等等。所以您不能为 GeoJSON 使用另一个驱动程序。
  • 我明白了。我可以将文件转换为其他内容。我尝试转换为羽毛,但警告仍然存在
  • @leosole 这只是一个警告。如果您没有看到任何与性能相关的问题,您可以放心地忽略它。我怀疑 geopandas 与 list(src) 的问题相同。如果是这种情况,则可能无论如何都不应该发出警告。在 github.com/Toblerity/Fiona/issues/986 中,您将找到有关 list() 导致此行为的原因的更多信息。
【解决方案2】:

我发现这个 fiona PR 引用了警告:https://github.com/Toblerity/Fiona/pull/965

在最近打开的Collection 上调用list(src) 时,我可以在fiona 1.8.18 上重现该问题,但在1.8.17 上则不行。所以我认为这是在 2020-11-17 发布的fiona 1.8.18 中引入的回归。

【讨论】:

    【解决方案3】:

    虽然在某些情况下忽略警告可能会导致问题,但我发现在我的代码输出中重复出现这个问题特别烦人。

    我发现警告可以忽略使用

    import warnings
    # filter out RuntimeWarnings, due to geopandas/fiona read file spam
    # https://stackoverflow.com/questions/64995369/geopandas-warning-on-read-file
    warnings.filterwarnings("ignore",category=RuntimeWarning)
    

    我在引用这篇文章的 cmets 中添加了解释我为什么要过滤掉这些警告的原因。如果在未来的 geopandas / fiona 版本中禁止此警告,则可能应该删除此代码 sn-p,因为它也可能禁止有意义的警告,并且在某些情况下可能会出现问题。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    相关资源
    最近更新 更多