You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用支持的驱动时,Kedro Catalog操作GeoJSON数据集仍报错

Kedro GeoJSONDataSet 追加模式加载报错问题解决

问题场景

在Kedro项目中配置GeoJSON数据集,期望每次运行节点时向文件追加数据而非覆盖,配置如下:

suggested_routes_table@geopandas:
  type: geopandas.GeoJSONDataSet
  filepath: data/04_feature/routes_suggestions_table.geojson
  load_args:
    driver: "GeoJSON"
    mode: "a"

已确认Fiona环境中GeoJSON驱动支持追加操作(GeoJSON: 'raw'),且直接调用GeoPandas的to_file(path, mode="a")可正常追加数据,但调用catalog.load("suggested_routes_table@geopandas")时触发错误:

DataSetError: Failed while loading data from data set  GeoJSONDataSet(filepath=/Users/nicolasbetancourt/Documents/GitHub/jama-coaque-routes/jama-coaque-routes/data/04_feature/routes_suggestions_table.geojson, load_args={'driver': GeoJSON, 'mode': a}, protocol=file,  save_args={'driver': GeoJSON}). No such file or directory /vsimem/ec1c814e95f9446290be2efde0c02145.json

删除mode: "a"后数据集可正常加载。

问题原因

mode: "a"是数据保存阶段的参数,用于指定追加模式写入文件,但当前被错误配置在load_args(加载参数)中。Kedro加载GeoJSON数据时,会将load_args传递给Fiona的读取逻辑,而追加模式并不适用于读取操作,导致Fiona尝试在内存临时文件中执行非法操作,最终抛出文件不存在的错误。

解决方案

将mode: "a"从load_args迁移到save_args中,正确配置如下:

suggested_routes_table@geopandas:
  type: geopandas.GeoJSONDataSet
  filepath: data/04_feature/routes_suggestions_table.geojson
  load_args:
    driver: "GeoJSON"
  save_args:
    driver: "GeoJSON"
    mode: "a"

该配置的作用:

  • 加载数据时使用默认读取模式,正常读取GeoJSON文件
  • 保存数据时启用追加模式,实现每次运行节点向文件追加新数据

验证说明

  1. 确认Fiona驱动支持:fiona.supported_drivers中GeoJSON标记为raw,代表支持读写及追加操作,满足需求
  2. 首次运行时,若目标文件不存在,mode="a"会自动创建文件,无需额外处理

内容的提问来源于stack exchange,提问作者Natalio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:10:25