ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SIF栅格数据提取全攻略:ArcMap处理与Excel导出实战

SIF栅格数据提取全攻略:ArcMap处理与Excel导出实战 刚接触SIF栅格数据的头一个月我差点被自己下载下来的一堆TIF文件劝退。2001年到2022年每年好几十个文件全是太阳诱导叶绿素荧光SIF数据500米空间分辨率覆盖中国全域。看起来是一件好事——数据现成、时间跨度够长但真正上手之后才发现怎么打开一片黑、怎么裁剪才对得上、怎么把栅格值变成Excel里能分析的表格每一步都藏着坑。写这篇东西就是想把这些坑提前替各位填平。无论你是做植被遥感、生态质量评价还是农学、地理信息系统相关方向的学生或者只是需要一套长时序植被生理指标做辅助分析只要你手上已经有或者打算申请一套SIF栅格数据这篇文章都值得存档。我会从SIF是什么、这套数据适合什么到ArcMap里提取SIF栅格值并导出Excel的完整流程一次讲透。1. 这套SIF栅格数据是什么——先把“太阳诱导叶绿素荧光”原理讲清1.1 为什么SIF比NDVI更能反映植被真实状态SIF的全称是Solar-Induced Chlorophyll Fluorescence中文一般叫太阳诱导叶绿素荧光。这个指标说得直白一点就是植物在进行光合作用时叶绿素吸收了太阳光但并没有把能量全部用于固定二氧化碳有一小部分能量会以更长波长的光形式重新释放出来波长大致落在650到800纳米之间的远红光至近红外区间。这部分微弱的荧光信号可以被卫星传感器探测到所以它天生就是一个“光合作用实时探针”。这几年SIF火得不行核心原因就在这里传统植被指数如NDVI、EVI本质上是看“植被绿不绿”是一种潜在光合能力的代理而SIF反映的是“此刻植物到底有没有在努力干活”直接与总初级生产力GPP挂钩。我做一个生活化类比NDVI相当于看一个人的体检报告指标正常但SIF相当于看他实际能不能跑完五公里。植物遇到水分胁迫、高温或营养不足的时候叶绿素含量短期内不一定马上下降NDVI看不出什么变化但光合作用效率已经受影响了SIF会先“塌下去”。这也是为什么SIF能在农业估产、干旱预警、碳循环评估里当主角。1.2 500米分辨率、22年跨度这套数据的适用边界500米这个尺度对区域植被遥感来说是一个很有性价比的选择。250米的MODIS NDVI虽然细但噪声大云遮挡后数据缺孔多1公里以上的产品又常常抹掉了山地和小农田的细节。500米正好卡在两者之间——做省级尺度的植被趋势、县域农业长势监测、国家级生态区评价精度完全够用处理体量也不至于爆炸。时间上2001到2022年覆盖了22个完整生长季包含了气候变化背景下北方干旱事件、部分区域的植被恢复、农业种植结构调整等一系列过程。这些都能在SIF序列里留下痕迹。特别是北方部分生态工程实施以来的效果在SIF长时间序列里是能看到显著趋势变化的。你要是只想做两年的快闪分析用这套数据当然也能跑但它的真正价值在于长时序趋势分析——那种能支撑“近20年植被生产力变化”结论的分析。不过要冷静看待一点市面上流传的“2001—2022年中国SIF栅格数据”并不一定都是同一套原始产品。更多时候是国际主流SIF数据集例如GOSIF、CSIF经过裁剪、拼接、重采样后的中国区域版本。不同版本在绝对数值、空间连续性、时间覆盖上会有细微差异所以拿到数据的第一件事永远是看元数据而不是先打开软件开始玩图。1.3 拿到数据后先看的元数据要素我最开始拿到数据时直接解压、拖进ArcMap傻眼了一分钟——为什么所有图层打开都是一片白或者数值从零到几千全乱跳后来才明白没读README就要付出代价。一套规范的SIF产品元数据里至少会告诉你数据来源卫星及反演算法OCO-2、GOME-2或基于MODIS反射率的机器学习反演时间分辨率和合成方式逐日、8天合成、月均值空间分辨率与地理范围像元类型浮点型还是整型缩放因子scale_factor和单位NoData填充值-9999、-32768还是NaN投影坐标系这几项里有没有scale_factor直接决定你导出的Excel数值对不对NoData值决定你统计均值时会不会被一堆“-9999”污染时间分辨率决定你能做日尺度还是只能做月尺度分析。我习惯的做法是先把README读一遍再用一行Python或者直接在ArcMap属性里查栅格信息把这些要素抄在一个txt里后续所有处理都以这个txt为准。2. 数据文件与核心参数解读——别急着裁剪先盘清楚数据2.1 文件命名规律与时间序列组织方式SIF产品和普通影像不一样它一给就是几十上百个文件命名规律直接决定你怎么批量读取。常见有两种命名方式一种是按“年份儒略日DOY”比如SIF_2001_001.tif、SIF_2001_002.tif另一种是按“年份月份”比如SIF_y2001_m01.tif、SIF_y2001_m02.tif。前者适合做逐日尺度的物候分析后者适合做月尺度趋势分析。拿到手的第一件事我建议把文件名单导出来写个小命令逐行检查年份是否连续、每个月或每个DOY是否缺文件、文件名年份和文件内部时间标签是否一致。很多数据在下发过程中会有重复文件或改名错位尤其要警惕跨文件夹拼接时出现不同年份同名文件互相覆盖的情况。我踩过的坑是把某年的第180天文件复制错了导致时间序列里出现一个异常尖峰后来检查半天才发现是数据复制阶段的问题不是SIF本身的问题。2.2 SIF的单位、数值范围与NoData约定SIF的标准单位一般是mW/m2/nm/sr也就是毫瓦每平方米每纳米每球面度但也有产品用W/m2/μm/sr两者之间差了整整1000倍。很多文章里SIF数值往往是零点几到一点几如果你导出来的结果普遍是几百上千不用怀疑肯定是被缩放因子坑了。另一类坑是NoData。遥感存储里为了压缩体积常用INT16整数存储这时文件头会带一个scale_factor比如0.001真实值等于存储值乘以缩放因子。而不参与计算的区域海洋、云污染严重的像元会被填成-9999或-32768甚至有些产品会用0来代表无效值。这些值在Excel统计分析时必须先过滤否则平均值直接拉到负数或者异常低值。我自己的习惯是在ArcMap里加载栅格后右键查看属性在“源”选项卡里读一遍像元类型、像元深度、NoData值、空间参考。如果是整型存储先做一个栅格计算器乘以缩放因子顺手把NoData重新定义为NODATA而不是某一数字。这样后续所有操作才敢放心用。2.3 坐标参考与空间范围核对含投影误区SIF标准产品多为WGS84地理坐标但中国区域的共享版本可能会被加工成Albers等面积投影中央经线105°E双标准纬线25°N和47°N偶尔也会碰到Web墨卡托极少数情况甚至出现高斯-克吕格分带投影。这就带来一个很实际的问题你的研究区矢量边界和栅格可能不在一个坐标系里直接叠加后点位全部跑偏提取出来的SIF值和站点真实位置对不上。我强烈建议在数据处理最开始就统一坐标系。如果你做行政区统计就把所有栅格和行政区矢量统一到一个等面积投影因为面积在不同纬度上才不会失真如果你做站点提取可以把点从WGS84转到栅格所在坐标系或者把栅格重投影到WGS84二者选一即可。最忌讳的是“栅格一个投影、点一个投影、面又是一个投影”在ArcMap里看着叠加没问题但实际提取时坐标变换的误差会让你后悔。2.4 拷贝前的数据检查清单数据量大、处理时间长的项目开工之前最好按下面这个清单核对一遍花不了十分钟但能省几小时甚至几天的返工时间文件是否完整覆盖2001—2022年是否有缺失年份或缺失月份文件名中的时间和内部时间标签是否一致所有文件的投影是否统一还是存在混合投影像元类型是浮点型还是整型有没有最终成果里的缩放因子NoData值是什么是否与算法说明一致空间范围是否比你研究区大裁剪后边界处有没有误差带如果是月均值产品确认该产品是按自然月还是按水文月合成这一阶段结束后前期的数据底数就摸清了。接着我最常被问到的就是总算明白数据是什么了接下来在ArcMap里到底怎么把SIF栅格值弄成Excel表。3. ArcMap中提取SIF栅格值并导出Excel的三种主流方案ArcMap默认没有一键“栅格转Excel”的按钮这个功能藏在好几个不同的工具箱里。不同场景要用不同方案否则要么统计结果不对要么运行卡死半天下不来。我按使用频率排序把三种最主流的方案讲透。3.1 方案一按监测站点提取多值提取至点这是科研里用得最多的需求我手里有十几个气象站点或生态观测站的经纬度想把每个站点对应的SIF值全部提出来形成一张“站点×时间”的Excel表再做时间序列或相关性分析。操作入口在ArcToolbox → Spatial Analyst工具 → 提取分析 → 多值提取至点。输入要素就是你的站点点文件输入栅格可以同时选一个或多个。ArcMap允许你按住Ctrl键一次性多选几十个栅格文件输出后点文件的属性表会自动新增对应字段字段名默认用栅格文件名命名。这个方案的优点是批量提取效率高我最多一次提了70多个站点的120个栅格几分钟跑完缺点是字段名如果太长有时会被截断导致后期判断哪个字段是哪个月不方便。所以建议在提取前先给栅格文件重命名成简洁的规则格式比如SIF2010M06代表2010年6月这样导出Excel后字段名就能直接当变量名用。3.2 方案二按行政区域统计均值分区统计如果你需要的是省级、市级或者流域尺度的SIF平均值、最大值、标准差就不要用点提取了要用分区统计。操作入口在ArcToolbox → Spatial Analyst工具 → 区域分析 → 分区统计。输入区数据可以是面要素行政边界、流域边界、生态功能区也可以是栅格分区数据比如土地利用分类栅格统计字段下拉框里有MEAN、MAXIMUM、MINIMUM、RANGE、STD、SUM等输出结果是一个属性表每一行对应一个区域。这里有个细节统计之前必须确认面要素和栅格在同一个坐标系并且面要素没有包含区域外的大块面积。否则统计出来的均值会被研究区外的低值或NoData拉低。我一般会先把面要素按栅格范围做一次裁剪或者直接在环境设置里把处理范围设为面要素范围同时在栅格分析环境里把掩膜设为这个面要素。3.3 方案三小范围研究区的整幅栅格转点导出第三种方案适合研究区特别小、需要逐像元输出SIF值的情况。比如你只想分析一个生态站周边10公里范围的SIF空间分布方案一取点太稀疏方案二统计均值又太笼统这时候直接把栅格转成点再导出属性表是最直接的。操作入口在ArcToolbox → 转换工具 → 从栅格中提取 → 栅格转点。注意这个工具默认会把栅格里的每个像元都转成一个点要素如果你的研究区范围大生成的点要素可能会达到几十万上百万个直接导出Excel会让Excel卡死。所以使用前一定要把栅格裁剪或者用环境设置把处理范围缩小到你真正关心的区域。3.4 三种方案的适用场景对比为了让你快速选型我做个简明对比方案适用场景输出形式优点缺点多值提取至点气象站、采样点、农田地块等离散点位点属性表点多列SIF值可批量提取支持多年文件一次处理字段多时需注意命名规则分区统计行政区、流域、生态功能区分区统计区域统计表每区一行得到区域平均、区域总量、变异程度面要素必须与栅格投影一致栅格转点小范围逐像元分析写景点点要素含每像元SIF值空间细节保留完整大范围数据量爆炸Excel难处理选好方案之后实际操作里面还有一些值得注意的细节。下面我以一个具体案例带你走一遍完整流程。4. 实操过程实录从SIF栅格到一张干净Excel表4.1 步骤1 预处理裁剪与重投影我拿一个典型需求举例分析某省2010—2020年春季3—5月SIF年际变化分析对象是省内9个气象站点。数据集是2001—2022年500米SIF栅格WGS84坐标文件按年份月份命名。第一步先在ArcMap里加载研究区矢量再加载一个SIF栅格右键查看属性确定栅格投影。如果研究区是省级范围我一般把数据统一转为Albers等面积投影CGCS2000或WGS84基准都可以这样后续算面积、统计均值都更稳。用ArcToolbox里的“投影栅格”工具批量重投影或者直接用“数据管理工具→投影和变换→栅格→投影栅格”注意选择重采样方式——SIF是连续变量用双线性插值千万别用最邻近法因为最邻近法会保留原始像元值但容易产生锯齿状边界双线性更平滑适合连续型变量。裁剪方面用ArcToolbox → 空间分析工具 → 提取分析 → 按掩膜提取掩膜用研究区矢量面。环境设置里把栅格分析的处理范围也设为“与掩膜相同”这样所有输出栅格范围一致后面提取点时不会出现有的文件范围多一块、有的少一块的情况。4.2 步骤2 逐点提取SIF值并生成属性表预处理完成后加载9个站点点要素到ArcMap。打开ArcToolbox → 空间分析工具 → 提取分析 → 多值提取至点。输入要素选站点输入栅格选你需要的3—5月SIF文件2010到2020年共33个文件。如果你不想一个文件一个文件地选可以先在目录里建一个栅格列表或者用ArcPy脚本循环。不过这里为了方便理解先用界面操作。运行成功后会提示“点要素已更新”打开点属性表你会看到新增的33个字段每个字段对应一个月的SIF值。字段名可能很长比如“SIF_China_2010_M03”看起来够用但如果你后面要做Excel透视表建议在提取之前就把栅格文件重命名为“SIF201003”这样简洁的格式导出后字段名就顺眼很多。属性表里还有一个字段“FID”或“OBJECTID”这个必须保留它是你后期把Excel表关联回站点坐标的唯一钥匙。没有它你在Excel里只知道“站点1的SIF是0.53”但不知道站点1是哪个气象站。所以这一步我建议再打开站点原始属性表把站点编号、站点名称复制出来或者直接在点要素里新建一个字段“ST_NAME”填上站点名再开始提取。4.3 步骤3 批量导出为Excel并清洗数据提取完成后右键点图层打开属性表点击左上角菜单按钮选择“导出”。导出类型选“dBASE表”或“文本文件”然后打开ArcToolbox → 转换工具 → Excel → 表转Excel把这个表转成真正的Excel文件。注意如果你直接导出为文本文件再用Excel打开中文站点名可能乱码用“表转Excel”工具就没有编码问题所以更推荐。导出后用Excel打开这张表第一步就是清洗数据。清洗包括三件事检查有没有负得离谱的数值SIF在春季理论上应该是0到1左右的正值如果出现-9999或者-32768说明原始产品在云覆盖或极地区域的NoData没有被正确识别在做分析前必须替换为空值NA。检查有没有0值异常成片的情况。0值可能是真实的裸土或水体SIF但如果某个站点某个月突然全部为0而周围站点数值正常多半是原始文件该区域被填充了0需要回到ArcMap里查看原始栅格确认。核对站点经纬度与对应栅格数值的合理性。春季三月份北方站点SIF应该偏低0.1—0.4南方站点偏高0.3—0.8如果北方站点出现了超过1.0的值可能是坐标偏了或者投影没对齐。清洗完成后的Excel表格通常是一行一个站点、一列一个月份的结构。这种结构叫宽表方便人看但不方便统计。我建议在Excel里用数据透视表或Power Query把它转成长表行是站点和月份列是SIF值这样后续画图、做趋势分析、在SPSS或R里跑模型都省事。4.4 步骤4 用数据透视表整理时间序列选中清洗后的数据区域插入数据透视表行放“站点名称”列放“年份”或“月份”值放“SIF字段”的平均值。这样你能快速得到一个站点×年份的SIF矩阵再用Excel自带的折线图功能就能画出一张站点SIF年际变化图。这一段在很多人看来不是必要操作但我认为它非常关键因为眼睛在看透视表时往往能发现程序分析之外的问题比如某个站点某年春季SIF失踪了一段或者某个站点连续两年数值异常低。这类肉眼可见的异常往往在后续模型分析里会被当作统计噪声掩盖你先在Excel里确认数据形态合理再进入分析阶段能避免大量返工。5. 常见问题排查与避坑实录5.1 打开栅格全是黑白色或不显示这个是最高频的问题几乎每个刚开始用SIF数据的人都会碰到。SIF数值集中在0到1.5之间ArcMap默认的灰度拉伸可能会把有效值压缩在很窄的亮度范围里看着就像全黑或全白。解决方式很简单图层属性 → 符号系统 → 拉伸 → 拉伸类型选“百分比截断”值设为2%到98%或者直接用“自定义”把最小值设为0、最大值设为1.5。这样画面就能正常显示。注意这只是显示问题不会改变原始数据值导出Excel时该是多少还是多少。5.2 提取出来的值是0或者负得离谱遇到这种情况先不要怀疑数据有问题按三步排查。第一步看原始栅格属性的像元类型如果是整型存储查看是否带缩放因子。右键图层 → 属性 → 源看有没有scale_factor字段比如storage type是INT16scale_factor是0.001那存储值要除以1000才是真实SIF值。第二步看NoData受云污染影响的像元可能在预处理阶段被填为0而这些0会被当成有效值提取出来。第三步检查你的区域本身冬季北方植被SIF确实可能为负或接近0这是正常的不要一刀切删掉。如果排除以上三种情况就要怀疑是不是投影或裁剪导致栅格范围与站点偏离此时需要回到ArcMap里叠加显示站点和栅格逐一检查。5.3 投影不一致导致点位跑偏同一个SIF栅格文件如果站点点在WGS84坐标下正常叠加但重投影到Albers后点偏移了几百米甚至几公里多半是重投影过程中基准面设置错了。参考基准面不一致比如WGS84和CGCS2000混用会表现为系统性偏移。在ArcMap里右键图层 → 属性 → 源查看“地理坐标系”那一栏是不是WGSS84、CGCS2000、Xian80等确认所有图层基准面一致后再做提取。还有一个容易被忽视的点一旦你对点要素做过“投影”工具ArcMap里的显示坐标会变但原始字段里的经纬度仍然保留你在Excel里看到站点经纬度和SIF值却不知道它们实际对应的空间位置已经换了坐标系。所以建议每次投影后都导出一个带坐标的点表存档确保后期使用无误。5.4 批量导出Excel时字段顺序乱使用“表转Excel”工具时导出的列顺序不完全等于属性表显示顺序可能有隐藏列如Shape_Length、Shape_Area混进来。如果你导出的Excel里前面几列是Shape类字段后面才是SIF值不要慌选中多余列删除即可。更好的办法是在属性表里点击菜单按钮 → 导出 → 勾选“仅导出所选字段”或使用字段映射只把需要的字段导出。另外一个常见情况是字段名太长Excel列名会变成类似“SIF_China_500m_2010_March_avg”这种超长文本透视表里显示不下。因此我在第3节里特意强调提取前重命名栅格文件为简洁格式这能省下不少后期改列名的力气。5.5 常见错误速查表错误现象可能原因解决办法图层全黑/全白拉伸方式不当图层属性→拉伸→设置0-1.5范围SIF值成百上千整型存储未乘缩放因子检查scale_factor并做换算站点提取值为-9999NoData未识别环境设置中处理NoData站点与栅格叠加偏移投影或基准面不一致统一坐标系与基准面导出Excel为乱码直接导出了文本文件使用表转Excel工具个别月份SIF连续为0云污染填充0回到原始栅格查看替换为NA属性表字段超长截断文件命名过长预处理阶段重命名栅格文件6. 这套数据的应用扩展从Excel表格到趋势结论把SIF栅格成功导出成Excel只是第一步。很多人在这里就停住了但SIF数据真正的价值在于后续的分析。基于我自己的实践给几个已经被验证过的分析思路。6.1 基于SIF时间序列的物候分析方法用逐日或者8天合成的SIF时间序列可以对每个像元或每个站点做物候曲线拟合。SIF比NDVI能更灵敏地捕捉到生长季开始日期特别是在干旱半干旱区域SIF的春季上升段往往比NDVI提前出现。常用的方法是双Logistic拟合加Savitzky-Golay平滑提取生长季开始、峰值、结束日期。这个思路适合做气候变化对植被物候影响的论文。实际操作时我通常会把Excel里的SIF时间序列导入R用phenopix或greenbrown包做拟合或者直接在Python里用scipy的curve_fit做双Logistic模型。需要注意的是SIF数据短时间内的噪声比NDVI大平滑窗口不能太小否则会保留大量高频波动。6.2 SIF与气象因子的相关关系叠加把站点提取的SIF序列和气象站的气温、降水、日照时数数据合并到同一张表里可以做年际相关性分析。比较实用的做法是分别计算SIF与当月降水、上一个月降水、当月气温的相关系数。因为植物光合作用对水分和温度有滞后响应SIF受到前1到2周气象条件的影响比较明显所以做月尺度分析时用滞后一两个月的降水有时相关性更高。这里要提醒一点样本量太小的时候相关分析很不稳定22年数据还好如果你只用了5年算出来的相关系数置信区间很宽不建议下强结论。至少要有10年以上的连续数据再用Pearson或Spearman相关分析结果才有一定说服力。6.3 结合NDVI和SPI的扩展研究思路SIF是“功能”指标NDVI是“结构”指标两者的残差分析可以识别植被生理胁迫。比如某一区域NDVI持续处于高位但SIF在某个生长季突然走低说明植被虽然看起来绿实际光合作用效率已经受损这在干旱预警里的价值很高。另外一个思路是把SIF和标准化降水指数SPI结合。你可以把区域平均的SIF时间序列和SPI做联合分析看看干旱发生几个月后SIF开始下降恢复期又需要多长时间。这种分析在生态水文和农业气象领域都是比较受认可的框架而且基于Excel里的SIF数据就能完成基础版本。我在实际使用中的体会是这套2001—2022年500米SIF数据最大的优势不是单个年份的精度而是它提供了一个连续20多年的“生理型植被生产力”时间序列。只要你在前期把投影、NoData、缩放因子这些细节处理干净后面不管是用ArcMap做基础提取还是用Python/R做进阶分析都会顺利很多。最后再分享一个小技巧SIF数据文件数量大建议以年份为单位建子文件夹每年目录下放12个月文件ArcMap提取完直接生成长表不要保留中间几十列属性表的临时文件。这套习惯看似琐碎但当你做到第10年、第15年数据时会发现找文件、排查问题都特别快。数据本身是生产资料而我们处理数据时建立的秩序才是真正拉开效率差距的东西。
返回列表