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

用Python实现卫星影像导入裁切:从EarthExplorer获取Landsat8并生成CNN分类适配图块

Landsat 8卫星影像Python处理实操

一、对接Earth Explorer平台的Landsat 8影像下载方案

  • 适配的可用依赖工具
    • landsatxplore:直接对接USGS Earth Explorer官方接口的Python开发包,支持账号鉴权、按轨道/点位范围、云量、时间范围检索匹配Landsat 8影像,无需手动在网页端下载
    • geopandas:辅助处理目标点位的矢量范围,自动计算对应影像的经纬度检索边界
  • 核心实现代码
from landsatxplore.api import API

# 初始化Earth Explorer鉴权(替换为个人USGS平台注册账号)
api = API(username="你的EE平台账号", password="你的EE平台密码")

# 按筛选条件检索Landsat 8影像
matched_scenes = api.search(
    dataset="landsat_ot_c2_l2",  # 对应Landsat8 Collection 2 Level 2地表反射率产品
    bbox=[目标西经, 目标北纬, 目标东经, 目标南纬],  # 传入目标点位/轨道对应的经纬度范围
    max_cloud_cover=10,  # 筛选云量占比低于10%的有效影像
    start_date="2023-06-01",
    end_date="2023-09-30"
)

# 下载匹配的全场景影像到本地目录
api.download(
    scene_id_list=[scene["entity_id"] for scene in matched_scenes],
    output_dir="./raw_landsat_data"
)

# 关闭鉴权连接
api.logout()

实操提示:账号密码建议通过本地环境变量读取,不要硬编码在公开代码中,避免信息泄露。

二、栅格影像导入与270×270尺寸裁切块提取(适配Jupyter Notebook下CNN开发流程)

  • 核心处理依赖
    • rasterio:适配卫星栅格影像的读写操作,支持窗口式裁切,和GDAL生态完全兼容,适合Notebook下的交互式调试
    • numpy:实现影像数组的维度转换,直接输出适配CNN框架的输入张量
  • 实现逻辑与代码
import rasterio
import numpy as np
from rasterio.windows import Window

# 导入本地存储的Landsat 8全场景多波段影像
with rasterio.open("./raw_landsat_data/LC08_L2SP_XXX_XXX.TIF") as src:
    crop_size = 270
    # 预设3个裁切块的有效起始坐标(可根据影像无云有效区位置调整,避免取到黑边)
    crop_start_positions = [
        (行方向偏移量1, 列方向偏移量1),
        (行方向偏移量2, 列方向偏移量2),
        (行方向偏移量3, 列方向偏移量3)
    ]
    cropped_block_list = []
    for row_offset, col_offset in crop_start_positions:
        # 定义裁切窗口范围
        crop_window = Window(
            col_off=col_offset,
            row_off=row_offset,
            width=crop_size,
            height=crop_size
        )
        # 按窗口读取影像像素,保留全波段维度
        block_pixels = src.read(window=crop_window)
        # 校验裁切块尺寸,确保输出严格为270×270
        assert block_pixels.shape[1:] == (crop_size, crop_size), "裁切块尺寸不符合要求"
        cropped_block_list.append(block_pixels)

# 拼接为适配CNN训练的输入张量:维度为 [样本数, 波段数, 高度, 宽度]
cnn_training_input = np.stack(cropped_block_list, axis=0)

操作提示:

  • 如果需要保留裁切块的地理参考信息,可通过rasterio的窗口写功能,将裁切块单独导出为带坐标的GeoTIFF文件
  • 裁切前可先读取全影像的有效区域范围,添加越界判断逻辑,避免裁切块超出影像边界引入无效像素
  • 所有代码块均可在Jupyter Notebook中逐段运行,随时查看裁切块的像素值、维度,方便快速调试

内容的提问来源于stack exchange,提问作者RAYANE SODRÉ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 13:36:11