导出含多链路的PyPSA网络时,如何保留自定义属性?
解决PyPSA导出/导入时保留自定义属性的方法
核心原因
PyPSA默认仅导出组件的标准属性,通过override_component_attrs定义的非标准属性不会被自动纳入导出流程,需要手动配置导出规则来保留。
针对netCDF格式的解决步骤
导出时指定自定义属性
调用export_to_netcdf()方法时,通过export_attrs参数明确列出需要保留的自定义属性。示例代码如下:# 假设自定义属性为custom_link_attr net.export_to_netcdf("network.nc", export_attrs={"Link": ["custom_link_attr"]})若有多个自定义属性,直接在列表中追加即可。
导入时同步加载属性定义
重新导入前,必须先通过override_component_attrs重新定义自定义属性结构,再加载netCDF文件:from pypsa import Network # 与导出前一致的自定义属性定义 override_config = { "Link": { "attrs": { "custom_link_attr": {"type": "float", "default": 0.0} } } } net = Network(override_component_attrs=override_config) net.import_from_netcdf("network.nc")
针对CSV文件夹格式的解决步骤
导出时包含自定义属性
使用export_to_csv_folder()时,同样通过export_attrs参数指定要保留的属性:net.export_to_csv_folder("network_csv", export_attrs={"Link": ["custom_link_attr"]})执行后,对应链路的CSV文件会新增自定义属性列。
导入时的配置
初始化Network对象时需带上自定义属性配置,再导入CSV文件夹:net = Network(override_component_attrs=override_config) net.import_from_csv_folder("network_csv")
批量处理多组件自定义属性
如果多个组件(如Generator、Bus)都有自定义属性,可扩展export_attrs字典:
export_attrs = { "Link": ["custom_link_attr1", "custom_link_attr2"], "Generator": ["custom_gen_attr"] } net.export_to_netcdf("network.nc", export_attrs=export_attrs)
内容的提问来源于stack exchange,提问作者Alicia Wongel
相关产品推荐
相关产品推荐

