资讯动态

NASA Earthdata下载ASTER L2地表温度数据:shp文件圈定与wget批量下载实战

发布时间:2026/9/20 16:26:29 来源:尧图企业网站定制
1. 为什么地表温度数据值得你花时间折腾做遥感或者地理信息相关工作的朋友大概率都绕不开一个需求拿到某一区域、某一时间段的地表温度数据。不管是做城市热岛效应分析、农业旱情监测、还是写论文时需要一组真实可靠的温度栅格地表温度数据都是硬通货。而 ASTER L2 地表温度产品在这个圈子里算是性价比极高的选择——免费、空间分辨率够用90米、时间跨度长从2000年至今关键是 NASA Earthdata 平台直接对外开放不需要任何特殊手段就能下载。但问题来了。我第一次去 NASA Earthdata 下载 ASTER L2 数据的时候花了整整一个下午才搞明白整个流程。不是因为它有多复杂而是因为它的交互逻辑和国内常见的数据平台完全不一样。你需要在多个页面之间跳转、需要理解什么是 Earthdata Login、需要知道怎么用 shp 文件圈定范围、还需要搞清楚 ASTER L2 产品到底有哪些参数可选。网上能找到的教程要么太老、要么跳步太多对新手极其不友好。这篇内容就是把我自己踩过的坑、验证过的流程、以及一些能显著提升效率的小技巧全部整理出来。从账号注册到数据筛选从 shp 文件拖拽到批量下载每一步都会讲清楚为什么这么做、怎么做最省事。适合完全没有接触过 NASA Earthdata 的朋友也适合之前下载过但觉得流程太繁琐想优化的人。核心关键词就几个NASA Earthdata、ASTER L2、shp 文件、地表温度数据、下载。你把这几个词搞定了整个流程就通了。2. 下载之前的准备工作账号、工具与基础知识2.1 Earthdata 账号注册与登录要点NASA Earthdata 的所有数据下载都依赖一个统一的账号体系叫 Earthdata Login。你可以把它理解成一把万能钥匙注册一次之后所有 NASA 旗下的数据平台都能用。注册地址直接在搜索引擎里搜“Earthdata Login”就能找到这里不贴具体链接避免失效。注册的时候有几个细节需要注意。第一邮箱建议用 Gmail 或者 Outlook国内部分邮箱可能会收不到验证邮件。第二用户名和密码要记牢后面在下载工具里配置的时候会反复用到。第三注册完成后不需要任何审核立刻就能用。注意Earthdata Login 的密码有复杂度要求必须包含大小写字母、数字和特殊字符长度至少8位。我见过不少人卡在这一步反复试。登录之后你会看到一个个人主页里面有一个“Applications”选项卡。这里需要添加一个授权应用通常选择“NASA GESDISC DATA ARCHIVE”就行。这一步很多人会忽略但不添加的话后面在下载数据时会被拒绝访问。添加授权的操作很简单点“Approve”按钮即可。2.2 需要提前装好的工具清单下载 ASTER L2 数据光有浏览器是不够的。根据我的经验下面这几个工具最好提前准备好浏览器Chrome 或 Edge 都可以主要是为了用 Earthdata Search 的图形界面。不建议用 IE兼容性太差。解压工具7-Zip 或 WinRARASTER 数据下载下来是 HDF 格式有时候会打包成 zip。GIS 软件ArcGIS 或者 QGIS用来查看 shp 文件和后续处理数据。QGIS 免费功能完全够用。下载工具wget 或者 curl批量下载的时候比浏览器手动点快十倍。Windows 用户可以用 wget for Windows或者直接用 PowerShell 里的 Invoke-WebRequest。文本编辑器Notepad 或者 VS Code用来编辑下载链接列表。这些工具都不难装但提前准备好能省掉很多中途折腾的时间。尤其是 wget如果你要下载多个年份的数据没有它你会点到手软。2.3 ASTER L2 地表温度产品的基本认知在开始下载之前有必要花两分钟搞清楚 ASTER L2 到底是什么。ASTER 是搭载在 Terra 卫星上的一个传感器L2 代表 Level 2 产品也就是经过大气校正后的地表参数数据。地表温度产品对应的产品编号是 AST_08全称是 ASTER Level 2 Surface Kinetic Temperature。这个产品的核心参数如下参数项说明空间分辨率90米时间范围2000年3月至今覆盖范围全球陆地数据格式HDF-EOS温度单位开尔文精度约1.5K90米分辨率意味着什么Sentinel-2 是10米Landsat 是30米热红外是100米ASTER 的90米在热红外数据里算是中等偏上。它的优势在于时间跨度长从2000年到现在一直有数据做长时间序列分析非常合适。提示ASTER 数据不是每天都有它是按需拍摄的。Terra 卫星过境时间大约是当地时间上午10:30左右所以数据都是白天的。3. 核心流程拆解从搜索到下载的完整链路3.1 用 Earthdata Search 圈定目标区域打开 Earthdata Search 之后你会看到一个类似在线地图的界面。左上角有一个搜索框可以直接输入“ASTER L2 Surface Kinetic Temperature”或者产品编号“AST_08”。搜索之后左侧会出现一系列数据集找到对应的那个点进去。接下来是最关键的一步圈定你的研究区域。Earthdata Search 提供了几种方式矩形框选直接在地图上拖拽一个矩形适合快速预览。多边形绘制手动点选多个顶点适合不规则区域。上传 shp 文件这是最精准的方式也是这篇内容重点要讲的。为什么推荐用 shp 文件因为手动绘制多边形很难精确匹配你的研究区边界尤其是当你的研究区是一个行政区划或者流域边界时手动画几乎不可能准确。而 shp 文件本身就是矢量边界直接上传就能精确圈定。3.2 shp 文件拖拽技巧与常见报错处理Earthdata Search 支持直接拖拽 shp 文件到地图区域。但这里有几个坑我几乎每次用都会遇到至少一个坑一shp 文件必须打包成 zip。你不能只拖一个 .shp 文件进去必须把 .shp、.shx、.dbf、.prj 这几个文件一起压缩成 zip然后拖拽整个 zip 文件。少了任何一个上传都会失败。坑二坐标系问题。Earthdata Search 使用的是 WGS84 地理坐标系。如果你的 shp 文件是投影坐标系比如 UTM上传后位置会偏移。解决办法是在 ArcGIS 或 QGIS 里先做一次投影转换把 shp 转成 WGS84。坑三文件大小限制。shp 文件压缩后最好不要超过 10MB太大的话上传会很慢甚至超时。如果你的研究区特别大建议先做一次简化或者分割。坑四中文字段名。shp 文件的属性表里如果有中文字段名上传时可能会报编码错误。建议在导出 shp 之前把字段名改成英文。注意拖拽的时候要拖到地图区域的正中间拖到边缘有时候不会触发上传。我试过好几次拖到边角没反应还以为文件有问题。上传成功后地图上会自动高亮你的研究区范围左侧的数据列表也会同步过滤只显示与你研究区有交集的数据。这一步做完你就成功了一半。3.3 筛选时间、云量与数据质量圈定区域之后接下来要筛选时间和数据质量。ASTER L2 数据的时间筛选很直观直接选起止日期就行。但云量筛选需要特别注意。ASTER 数据有一个“Cloud Cover”字段范围是0到100。理论上云量越低越好但实际做地表温度的时候云量低于10%的数据就已经很少了。我的经验是如果做城市热岛云量可以放宽到20%如果做长时间序列云量可以放宽到30%然后后期再做云掩膜处理。另外还有一个“Day/Night”标志。ASTER 地表温度产品有白天和夜间两种做热岛分析一般用白天数据做地表辐射收支可能两种都要。筛选的时候记得勾选你需要的类型。数据质量方面ASTER L2 有一个 QA 波段里面记录了每个像元的精度信息。下载之后可以用这个波段做质量控制把精度差的像元剔除掉。这个在筛选阶段不用管下载后处理时再考虑。3.4 批量下载与 wget 配置实战筛选完之后你会看到一个数据列表每个数据条目右边都有一个下载按钮。如果只有几条数据手动点也行。但如果你要下载几十条甚至上百条手动点就是自虐。正确做法是用 wget 批量下载。具体步骤如下第一步在 Earthdata Search 的结果页面点击“Download All”按钮然后选择“Download Links List”。这会生成一个文本文件里面包含所有数据的下载链接。第二步打开这个文本文件你会看到每一行是一个链接。但这些链接不能直接用 wget 下载因为需要 Earthdata Login 的认证。第三步配置 wget 的认证信息。在 wget 的配置文件通常是 .wgetrc里添加以下内容http_user 你的Earthdata用户名 http_password 你的Earthdata密码或者直接在命令行里指定wget --user你的用户名 --password你的密码 -i download_links.txt第四步运行命令wget 会自动依次下载所有文件。下载速度取决于你的网络一般每个文件几十MB几百个文件大概需要几个小时。提示wget 支持断点续传如果中途断了重新运行同样的命令就行已经下载完的文件会自动跳过。4. 数据下载后的处理与验证4.1 HDF 文件结构解析下载下来的 ASTER L2 数据是 HDF-EOS 格式文件名通常长这样AST_08_00307242001081534_20200101123456.hdf。文件名里包含了产品编号、版本号、日期和时间信息。用 QGIS 或者 ArcGIS 打开 HDF 文件时你会看到多个子数据集。AST_08 产品主要包含以下几个Surface Kinetic Temperature地表动力学温度这就是我们要的核心数据。Quality Assurance质量保证波段记录每个像元的精度。Cloud Mask云掩膜标记哪些像元被云覆盖。View Angle观测角度信息。在 QGIS 里打开 HDF 需要安装 HDF4 或 HDF5 驱动ArcGIS 则原生支持。如果你用 Python可以用gdal或者rasterio库读取。4.2 温度单位转换与可视化ASTER L2 的温度单位是开尔文做分析之前通常要转成摄氏度。转换公式很简单celsius kelvin - 273.15用 Python 批量转换的代码大概是这样import rasterio import numpy as np with rasterio.open(AST_08_temp.tif) as src: kelvin src.read(1) celsius kelvin - 273.15 celsius[celsius -100] np.nan # 剔除异常值 profile src.profile profile.update(dtyperasterio.float32, nodatanp.nan) with rasterio.open(AST_08_temp_celsius.tif, w, **profile) as dst: dst.write(celsius.astype(rasterio.float32), 1)可视化的时候建议用色带映射把温度范围拉伸到实际数据的2%到98%分位数之间这样能突出空间差异。QGIS 里直接用“单波段伪彩色”渲染就行ArcGIS 里用“拉伸”功能。4.3 用 shp 文件做掩膜提取下载的时候用 shp 圈定了范围但下载下来的数据是整个景的包含了你研究区之外的部分。这时候需要用 shp 文件做掩膜提取把研究区之外的部分裁掉。在 ArcGIS 里用“Extract by Mask”工具输入栅格和 shp 文件输出就是裁剪后的结果。在 QGIS 里用“Clip Raster by Mask Layer”工具操作类似。Python 里可以用rasterio.mask模块import fiona import rasterio from rasterio.mask import mask with fiona.open(study_area.shp, r) as shapefile: shapes [feature[geometry] for feature in shapefile] with rasterio.open(AST_08_temp_celsius.tif) as src: out_image, out_transform mask(src, shapes, cropTrue) out_meta src.meta.copy() out_meta.update({ driver: GTiff, height: out_image.shape[1], width: out_image.shape[2], transform: out_transform }) with rasterio.open(AST_08_temp_clipped.tif, w, **out_meta) as dst: dst.write(out_image)这一步做完你就得到了一个干净的研究区地表温度栅格可以直接拿去做统计分析或者出图了。5. 常见问题与排查技巧实录5.1 下载链接失效与重新获取Earthdata 的下载链接是有时效性的一般生成后24小时内有效。如果你今天生成了链接列表明天才想起来下载大概率会报403错误。解决办法很简单重新去 Earthdata Search 生成一次链接列表。所以我的建议是生成链接后尽快下载不要拖。5.2 认证失败与密码错误wget 下载时如果提示“Authentication failed”通常是以下几个原因用户名或密码输错了。注意大小写Earthdata 的密码是区分大小写的。没有在 Earthdata Login 里授权“NASA GESDISC DATA ARCHIVE”应用。回到个人主页的 Applications 选项卡检查一下。密码里包含特殊字符在命令行里被转义了。解决办法是把密码用单引号括起来或者用配置文件的方式。5.3 shp 文件上传后位置偏移这个问题我遇到过好几次根本原因就是坐标系不匹配。Earthdata Search 用的是 WGS84如果你的 shp 是 CGCS2000 或者 UTM上传后就会偏移。解决办法是在 ArcGIS 里用“Project”工具或者在 QGIS 里用“Save As”并选择 WGS84 坐标系重新导出一次 shp。5.4 数据下载后打不开或显示异常有时候下载下来的 HDF 文件在 QGIS 里打不开或者打开后是一片黑。这通常是因为文件下载不完整。检查文件大小如果明显小于正常值重新下载。QGIS 缺少 HDF 驱动。安装gdal-hdf4或gdal-hdf5插件。数据本身有问题。极少数情况下ASTER 数据会有质量问题换一个日期的数据试试。5.5 常见问题速查表问题现象可能原因解决办法上传 shp 无反应文件未打包成 zip将 shp/shx/dbf/prj 一起压缩上传后位置偏移坐标系不是 WGS84重新投影后导出wget 报 403链接过期或未授权重新生成链接检查授权HDF 打不开缺少驱动或文件损坏安装驱动重新下载温度值异常未做单位转换或未剔除异常开尔文转摄氏度剔除极端值提示如果以上方法都试过了还是不行可以去 NASA Earthdata 的官方论坛搜一下大部分问题都有人遇到过。6. 一些能显著提升效率的实操心得6.1 用 Python 脚本自动化整个流程如果你需要定期下载 ASTER 数据手动操作太浪费时间。我后来写了一个 Python 脚本用earthaccess库自动搜索和下载。这个库封装了 Earthdata 的 API几行代码就能搞定import earthaccess earthaccess.login() results earthaccess.search_data( short_nameAST_08, bounding_box(116.0, 39.0, 117.0, 40.0), temporal(2020-01-01, 2020-12-31), cloud_cover(0, 20) ) earthaccess.download(results, ./data)这个脚本的好处是你可以把它放到定时任务里每个月自动下载最新数据。对于做长时间序列分析的人来说能省下大量重复劳动。6.2 数据命名与归档建议下载下来的文件名是一串无规律的字符时间长了根本分不清哪个是哪个。我的做法是下载后立刻重命名格式统一为“ASTER_LST_日期_区域.tif”。比如“ASTER_LST_20200815_Beijing.tif”。这样一眼就能看出数据内容后续处理的时候不容易搞混。归档的时候按年份建文件夹每个年份下面再按月份分子文件夹。虽然看起来有点繁琐但数据量大了之后这种结构能帮你快速定位。6.3 云掩膜的正确使用方式ASTER L2 自带的云掩膜波段不是万能的它有时候会把一些薄云或者云边缘漏掉。我的经验是除了用自带的云掩膜还可以结合 QA 波段做二次筛选。具体做法是先把 QA 波段里精度低于某个阈值的像元标记出来再和云掩膜做交集这样能剔除掉大部分不可靠的像元。另外如果你做的是城市热岛分析建筑物和道路的温度本身就和周边不一样云掩膜可能会误判。这种情况下建议手动检查几个典型区域确认云掩膜的效果。6.4 批量处理时的内存管理如果你要处理几十景 ASTER 数据用 Python 批量读取的时候要注意内存。HDF 文件虽然不大但一次性全部读进来还是会爆内存。我的做法是用rasterio的窗口读取功能每次只读研究区范围内的像元处理完就释放。这样即使处理上百景数据内存占用也能控制在合理范围内。with rasterio.open(AST_08_temp.tif) as src: window rasterio.windows.from_bounds( left, bottom, right, top, src.transform ) data src.read(1, windowwindow) # 处理 data # 处理完后 data 会被自动回收这个技巧在处理大区域、长时间序列的时候特别有用。我试过用这种方法处理200景数据全程内存占用没超过2GB。6.5 关于数据版本的选择ASTER L2 产品有多个版本目前最新的是 Version 003。不同版本之间的差异主要在定标精度和云掩膜算法上。如果你做的是精度要求不高的宏观分析用哪个版本都行。但如果做定量遥感建议统一用最新版本避免版本差异带来的系统误差。另外ASTER 数据从2000年到现在早期数据的质量可能不如后期。如果你做长时间序列建议先检查一下早期数据的 QA 波段把质量太差的年份剔除掉。6.6 下载速度优化NASA 的服务器在国外下载速度有时候不太稳定。我的经验是用 wget 的时候加上-c参数开启断点续传加上--tries0让它无限重试。另外如果你有多个文件要下载可以用-i参数指定链接列表wget 会依次下载比手动一个个点快得多。如果下载速度特别慢可以试试在凌晨或者早上操作那个时间段网络相对通畅。我实测下来凌晨下载的速度能比白天快两三倍。6.7 数据引用与版权说明ASTER 数据是免费的但使用的时候需要正确引用。NASA 官方推荐的引用格式是NASA LP DAAC. ASTER Level 2 Surface Kinetic Temperature. Version 003. NASA EOSDIS Land Processes DAAC. Accessed [日期].写论文或者报告的时候记得加上这个引用这是基本的学术规范。另外ASTER 数据的使用没有特殊限制商业用途也可以但建议在成果中注明数据来源。7. 从下载到应用一个完整的案例复盘7.1 案例背景与数据需求去年我帮一个做城市热岛研究的团队处理过一批数据他们的需求是北京市五环内2015年到2020年每年夏季6月到8月的地表温度数据用于分析热岛强度的年际变化。这个需求看起来简单但实际操作起来有几个难点第一时间跨度6年数据量不小第二研究区是五环内边界不规则必须用 shp 文件圈定第三夏季云量高需要筛选云量低的数据。7.2 操作流程与关键决策第一步准备北京市五环的 shp 文件。这个文件是从 OpenStreetMap 下载的坐标系是 WGS84直接压缩成 zip 就能用。第二步在 Earthdata Search 里上传 shp圈定研究区。然后设置时间范围为2015年到2020年每年6月到8月云量设置为0到20%。第三步筛选结果出来后发现2015年和2016年的数据比较少因为那两年 ASTER 的拍摄频率降低了。最后实际下载了大约40景数据。第四步用 wget 批量下载大概花了3个小时。下载完成后用 Python 脚本批量做单位转换和掩膜提取又花了1个小时。第五步把处理好的数据导入 ArcGIS做统计分析。最终发现2015年到2020年北京五环内的地表温度平均值上升了约1.2摄氏度热岛强度在2018年达到峰值。7.3 踩过的坑与最终解决方案这个案例里最大的坑是 shp 文件上传。第一次上传的时候shp 文件没有压缩直接拖进去没反应。后来压缩成 zip 再拖又提示坐标系不匹配。检查后发现这个 shp 文件是从某个国内平台下载的坐标系是 CGCS2000。用 QGIS 重新投影成 WGS84 之后上传就成功了。另一个坑是云量筛选。一开始把云量设置为0到10%结果2015年和2016年几乎没有数据。后来放宽到20%数据量才够用。所以云量阈值不要设得太死要根据实际数据情况灵活调整。7.4 最终成果与数据验证处理完的数据用地面气象站的数据做了交叉验证发现 ASTER 地表温度和气象站气温的相关性在0.85左右精度可以接受。当然地表温度和气温本身就有差异这个相关性已经算不错了。最终出图的时候用 QGIS 做了温度分级渲染从蓝色到红色渐变热岛核心区一目了然。这个图后来用在了他们的研究报告里效果很好。8. 关于 ASTER L2 数据下载这件事我的个人体会从第一次折腾一下午到现在我已经下载过几百景 ASTER 数据了。回过头来看整个流程其实并不复杂核心就是三件事账号注册、shp 圈定、wget 批量下载。但每一件事都有细节细节没处理好就会卡住。我最想分享的经验是不要怕试错。NASA Earthdata 的界面虽然看起来有点老旧但它的容错性其实很好。你上传错了 shp重新传就行下载链接过期了重新生成就行。没有什么操作是不可逆的。我见过很多人因为怕出错每一步都小心翼翼反而浪费了更多时间。另外如果你打算长期使用 ASTER 数据强烈建议花点时间学一下 Python 的earthaccess库。它能帮你省掉大量重复操作尤其是做长时间序列分析的时候自动化脚本的优势非常明显。最后再分享一个小技巧下载数据之前先在 Earthdata Search 里用“Preview”功能看一下数据的大致情况。如果预览图里研究区被云遮得严严实实那就别下载了换一个日期。这个习惯能帮你省掉很多下载后才发现数据不可用的尴尬。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价