写在前面
该数据集包含一个网格化的每日归一化植被指数(NDVI),该指数来源于地表反射率气候数据记录(CDR)。数据记录从1981年到当前日期之前10天,使用NOAA极轨卫星[先进高分辨率辐射计(AVHRR)和可见红外成像辐射计(VIIRS)]的数据。在每天的0.05°× 0.05°的全球网格上生成输出。这是目前为止全球尺度为数不多的在每日尺度上的植被动态变化指数。
美国地质勘探局遥感物候报告指出:“NDVI值的范围从+1.0到-1.0。贫瘠的岩石、沙子或积雪区域通常显示出非常低的NDVI值(例如,0.1或更低)。灌木和草地等稀疏植被或衰老作物可能导致中等NDVI值(约为0.2至0.5)。高NDVI值(约0.6至0.9)对应于密集的植被,例如在温带和热带森林中发现的植被或处于生长高峰期的作物。”
#1
Normalized Difference Vegetation Index CDR
全球每日植被数据集
图1 全球植被覆盖图(来源于NOAA: https://www.ncei.noaa.gov/products/climate-data-records/normalized-difference-vegetation-index);
数据简介
空间范围:全球
空间分辨率:5km
时间分辨率:每日
时间跨度:1981-2024年
数据格式:NC
图2 1981年6月27日全球植被覆盖图;
数据下载
下载地址:https://www.ncei.noaa.gov/data/land-normalized-difference-vegetation-index/access/
基于Python的批量下载代码:
# -*- coding: utf-8 -*-
import re
import requests
from bs4 import BeautifulSoup
import os
from concurrent.futures import ThreadPoolExecutor
# 设置目标URL
base_url = 'https://www.ncei.noaa.gov/data/land-normalized-difference-vegetation-index/access/'
# 创建保存文件的路径
save_path = "G:/2024codes/"
if not os.path.exists(save_path):
os.makedirs(save_path)
# 定义下载函数
def download_file(file_url):
file_name = os.path.join(save_path, file_url.split('/')[-1])
print(f"Downloading from {file_url} ...")
try:
response = requests.get(file_url, stream=True)
response.raise_for_status() # 检查是否有HTTP错误
with open(file_name, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192): # 分块下载
f.write(chunk)
print(f"{file_name} downloaded successfully.")
except requests.exceptions.HTTPError as err:
print(f"HTTP error occurred: {err}")
except Exception as err:
print(f"Error occurred: {err}")
# 递归函数获取所有的文件链接
def get_file_links(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
url_list = soup.find_all('a', href=True)
file_links = []
for link in url_list:
href = link['href']
if href.endswith('/'): # 如果是目录,递归访问
subdir_url = url + href
file_links.extend(get_file_links(subdir_url))
elif href.endswith('.nc'): # 如果是文件,添加到列表
file_url = url + href
file_links.append(file_url)
return file_links
# 获取所有文件链接
file_links = get_file_links(base_url)
# 并行下载文件
with ThreadPoolExecutor(max_workers=5) as executor: # 可以根据网络条件调整max_workers
executor.map(download_file, file_links)
print('Download finished')
图3 下载界面
往期回顾
·全球植被数据
推文中有误的地方,随时欢迎读者批评指正,如大家有想了解或补充的数据集也可以私信我们,因公众号留言回复功能有限,欢迎大家通过知乎平台(链接见文末阅读原文)与我们交流讨论~
编辑: 何坤龙 |校稿:Hydro90编委团