Amazon s3 如何将zip文件(包含shp)从s3 bucket加载到Geopandas?

Amazon s3 如何将zip文件(包含shp)从s3 bucket加载到Geopandas?,amazon-s3,zip,geojson,shapefile,geopandas,Amazon S3,Zip,Geojson,Shapefile,Geopandas,我压缩了name.shp、name.shx、name.dbf文件,并将它们上传到AWS s3存储桶中。现在,我想加载这个zip文件,并将包含的shapefile转换为geopandas的GeoDataFrame 如果文件是压缩的geojson而不是压缩的shapefile,我可以做得很好 导入io 进口boto3 作为gpd导入geopandas 进口拉链 cliente=boto3.client(“s3”,aws\u access\u key\u id=ak,aws\u secret\u ac

我压缩了name.shp、name.shx、name.dbf文件,并将它们上传到AWS s3存储桶中。现在,我想加载这个zip文件,并将包含的shapefile转换为geopandas的GeoDataFrame

如果文件是压缩的geojson而不是压缩的shapefile,我可以做得很好

导入io
进口boto3
作为gpd导入geopandas
进口拉链
cliente=boto3.client(“s3”,aws\u access\u key\u id=ak,aws\u secret\u access\u key=sk)
bucket_name='bucketname'
object_key='myfolder/locations.zip'
bytes\u buffer=io.BytesIO()
cliente.download\u fileobj(Bucket=Bucket\u name,Key=object\u Key,fileobj=bytes\u buffer)
geojson=bytes\u buffer.getvalue()
zipfile.zipfile(字节\缓冲区)作为zi:
以zi.open(“locations.shp”)作为文件:
打印(gpd.read_文件(file.read().decode('ISO-8859-9'))
我得到了这个错误:

ççEÀËÆ3À:没有这样的文件或目录


您可以直接读取zip,无需使用zipfile。您需要Shapefile的所有部分,而不仅仅是.shp本身。这就是它与geojson一起工作的原因。您只需要使用
zip://
传递它。所以不是

gpd.read_file('path/file.shp')
你和我一起去吗

gpd.read_file('zip:///path/file.zip')

我对
bot3
不够熟悉,不知道您在哪一点上实际拥有这条路径,但我认为这会有所帮助。

基本上
geopandas
包允许直接从S3读取文件。如上所述,它还允许读取
zip
文件。下面您可以看到代码,它将从s3读取zip文件,而无需下载。您需要在开头输入
zip+s3://
,然后在s3中添加路径


geopandas.read_文件(f'zip+s3://bucket name/file.zip')

谢谢。在s3中使用zipped.shp并不容易,因为该格式包含两个其他相关文件,geopandas无法识别它们。所以,我只是将格式更改为gpkg。请不要只发布代码作为答案,还要解释代码的作用以及它如何解决问题。带有解释的答案通常更有帮助,质量更好,并且更有可能吸引选票。作为对
fiona==1.8.17
的警告,我得到了一个卷曲错误,并更新了修复方法<代码>pip安装-U fiona