【发布时间】:2022-05-04 17:50:56
【问题描述】:
我想要做的:从内存中的 s3 存储桶加载栅格并将其 CRS 设置为 4326(它没有设置 crs)
到目前为止我所拥有的:
import boto3
import rasterio
from rasterio.crs import CRS
bucket = 'my bucket'
key = 'my_key'
s3 = boto3.client('s3')
file_byte_string = s3.get_object(Bucket=bucket,Key=key)['Body'].read()
with rasterio.open(BytesIO(file_byte_string), mode='r+') as ds:
crs = CRS({"init": "epsg:4326"})
ds.crs = crs
我在这里找到了构建我的代码的方法
Set CRS for a file read with rasterio
如果我给它一个本地文件的路径它可以工作,但它不适用于字节流。
当我使用 '+r' 模式时出现的错误:
rasterio.errors.PathError: invalid path '<_io.BytesIO object at 0x7fb4503ca4d0>'
当我使用“r”模式时出现的错误:
rasterio.errors.DatasetAttributeError: read-only attribute
有没有办法以 r+ 模式加载字节流,以便我可以设置/修改 CRS?
【问题讨论】:
-
你解决了吗?我现在也在处理同样的问题
-
很遗憾没有。
-
我通过在目标文件上声明
ds.crs = crs解决了这个问题。这不是一个聪明的解决方法 -
总比没有好:)
标签: python amazon-s3 rasterio bytestream