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

Python中Geemap提取指定位置卫星地图图像的技术问题

解决geemap提取指定区域高分辨率卫星图像的问题

核心思路

放弃网页截图方式,直接从Google Earth Engine(EE)导出处理后的卫星影像数据,选择对应区域的高分辨率免费影像集,规避付费API依赖。

具体步骤与代码示例

1. 初始化环境与设置参数

import geemap
import ee
import math

# 初始化EE服务
ee.Initialize()

# 自定义参数
center_lon, center_lat = -122.4439, 37.7538  # 目标中心经纬度(示例:旧金山)
image_width = 800  # 输出图像宽度(像素)
image_height = 800  # 输出图像高度(像素)
target_scale = 10  # 分辨率:米/像素(Sentinel-2为10米,NAIP为1米)

2. 计算目标区域边界

根据中心经纬度、分辨率和图像尺寸,换算出矩形区域的经纬度范围:

# 计算区域半宽/半高(米)
half_width_m = target_scale * image_width / 2
half_height_m = target_scale * image_height / 2

# 米转经纬度(修正纬度对经度距离的影响)
lon_offset = half_width_m / 111320  # 1度经度≈111320米
lat_offset = half_height_m / (111320 * abs(math.cos(math.radians(center_lat))))

# 创建EE矩形区域对象
target_region = ee.Geometry.Rectangle([
    center_lon - lon_offset,
    center_lat - lat_offset,
    center_lon + lon_offset,
    center_lat + lat_offset
])

3. 选择并预处理高分辨率影像

根据目标区域选择适配的免费影像集:

全球通用(10米分辨率):Sentinel-2 L2A

筛选云量低于10%的最新影像,生成真彩色合成图:

# 筛选符合条件的影像
s2_image = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED') \
    .filterBounds(target_region) \
    .filterDate('2023-01-01', '2023-12-31') \
    .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 10)) \
    .sort('system:time_start', False) \
    .first() \
    .clip(target_region)

# 转换为真彩色可视化(Sentinel-2的B4=红, B3=绿, B2=蓝)
rgb_image = s2_image.select(['B4', 'B3', 'B2']).visualize(min=0, max=3000)
美国区域(1米分辨率):NAIP

直接获取最新的高分辨率真彩色影像:

naip_image = ee.ImageCollection('USDA/NAIP/DOQQ') \
    .filterBounds(target_region) \
    .filterDate('2020-01-01', '2023-12-31') \
    .sort('system:time_start', False) \
    .first() \
    .clip(target_region)

4. 导出为PNG/JPG格式

使用geemap导出函数保存纯影像数据,而非网页截图:

# 导出Sentinel-2图像(替换为naip_image即可导出NAIP影像)
geemap.ee_export_image_to_png(
    rgb_image,
    filename='satellite_image.png',
    scale=target_scale,
    region=target_region,
    dimensions=[image_width, image_height]
)

关键说明

  • Map.to_image()获取的是网页地图截图(含UI元素),而ee_export_image_to_png直接从EE服务器提取处理后的原始影像,完全适配后续面积计算等图像处理需求。
  • 分辨率取决于所选影像集:Sentinel-2实现10米全球覆盖,NAIP提供1米分辨率但仅限美国区域;若需其他区域更高分辨率,可查找当地公开卫星影像的EE对应数据集(如国内高分系列)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:23:12