使用rasterio和s3打开栅格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用rasterio和s3打开栅格相关的知识,希望对你有一定的参考价值。

我在Amazon S3存储桶中存储栅格,并希望在我的Django docker容器中使用已安装的rasterio库打开特定对象。

AWS_ACCESS_KEY_ID和AWS_ACCESS_KEY_ID包含在docker-compose.yml env变量中。

在docker容器内并尝试:

$ python manage.py shell
$ import rasterio
$ with rasterio.open(url_to_s3_object) as file:
$ ....print(file)

我收到错误:

Traceback (most recent call last):
  File "rasterio/_base.pyx", line 72, in rasterio._base.DatasetReader.start (rasterio/_base.c:2847)
  File "rasterio/_base.pyx", line 74, in rasterio._base.DatasetReader.start (rasterio/_base.c:2799)
  File "rasterio/_err.pyx", line 196, in rasterio._err.CPLErrors.check (rasterio/_err.c:1773)
  rasterio._err.CPLE_OpenFailed: {URL TO S3 OBJECT} does not exist in the file system, and is not recognised as a supported dataset name.

解决方案是什么?

在本地机器上一切正常。

答案

找到了解决方案。 rasterio lib至少在GDAL 2.1.0下使用s3正确 - https://mapbox.github.io/rasterio/topics/vsi.html升级GDAL解决了这个问题。

以上是关于使用rasterio和s3打开栅格的主要内容,如果未能解决你的问题,请参考以下文章

使用Rasterio读取栅格数据

python rasterio库和gdal库匹配与冲突问题安装办法

python rasterio库和gdal库匹配与冲突问题安装办法

无法使用 rasterio.mask 剪辑图像

xarray中的查找表?

使用 rasterio 屏蔽/裁剪光栅会导致 AttributeError