将 Geodataframe 写入 geopandas 中的文件时出现“不支持的驱动程序”错误

Ben*_*ann 4 python file anaconda geopandas

我正在读取 GeoJson 文件,对其应用一些函数,然后想要将 GeoDataFrame 保存到另一个文件。

这是我的代码:

import geopandas as gpd
df=gpd.read_file('C:/in_folder/data.json')
df.to_file(driver='C:/out_folder', filename='df.json')
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误:

DriverError:不支持的驱动程序:'C:/out_folder'

这是回溯:

---------------------------------------------------------------------------
DriverError                               Traceback (most recent call last)
<ipython-input-75-4209247a0f42> in <module>
      1 import geopandas as gpd
      2 df=gpd.read_file('C:/in_folder/data.json')
      3 df.to_file(driver='C:/out_folder', filename='df.json')

~\.conda\envs\ox\lib\site-packages\geopandas\geodataframe.py in to_file(self, filename, driver, schema, **kwargs)
    513         from geopandas.io.file import to_file
    514 
--> 515         to_file(self, filename, driver, schema, **kwargs)
    516 
    517     def to_crs(self, crs=None, epsg=None, inplace=False):

~\.conda\envs\ox\lib\site-packages\geopandas\io\file.py in to_file(df, filename, driver, schema, **kwargs)
    125         schema = infer_schema(df)
    126     with fiona_env():
--> 127         with fiona.open(
    128             filename, "w", driver=driver, crs=df.crs, schema=schema, **kwargs
    129         ) as colxn:

~\.conda\envs\ox\lib\site-packages\fiona\env.py in wrapper(*args, **kwargs)
    396     def wrapper(*args, **kwargs):
    397         if local._env:
--> 398             return f(*args, **kwargs)
    399         else:
    400             if isinstance(args[0], str):

~\.conda\envs\ox\lib\site-packages\fiona\__init__.py in open(fp, mode, driver, schema, crs, encoding, layer, vfs, enabled_drivers, crs_wkt, **kwargs)
    260             else:
    261                 this_schema = None
--> 262             c = Collection(path, mode, crs=crs, driver=driver, schema=this_schema,
    263                            encoding=encoding, layer=layer, enabled_drivers=enabled_drivers, crs_wkt=crs_wkt,
    264                            **kwargs)

~\.conda\envs\ox\lib\site-packages\fiona\collection.py in __init__(self, path, mode, driver, schema, crs, encoding, layer, vsi, archive, enabled_drivers, crs_wkt, ignore_fields, ignore_geometry, **kwargs)
    126                 raise DriverError("no driver")
    127             elif driver not in supported_drivers:
--> 128                 raise DriverError(
    129                     "unsupported driver: %r" % driver)
    130             elif self.mode not in supported_drivers[driver]:

DriverError: unsupported driver: 'C:/out_folder'
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么事吗?

Jan*_*mbi 5

默认情况下不启用 KML 驱动程序,如本 GitHub 问题https://github.com/Toblerity/Fiona/issues/97中所述。基本上,KML 驱动程序似乎不符合 Fiona 的质量要求(截至 2014 年),不确定将来是否会修复。

您可以尝试启用默认情况下禁用的 KML 驱动程序。

import geopandas as gpd, fiona
fiona.drvsupport.supported_drivers['kml'] = 'rw' # enable KML support which is disabled by default
fiona.drvsupport.supported_drivers['KML'] = 'rw' # enable KML support which is disabled by default
Run Code Online (Sandbox Code Playgroud)

对于较新版本的 fiona,您可能需要使用 libkml 而不是 kml。IE:

fiona.drvsupport.supported_drivers['libkml'] = 'rw' # enable KML support which is disabled by default
fiona.drvsupport.supported_drivers['LIBKML'] = 'rw' # enable KML support which is disabled 
gpd.read_file("/path/to/your/test.kml")
Run Code Online (Sandbox Code Playgroud)

积分转到此答案