【问题标题】:Fiona Driver Error when downloading files via URL通过 URL 下载文件时出现 Fiona 驱动程序错误
【发布时间】:2022-01-17 02:10:13
【问题描述】:

如果您遇到错误,这很容易测试:

import geopandas as gpd
gdf = gpd.read_file('https://hepgis.fhwa.dot.gov/fhwagis/AltFuels_Rounds1-5_2021-05-25.zip')
File "fiona/ogrext.pyx", line 540, in fiona.ogrext.Session.start
File "fiona/_shim.pyx", line 90, in fiona._shim.gdal_open_vector
fiona.errors.DriverError: '/vsimem/6101ab5f23764c15b5fe47aa52a049d6' not recognized as a supported file format.

有趣的是,我最近收到了其他 URL 的此错误,并认为该 URL 有问题。但是,现在我怀疑发生了其他事情,因为它发生在多个 URL 上。另一方面,一些 URL 没有这个问题。另一件有趣的事情是,这个错误有时只会发生。例如,如果我重新运行该命令,它可能会工作 20 次中的 1 次。

我的菲奥娜版本: fiona 1.8.20 py39hea8b339_1 conda-forge

任何帮助将不胜感激。

【问题讨论】:

    标签: geopandas fiona


    【解决方案1】:

    正在调查,该 URL 未返回 zip 文件。看下面的代码,它实际上返回了一个 HTML 输入页面...

    import geopandas as gpd
    import requests, io
    from pathlib import Path
    from zipfile import ZipFile, BadZipFile
    import urllib
    import fiona
    
    url = "https://hepgis.fhwa.dot.gov/fhwagis/AltFuels_Rounds1-5_2021-05-25.zip"
    
    try:
        gdf = gpd.read_file(url)
    except Exception:
        f = Path.cwd().joinpath(urllib.parse.urlparse(url).path.split("/")[-1])
    
        r = requests.get(url, stream=True, headers={"User-Agent": "XY"})
        with open(f, "wb") as fd:
            for chunk in r.iter_content(chunk_size=128):
                fd.write(chunk)
        try:
            zfile = ZipFile(f)
            zfile.extractall(f.stem)
        except BadZipFile:
            with open(f) as fh:
                print(fh.read())
    
    

    【讨论】:

    • 谢谢!救了我很多的悲伤。
    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    相关资源
    最近更新 更多