FIRMS火点数据下载与VIIRS/MODIS产品对比:从原理到实践

发布时间:2026/10/5 1:35:15
FIRMS火点数据下载与VIIRS/MODIS产品对比:从原理到实践
1. 先说清楚FIRMS到底是个什么东西如果你是做生态环境、林业、大气科学或者农业遥感相关方向的大概率已经听过火点数据这个词。FIRMSFire Information for Resource Management System是NASA下属的一套火点信息分发系统它把MODIS和VIIRS传感器探测到的主动火点active fire做成标准产品往外界免费推送。说白了你不需要自己下载原始卫星数据、自己做辐射定标、自己写探测算法只要去FIRMS网站上框一个区域、选一个时间范围就能拿到一份带经纬度、亮温、辐射功率的火点点位表。这就是做遥感数据下载时一条非常省事的路径。我在刚开始接触火点数据时第一反应是这东西直接下载L1B数据自己烧算法不是更酷吗。后来实际做起来才发现火点探测看似简单坑多到能把你埋了云像元的干扰、地表高温点比如工业热源、冶炼厂的误报、非朗伯体地表带来的角度效应每一项都得花大量时间调参。而FIRMS的价值就在于它背后跑的是NASA官方的火点算法经过多年的全球验证误报率控制在了一个比较合理的范围内。对于大多数研究者来说直接使用这套成熟产品远比从零复现一套算法要划算。另外一个容易被忽视的点是FIRMS不只是提供当前时刻的实时火点。它还保留了完整的归档数据历史火点可以一直追溯到2000年MODIS和2012年VIIRS。这意味着你可以拿它做几十年的长时序分析比如判断某片区域的野火季节性规律、评估政策干预前后火点数量的变化、或者把火点数据跟气象再分析资料做相关性分析。这些应用场景都建立在数据可回溯这个基础之上而FIRMS恰好把这件事做得很到位。对于刚入门遥感的学生而言FIRMS还是理解卫星如何观测地表动态变化的绝佳样本你用到的每一个火点像元背后都有传感器波段设计、大气传输、辐射传输模型、上下文判别算法等一系列知识。所以这篇文章我会从数据产品本身讲起再讲下载和字段含义最后聊几个我实操中遇到的坑和后续处理思路。全文围绕VIIRS、MODIS、FIRM火点数据这条主线展开争取让你看完就能上手取数。2. VIIRS和MODIS火点产品先搞懂差异再选产品2.1 传感器参数对比FIRMS里最常见的两类火点产品分别来自MODIS和VIIRS。MODIS搭载在Terra和Aqua两颗卫星上Terra上午过境、Aqua下午过境所以一天最多能覆盖4次过境观测VIIRS搭载在Suomi NPP和NOAA-20/NOAA-21这几颗下一代极轨卫星上同样存在多次过境的机会。这里有一个很多人没意识到的问题极轨卫星的一天多次并不是每一点都能被反复扫到越靠近赤道的地方相邻轨道之间的重叠越少实际一天能有效观测某一特定地点的次数会打折。FIRMS给出的火点产品是多个卫星的合并输出这一点对理解数据的时空完整性特别重要。从空间分辨率上看MODIS的火点像素在1公里左右VIIRS的I波段也就是成像波段能做到375米。不要小看这600多米的差距。一个正在燃烧的草原火火线可能只有几十米宽MODIS那1公里的像素很可能只被部分填充导致亮温抬高得不够明显甚至被漏检而VIIRS的375米像素能更精准地捕捉到火线的辐射信号对小规模火灾的识别能力要强得多。实际上NASA在VIIRS 375米产品的文档里就明确说过它在火灾检测能力上比MODIS产品有显著提升尤其是在小火和快速蔓延火情方面。从光谱通道设计来看MODIS有专门的4微米中红外通道和11微米热红外通道这是火点探测的核心波段。VIIRS虽然没有完全复制MODIS的多光谱设计但它设置了三个专门的火点探测通道M7、M10、M11配合I4等成像通道在高温异常点识别上做了针对性优化。这就好比两个人都有红外热成像仪一个用的是通用镜头另一个在热源频段上加了增强滤镜后者对正在着火这类特征的感知自然更敏锐。2.2 产品线选择参考下表是我根据实测经验整理的产品对比方便你在下载前快速判断选哪个对比项MODIS火点VIIRS 375m火点VIIRS 750m火点空间分辨率1km375m750m来源传感器MODISTerra/AquaVIIRSSuomi NPP/NOAA-20等VIIRS时间跨度2000年至今2012年至今2012年至今最小可探测火点约几十千瓦量级更小可捕捉草原小火介于两者之间适合场景长时序宏观分析精细化火点排查全球尺度快速监测如果你的研究目标是做2000—2020年这种跨二十年的长时序趋势那MODIS产品几乎是唯一选择VIIRS虽然先进但时间基线短了十二年历史序列接不上。如果你的研究目标是识别某一次具体火灾事件的过火范围、火线位置或者要跟高分辨率卫星影像做对比验证那VIIRS 375米产品优先。有人会问既然VIIRS数据更好能不能用近几年的VIIRS数据和前几年的MODIS数据拼在一起做时间序列理论上可以但需要做系统的交叉验证和偏差校正因为两者在探测灵敏度、像素尺度、算法阈值上都存在差异直接拼接会在统计结果里引入虚假的断点。如果你要发文章审稿人大概率会追问这个问题。3. 火点是怎么被看见的算法原理不搞懂数据用不好3.1 中红外波段的火点信号特征很多人下载火点数据时只是把它当成一个送上门来的点图层完全不管这些点是怎么来的。但如果不懂原理你很难解释为什么有些明显着火的地方没火点而有些火点看起来又很离谱。火点探测的核心逻辑利用了火点和背景地物在中红外波段的辐射差异。根据维恩位移定律物体温度越高辐射峰值波长越短。常温地表约300K的辐射峰值在10微米附近而正在燃烧的火场温度通常在600—1200K之间辐射峰值落在3—5微米中红外区间。所以传感器在中红外通道MODIS的4微米通道、VIIRS的M7通道接收到的辐射亮度对高温火点极其敏感。只要火点在一个像素里的面积占比达到千分之几就可能让该像素的中红外亮温明显高于周围背景。这就是火点能被卫星发现的物理基础。然而中红外通道在白天会混入太阳反射光。这就引出一个关键问题白天看到的高温点到底是火还是太阳光在高反射地物比如裸土、金属屋顶、水面镜面反射上的耀斑为了把火点与这些干扰区分开算法必须结合实际亮温、亮温差和背景统计量来做综合判断。3.2 上下文法不是看单点而是看它与邻居的差异NASA的成熟火点算法并不是简单设一个绝对阈值超过多少K就是火而是采用上下文法。思路大致是先以候选像元为中心开一个窗口比如MODIS算法用大约10公里范围的窗口统计窗口内非火像元的中红外亮温、热红外亮温以及两者之差的均值和标准差然后比较候选像元与背景统计量的偏离程度。偏离得越厉害越有可能是火点。这个跟邻居比的思路抵消了很多共模误差。比如夏季的城市下垫面整体温度就高如果只看绝对亮温可能把大片城市热岛都判成火点但上下文法比较的是这个像元相对于周围像元的异常程度城市像元与周围像元温度接近偏离量小就不容易被判为火。同理某些高海拔裸岩区因太阳辐射强导致中红外亮温偏高只要周围背景也普遍偏高候选像元就不会被单独拎出来。这就是上下文法最聪明的地方——它在空间域上做了一次高通滤波凸显的是局部异常而非绝对高温。当然上下文法也有它的盲区。当火点面积特别大大到把整个背景窗口都填满时背景本身就已经被污染了统计学上的偏离度会失真。此外在火点密集分布的区域背景窗口里混入大量火像元会让均值被抬高导致真正的火点反而通不过阈值检验。NASA的算法在遇到这种情况时往往把扩展窗口作为备选方案但效果依然有限。3.3 白天/夜晚差异与误报来源我自己的经验是处理白天火点数据时要尤其小心夜晚的数据干净得多。夜晚没有太阳反射干扰唯一的高温源基本就是火点本身除非有炼钢炉、火山喷发这类人工/自然热异常源。所以FIRMS的可靠性报告中夜晚火点的置信度通常比白天高。白天算法必须在保留小火和排除太阳耀斑之间做平衡漏检率与误报率同高。这也是为什么同一场火白天和夜晚过境扫出来的火点数量会有肉眼可见的差异。工业热源也是一个比较常见的误报源大型冶炼厂、钢铁厂、油气田燃烧塔都会在4微米波段产生类似火点的信号。FIRMS产品里默认把这部分点位标成火点并不会帮你剔除。我在做城市周边火点分析时就曾踩过这个坑某钢铁厂附近常年有零星火点乍一看像有人在偷偷烧垃圾实际全是炼钢炉的持续信号。如果你关注的是植被火建议后续叠加土地覆盖数据把建成区、工业用地上的火点单独拎出来复核。4. 实操FIRMS下载的完整链路从注册到拿数据4.1 账号注册与访问层级FIRMS的数据下载入口经历了多次改版现在常规路径是进入NASA FIRMS官网用地球数据账号Earthdata Login登录后使用。如果你没有这个账号会被拦在下载界面之外。注册流程不复杂填邮箱、姓名、机构设置密码然后到邮箱里点激活链接就行。唯一需要留神的是机构名建议如实填写学校或公司名NASA对商业用途有使用条款限制学术用途基本畅通无阻。登录后你会在页面上看到几个模块互动地图、下载火点数据Fire Map、订阅邮件告警Email Alerts等。日常取数用得最多的是互动地图或直接下载页面。需要说明的是页面功能每个版本都在微调我以前用过的一版是可以直接在图层列表里勾选VIIRS 375m / MODIS / 两者的组合选好后地图上立刻刷出当前时段的火点现在新版则把下载功能收拢到了Download标签页里交互略有变化。如果界面跟你看到的教程不符别急重点是把产品、时间、区域、格式这四个维度找对。4.2 选择产品、时间和区域范围选产品时FIRMS会同时提供MODIS和VIIRS 375m两个选项有些版本还会出现VIIRS 750m。注意这里的产品选项和地图图层的选项通常是联动的你在地图里勾了MODIS下载时默认就是MODIS火点。如果你既想拿MODIS又想拿VIIRS做对比建议分开两次下载避免混在一起后字段前缀不一致导致处理时出问题。时间选择是另一个容易出错的地方。FIRMS下载界面一般会让你选起止日期但它的日期对应的是卫星过境的UTC时间。如果你在国内做研究北京时间比UTC快8小时一定要想清楚你要的某一天是UTC的一天还是当地时间的一天。比如你想分析北京时间的8月1日全天火点实际要下载UTC时间7月31日16:00至8月1日16:00的数据如果直接选UTC的8月1日00:00—23:59你得到的只是北京时间的8月1日早上8点到8月2日早上7点时间窗整整错位了8小时。我在给师弟师妹讲这个细节时几乎每个人都会踩一次。区域范围的话你可以在互动地图上画矩形框、多边形框也可以直接上传一个GeoJSON/Shapefile来做裁剪。画框取数的速度最快但如果你的研究区形状很复杂画一个大外接矩形会引入大量无关区域后续数据处理时点多到让你崩溃。这种情况下建议提前准备一个研究区的矢量边界上传后在下载界面选择裁剪至已上传区域拿到的数据会严格按照边界内的点位输出省去很多筛点的功夫。4.3 格式选择CSV、SHP、KML分别怎么用FIRMS常用的下载格式有CSV、Shapefile、KML、GeoJSON几种。它们各自适配的工作流不太一样CSV最普适任何编程语言都能读适合后续用Python/R做统计分析和建模。但CSV里只有经纬度和若干属性没有几何边界。Shapefile适合GIS用户属性表齐全能直接拖进QGIS/ArcGIS做符号化和空间分析。缺点是文件名会被拆分成多个附属文件传输时容易漏掉。GeoJSONWeb GIS和PythonGeoPandas生态支持得最好JSON结构直观调试方便。KML主要适配Google Earth适合快速查看和汇报展示不太适合严谨分析。我个人的习惯是要分析时选CSV要出图时选SHP或GeoJSONKML几乎不用。下载到的文件通常是一个压缩包里面除了数据文件还有README或者说明文档别把说明文档删了里面有产品版本号和算法版本信息写论文方法部分时用得上。4.4 批量获取历史数据的思路如果只是想下一个时段的数据交互页面的下载按钮就够用。但当你做长时序研究比如2015—2024年西南地区火点动态手动一个月一个月地下载根本不现实。FIRMS提供了命令行/脚本访问的方式本质是构造一个带参数的数据请求URL指定数据源、时间范围、区域边界和格式然后批量拉取。网上有不少基于Python的FIRMS下载脚本原理都是拼URL 带token请求返回一个下载链接。建议你在交互页面上下载完第一份数据后立刻开一个脚本尝试访问API把早期的手工劳动替换成自动化流程。这个步骤看起来没什么技术含量但在几十个时相的批量任务里能省下几天的重复劳动。5. 数据下回来之后字段拆解与出图实践5.1 标准字段逐项拆解FIRMS火点数据的CSV里字段比你想象的要少但每项的含金量都挺高。我以VIIRS 375米产品的常见字段为例逐个说字段名含义我的使用建议latitude / longitude火点中心经纬度WGS84坐标直接可视化作散点bright_ti4 / bright_ti54微米/11微米亮温开尔文判断火点强度与可靠性frp火辐射功率MW量化燃烧强度做排放估算必须scan / track像元在地面扫描和轨向方向的尺度米检查边缘像元的变形程度satellite来源卫星名如NPP、NOAA-20拆分不同卫星过境的数据confidence置信度low/nominal/high做严格分析时只保留highdaynight白天/夜晚标识分成两个子集分析避免混合偏差很多人拿到CSV后只看经纬度和亮温忽略scan/track和satellite这两个字段。但如果你想排查某条轨道边缘的疑似火点scan/track能帮上大忙卫星扫描边缘的像元几何变形严重同样一个火源在边缘像元里测到的亮温可能偏低甚至被算法漏掉这个效应在MODIS产品里比VIIRS更明显。satellite字段则有助于理解同一区域在不同卫星过境时的覆盖差异若某区域某时段只有一条卫星轨迹覆盖那火点漏检的风险就要比四颗卫星都扫过的情况大得多。5.2 FRP火辐射功率到底怎么用FRPFire Radiative Power是火点产品里一个很有用的定量参数单位是兆瓦MW。它代表火点像元在观测时刻的辐射功率可以简单理解为这场火烧得多旺。虽然FRP是一个瞬时值受云、气溶胶、观测角度等因素影响但在统计意义上它与燃烧的生物质总量和碳排放速率存在较强的相关性。NASA的MODIS火点产品和VIIRS产品都提供FRPVIIRS 375米产品的FRP算法还专门做了调整对小火的FRP估算比MODIS更敏感。在应用FRP时要注意一个问题不要在单像元维度上做过度的数值解读。同一个火场的FRP会因为卫星过境时刻、云遮挡、风向变化而剧烈波动单点值没什么代表性。更合理的做法是把一段时间比如一个月内研究区域内所有火点的FRP累加起来得到该区域的火辐射能量FRE再拿它与碳排放模型结合。这样做的物理意义是燃烧释放的能量在统计平均上与燃烧面积、生物质消耗量高度相关能帮你从有点火的点位升级到大概烧了多少生物量的计量层面。5.3 用QGIS做一张基础火点分布图拿到CSV以后最快能看到效果的方式是用QGIS拖进去出图。QGIS的添加图层→添加分隔文本图层功能可以直接读取CSV指定X字段为经度、Y字段为纬度坐标参考系选WGS84EPSG:4326点就能出现在地图上。符号化时我通常用按属性分类来区分daynight或confidence用点大小或颜色映射FRP这样一张图就能同时呈现火点的空间分布、强度差异和可信度分层。有一个出图时容易忽略的细节FIRMS给的是WGS84经纬度坐标如果你要叠加的是Albers等面积投影的专题底图比如全国土地覆盖数据必须先把火点图层做投影转换否则靠近高纬度地区的点位位置会有肉眼可见的偏移。转换方法不复杂在QGIS里右键图层→导出→保存为→指定目标CRS例如EPSG:32650或你研究区的UTM带号。别小看这一步高纬度地区用Web Mercator直接叠图火点分布会让你怀疑数据是不是下载错了。6. 我在这套数据上踩过的坑和解决办法6.1 CSV乱码与坐标错位FIRMS下载的CSV文件默认是UTF-8编码但Windows环境下用Excel直接双击打开时中文表头或部分字段可能出现乱码。这不是数据坏了而是Excel默认用GBK解码UTF-8导致的。解决方法是用Notepad或VS Code打开文件另存为带BOM的UTF-8或者在Excel里通过数据→从文本/CSV导入指定UTF-8编码。处理完后记得检查一下经纬度是否存在异常值比如经度跑到200以上那通常是文件被某些软件错误拆分或行尾符被替换导致的。6.2 为什么我的研究区下载不到火点这是新手问得最多的问题之一。排除研究区本身确实没着火的情况最常见的原因是时间分辨率与重访周期的错配。极轨卫星不是静止卫星一天也就扫过某地几次。如果一场火持续时间很短比如秸秆焚烧几个小时就灭了刚好落在两次过境的间隙里——那这次燃烧事件在卫星数据里就不存在。另外FIRMS的MODIS产品每日合成本身也包含可能因云遮挡而无数据的时段。解决方案是在下载前先打开交互地图看看你研究区最近几天有没有火点记录如果地图上也没有再检查云覆盖数据判断是不是云层把地面罩得严严实实。这个排查逻辑比盲目下数据、再抱怨数据有漏洞要高效得多。还有一种情况研究区处于热带雨林等多云区域卫星过境时云覆盖率高火点探测率可能比晴朗区域低到不可忽视。NASA的算法在部分云遮挡时仍能突破薄云探测到高温点但在厚云面前无能为力。做这类区域的火点研究时最好把云覆盖产品比如MODIS的MOD35一并下载评估每天有效观测面积再决定是否把火点数量除以有效观测面积来做归一化。这一步能显著提升长时序结果的可信度。6.3 大气校正和火点产品的关系现在网上很多关于MODIS数据的教程都在讲大气校正导致不少同学拿到火点数据后也在琢磨要不要先做大气校正。这里我必须把概念讲清楚火点产品是L2级别的地理定位产品输入端是经过辐射定标的L1B辐射数据算法直接利用中红外和热红外通道的亮温进行上下文判识并不依赖可见光反射率反演。所以拿到FIRMS火点数据后你不需要再做传统意义上的大气校正。亮温在算法内部已经经过了必要的定标和云检测流程你直接拿来做空间分析和统计是可以的。当然如果你的场景是用MODIS L1B辐射率数据自己反演地表温度或烧伤面积指数那就另当别论。那种情况下大气校正对可见光/近红外通道是必要的因为你观测到的表观反射率里混入了大气分子散射和气溶胶的吸收。这里建议你把火点位置产品和反射率产品当成两条独立的数据链来处理前者用辐射定标后的亮温后者用大气校正后的反射率。混为一谈是新手常犯的错误也是很多教程没讲透的地方。6.4 区域边界裁剪的常见毛病在FIRMS下载时选择裁剪至上传的矢量边界虽然省事但要注意边界文件的坐标系。上传的矢量文件如果是WGS84经纬度服务端直接裁剪没问题如果上传的是投影坐标系比如UTM部分版本的服务端可能不做动态转换导致输出结果为空或者裁剪框完全错位。稳妥的做法是先在QGIS里把矢量导出为WGS84坐标系再上传到FIRMS。这个细节我在实践中被坑过不止一次。7. 比下载更进一步的火点数据能做什么7.1 时间序列分析从火点到火情节奏当你下载完多年的火点CSV后最简单也最有价值的分析就是时间序列统计。按天、周、月聚合火点数量和FRP总量可以直观看到研究区域的燃烧季节性。比如在云南、四川等地春季3—5月有一个秸秆焚烧和森林火灾的明显高峰冬季火点骤减而在东北地区秋季秸秆焚烧高峰则突出得多。这种时间节奏与农业历、气象干旱指数高度耦合是研究人地关系和政策效果的好素材。做时间序列时建议把白天和夜晚的数据分开统计。因为白天小火漏检率偏高混在一起会导致白天火点数被人为低估从而扭曲日内变化特征。如果要做更严谨的长期趋势分析还需要考虑卫星过境覆盖次数的变化早期只有Terra和Aqua两颗MODIS卫星后期加入了NPP、NOAA-20等多颗VIIRS卫星观测频次的提升会天然带来火点数量上升的假象。这时候可以用每百万平方公里有效观测面积上的火点密度作为归一化指标或者干脆只使用同一颗卫星的相同时间段数据宁可牺牲部分覆盖也要保证可比性。7.2 火点密度栅格化火点只是一些离散的点但很多应用场景需要的是连续的火点强度表面。栅格化是一个标准做法先把所有火点按月/年筛选出来用一个合适的空间分辨率比如0.1度或1公里做点密度分析生成火点核密度或火点数量栅格。然后用这层栅格与土地利用类型、植被覆盖、人口密度、交通可达性等图层做空间叠加就能回答火点在哪里集中、跟什么样的环境因子相关这类问题。用QGIS处理时GRASS的v.kernel或GDAL的gdal_grid都可以做密度栅格化。但要注意带宽选择带宽太小栅格上会呈现一颗一颗的孤岛带宽太大又会把空间细节抹平。我一般会先画一下火点的平均最近邻距离再取两到三倍的距离作为带宽效果比较合理。7.3 与碳排放、空气质量研究的衔接FIRMS火点数据在近几年的空气质量研究中热度和应用率都很高。经典链条是火点数据位置时间FRP→ 结合排放因子和植被类型 → 估算生物质燃烧排放清单 → 输入空气质量模型如CMAQ、GEOS-Chem→ 评估野火或秸秆焚烧对PM2.5和臭氧的影响。即便不做化学模拟只把火点密度与地面空气质量站点数据做相关分析也能得到很多有说服力的结果。要注意的是这条链路中FRP只是估算燃烧排放的一种方式与火点面积法基于燃烧斑块各有利弊。FRP的优势是时间分辨率高能反映过境时刻的瞬时强度缺点是单次过境可能错过火势变化面积法可以更精确地刻画累计燃烧面积但需要额外的过火区域数据。两种方法可以互相验证我在实际项目中常拿两者做交叉对比如果趋势不一致往往意味着输入数据的质量问题而不是方法本身的问题。对于刚接触火点数据的朋友我的建议是先不要追求上复杂模型而是把FIRMS的VIIRS和MODIS数据下载、清洗、可视化、统计这几个基本功练扎实。等你熟悉了这套流程再向排放估算、时空建模这些方向延伸就会顺滑得多。这条数据链比我用过的很多商用数据源都要开放和稳定值得好好利用。