You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PDAL info调用S3资源时添加request_payer参数?

解决PDAL访问需Request Payer的AWS S3资源问题

命令行实现

你之前尝试的AWS_REQUEST_PAYER环境变量是有效的,只需在执行pdal info时直接前置设置即可:

AWS_REQUEST_PAYER=requester pdal info --summary s3://usgs-lidar/Projects/CA_CarrHirzDeltaFires_2019_B19/CA_CarrHirzDeltaFires_1_2019/LAZ/USGS_LPC_CA_CarrHirzDeltaFires_2019_B19_10TDK0479244992.laz

如果环境变量方式不生效,也可以通过PDAL的--option参数直接传递该配置:

pdal info --summary --option AWS_REQUEST_PAYER=requester s3://usgs-lidar/Projects/CA_CarrHirzDeltaFires_2019_B19/CA_CarrHirzDeltaFires_1_2019/LAZ/USGS_LPC_CA_CarrHirzDeltaFires_2019_B19_10TDK0479244992.laz

PDAL的S3驱动会把这个参数传递给底层的GDAL驱动,而GDAL原生支持AWS_REQUEST_PAYER来指定请求方付费。

Python实现方案

方案1:直接用PDAL Python绑定

通过PDAL的Python库构建管道时,直接在读取器配置里加入AWS_REQUEST_PAYER参数:

import pdal
import json

pipeline_config = {
    "pipeline": [
        {
            "type": "readers.las",
            "filename": "s3://usgs-lidar/Projects/CA_CarrHirzDeltaFires_2019_B19/CA_CarrHirzDeltaFires_1_2019/LAZ/USGS_LPC_CA_CarrHirzDeltaFires_2019_B19_10TDK0479244992.laz",
            "AWS_REQUEST_PAYER": "requester"
        }
    ]
}

pipeline = pdal.Pipeline(json.dumps(pipeline_config))
pipeline.execute()
print(pipeline.summary())

需要预先安装PDAL的Python包:pip install pdal

方案2:boto3下载后处理

如果直接访问有问题,可以先用boto3下载文件到本地,再用PDAL读取:

import boto3
import pdal
import os

# 初始化S3客户端
s3_client = boto3.client('s3')
bucket_name = 'usgs-lidar'
object_key = 'Projects/CA_CarrHirzDeltaFires_2019_B19/CA_CarrHirzDeltaFires_1_2019/LAZ/USGS_LPC_CA_CarrHirzDeltaFires_2019_B19_10TDK0479244992.laz'
local_temp_file = '/tmp/temp_lidar.laz'

# 下载时指定RequestPayer参数
s3_client.download_file(
    bucket_name,
    object_key,
    local_temp_file,
    ExtraArgs={'RequestPayer': 'requester'}
)

# 用PDAL读取本地文件并生成摘要
pipeline = pdal.Pipeline(f'{{"pipeline": [{{"type": "readers.las", "filename": "{local_temp_file}"}}]}}')
pipeline.execute()
print(pipeline.summary())

# 清理临时文件
os.remove(local_temp_file)

这个方案需要确保boto3已配置好AWS凭证(可以通过aws configure命令设置,或配置环境变量AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY)。

注意事项

  • 确认你的AWS账号有足够权限承担请求费用,且凭证配置正确。
  • 建议使用较新版本的PDAL,旧版本可能对S3驱动的参数支持不完善。

内容的提问来源于stack exchange,提问作者Ian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:22:45