哨兵2NDVI均值时序曲线
时间: 2025-05-14 11:21:53 浏览: 43
### 计算 Sentinel-2 数据的 NDVI 均值并绘制时序曲线
为了生成基于 Sentinel-2 卫星数据的 NDVI(归一化植被指数)均值时序曲线,可以按照以下方法操作:
#### 1. **NDVI 的定义**
NDVI 是通过红光波段 (Red) 和近红外波段 (NIR) 计算得出的一个指标,其公式如下:
\[
NDVI = \frac{(NIR - Red)}{(NIR + Red)}
\]
其中 \( NIR \) 表示近红外波段反射率,\( Red \) 表示红光波段反射率。
#### 2. **数据准备**
使用 Sentinel-2 Level-2A 数据集,该数据已经过大气校正处理[^1]。Level-2A 数据提供了表面反射率产品,可以直接用于计算 NDVI 而无需额外的大气校正步骤。
#### 3. **提取 NDVI 并计算均值**
利用遥感软件或 Python 编程工具(如 Google Earth Engine 或 Rasterio),可以从 Sentinel-2 图像中提取 NDVI,并进一步计算区域内的 NDVI 均值。
以下是基于 Python 和 Pandas 库实现 NDVI 时间序列分析的代码示例:
```python
import ee
import pandas as pd
import matplotlib.pyplot as plt
# 初始化 GEE
ee.Initialize()
# 定义研究区范围(以 GeoJSON 形式的坐标为例)
region_of_interest = ee.Geometry.Polygon(
[[[-106.97, 45.0],
[-106.97, 44.8],
[-106.7, 44.8],
[-106.7, 45.0]]])
# 加载 Sentinel-2 L2A 数据集合
s2_data = ee.ImageCollection('COPERNICUS/S2_SR') \
.filterBounds(region_of_interest) \
.filterDate('2019-01-01', '2021-12-31') \
.select(['B8', 'B4']) # B8: 近红外波段; B4: 红光波段
# 定义函数来计算 NDVI
def add_ndvi(image):
ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI')
return image.addBands(ndvi)
# 添加 NDVI 波段到图像集合
ndvi_collection = s2_data.map(add_ndvi)
# 提取时间序列中的 NDVI 均值
time_series = ndvi_collection.select('NDVI').mean() \
.reduceRegion(**{
'reducer': ee.Reducer.mean(),
'geometry': region_of_interest,
'scale': 10,
'maxPixels': 1e9
})
# 将结果导出为 DataFrame
dates = []
values = []
for img in ndvi_collection.getInfo()['features']:
date = img['properties']['DATE_ACQUIRED']
value = img['bands'][0]['data'] # 示例简化逻辑
dates.append(date)
values.append(value)
df = pd.DataFrame({'date': pd.to_datetime(dates), 'ndvi_mean': values})
# 绘制 NDVI 曲线图
plt.figure(figsize=(15, 7))
sns.lineplot(x='date', y='ndvi_mean', data=df)
plt.title('S2 NDVI Time Series (Mean Value)', fontsize=20)
plt.xlabel('Date', fontsize=16)
plt.ylabel('NDVI Mean', fontsize=16)
plt.grid(True)
plt.show()
```
上述代码实现了从 Sentinel-2 数据集中提取指定区域内 NDVI 均值的时间序列,并将其可视化为一条折线图[^4]。
#### 4. **平滑时间序列**
如果需要减少噪声影响,可以通过移动平均法对时间序列进行平滑处理。例如,在绘图前应用 `rolling` 方法设置合适的时间窗口大小。
---
###
阅读全文
相关推荐


















