在rasteri中链接虚拟文件系统驱动程序

2024-05-15 20:57:57 发布

您现在位置:Python中文网/ 问答频道 /正文

在普通的gdal中,链接多个vsi驱动程序非常简单,例如直接访问.tif.gz文件:

import gdal
import rasterio as rio

## just an example, no real URL

# will work
ds = gdal.Open('/vsigzip//vsicurl/https://testdata.com/testimage.tif.gz')

# won't work
ds = rio.open('/vsigzip/https://testdata.com/testimage.tif.gz')

这是链接问题还是rasterio不能处理.gz文件?你知道吗


Tags: 文件httpsimportcom链接dsworktestdata
1条回答
网友
1楼 · 发布于 2024-05-15 20:57:57

我刚刚浏览了这个,RasterIO(v1.0.21)中的gzip支持检查出来了。好像你错过了//vsicurl。你知道吗

import rasterio as rio

ds = rio.open('/vsigzip//vsicurl/http://localhost:8000/example.tif.gz')

http服务器需要支持范围请求,但如果不支持,RasterIO将生成特定的错误消息。你知道吗

有趣的是Apache Commons VFS scheme在这里似乎不起作用

ds = rio.open('gzip+http://localhost:8000/example.tif.gz')

产生以下结果。注意在vsicurl之前缺少/

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ubuntu/anaconda3/envs/rasterio-env/lib/python3.7/site-packages/rasterio/env.py", line 423, in wrapper
    return f(*args, **kwds)
  File "/home/ubuntu/anaconda3/envs/rasterio-env/lib/python3.7/site-packages/rasterio/__init__.py", line 216, in open
    s = DatasetReader(path, driver=driver, **kwargs)
  File "rasterio/_base.pyx", line 215, in rasterio._base.DatasetBase.__init__
rasterio.errors.RasterioIOError: '/vsizip/vsicurl/http://localhost:8000/example.tif.gz' does not exist in the file system, and is not recognized as a supported dataset name.

相关问题 更多 >