ARTICLE DETAIL

资讯详情

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

1981-2021全球逐月太阳辐射栅格数据:GIS处理与光伏农业应用

1981-2021全球逐月太阳辐射栅格数据:GIS处理与光伏农业应用 简介本资源为1981–2021年全球逐月太阳辐射GIS空间分布数据集面向气象、能源、地理信息及可再生能源领域研究者与高校师生支撑太阳能资源评估、光伏潜力分析、气候模型验证等科研与工程应用。数据以气候平均值形式呈现覆盖41年共12个月份及全年均值空间分辨率为0.5°×0.5°单位统一为kWh/m²/day采用标准GeoTIFF格式存储并配套tfw地理配准、xml元数据、ovr金字塔、jpg可视化预览及说明文本确保GIS软件开箱即用。压缩包含66个文件总大小10.83MB结构规范、命名清晰便于批量加载与时空分析。已有936人学习下载用户可直接调用各月/年辐射图层开展区域对比、趋势统计或叠加分析无需额外处理即可投入ArcGIS、QGIS或Python rasterio等平台使用。 处理气候空间数据这几年让我印象最深的不是算法多复杂而是数据到了手边却不顺手。这套1981-2021全球逐月太阳辐射GIS空间分布数据属于少数直接面向GIS工作流的长期逐月产品能把40年太阳辐射变化放到底图上做空间分析。对做光伏选址、农业区划、生态环境评估的人来说它就是一套能直接用、能裁剪、能统计、能出图的底料数据省掉大量从再分析原始文件里转格式、抠区域的时间。适合有GIS基础、想省事拿到高质量全球辐射序列的从业者和研究人员。1. 项目概述与核心需求解析1.1 数据能解决什么问题如果只是要某个气象站点的太阳辐射数值用传统气象资料很方便。但一旦需求变成我需要中国西部高原任意一个坐标点过去40年逐月太阳辐射或者我要出一张长江流域某月平均日辐射量空间分布图普通站点的观测数据就完全不够用。站点稀疏、观测年限不连续、仪器换型带来的数据断档都会让空间分析没法做。全球逐月太阳辐射栅格数据恰好补上了这个缺口——它把辐射要素做成了连续覆盖的空间格网每个像元都有独立的数值相当于把整个地球表面变成了一个密集的虚拟观测网。这套数据1981—2021年按月组织时间上覆盖41年空间上覆盖全球适合做长时序趋势分析。判断一个区域太阳能资源稳不稳定至少要看10年以上做气候变化背景下的资源演变研究20到40年的序列才够用。41年逐月的长度刚好能支撑起年际波动—季节差异—长期趋势这套完整分析框架。我之前做资源评估项目时一期工程要求必须用近30年气候标准期数据这套数据的时间范围是直接能满足的。1.2 为什么全球逐月的组合很关键只谈全球不谈时间分辨率数据基本没法用。年值的太阳辐射数据只能看总量失去季节信息日值数据虽然细节丰富但运算量巨大、存储占用高对很多业务场景是浪费。逐月是一种平衡既能捕捉季节与年际变化又不会让数据量失控。492个月41年乘12个月的数据在普通PC上用GIS软件做分区统计、栅格计算都能在可接受时间内完成。空间上的全球覆盖意味着无论项目区在哪个国家、哪个纬度都能直接取到数。这种一致性对跨国或多区域对比非常有价值。用同一套数据源分析不同区域的资源差异避免不同项目用不同数据导致结果没法比较的尴尬。我在实际项目中深切体会到做全国性的资源普查时如果各省用的是不同年份、不同分辨率、不同单位的数据拼起来就是一场灾难。统一的时间序列、统一的空间网格是这类项目顺利推进的前提。2. 数据获取与格式解析2.1 这类数据从哪来是什么原理先理解这套数据的底层逻辑。全球逐月太阳辐射栅格数据基本不是靠地面站插值出来的而是以卫星反演为骨干融合再分析气象场经过物理辐射传输模型计算得到的。原理上太阳辐射从大气层顶进入地表中间经过云、气溶胶、水汽、臭氧等因子的衰减模型把这些因子逐项参量化就能算出地表接收到的总辐射GHI和直接辐射DNI、散射辐射DIF等分量。加上卫星对云和气溶胶的连续观测最终形成时空连续的产品。拿到手的栅格数据背后其实是复杂的辐射传输方程。不过做GIS应用的人不必深究每个公式但至少要知道对应波段是哪一种辐射分量。常见产品会区分GHI全球水平总辐射光伏项目最常用的分量DNI法向直接辐射光热发电、聚光光伏必看DIF散射辐射或晴空辐射常用于气候研究和模型驱动。如果数据集只提供一层大概率是GHI如果提供多层要特别留意单位是否一致、是否已经做过地形校正。太阳辐射的地形效应在山地尤其重要——坡向、坡度、阴影遮挡都会让实际接收辐射差异巨大。如果数据源没有做地形校正在山地应用时需要结合DEM做二次修正比如用坡度坡向因子把水平辐射换算成坡面辐射这一步在精细化光伏选址里很常见。2.2 格式、坐标系与波段组织方式这类产品最常见有两种交付格式。第一种是NetCDF.nc或HDF.hdf格式把所有月份放到一个多维数组里维度一般是[time, lat, lon]。这种格式的好处是方便按时间切片读取效率高代码处理方便但很多GIS新手一打开.nc文件就懵图层只有一个时间维不知道去哪了。实际上ArcGIS Pro可以原生读取netCDF通过多维数据工具面板把时间维暴露出来QGIS需要用插件或从NetCDF添加栅格图层的方式加载。第二种是逐月GeoTIFF.tif每月一个文件共492个。这种格式对GIS使用者最友好——直接拖进ArcMap或QGIS就能看到图符号化、按掩膜提取、栅格计算都不需要额外处理。缺点是文件数量多管理起来要做目录规划而且不同月份的tif如果压缩算法不一致批量处理时可能有兼容性问题。坐标系方面全球数据通常以WGS84地理坐标系EPSG:4326或等经纬度投影提供栅格分辨率常见0.1度、0.25度、0.5度。这个分辨率对应地面上大约11公里、28公里、55公里左右。做省级或国家尺度分析0.25度足够了做县域级项目最好找0.1度或更细的数据。我这里建议拿到数据后第一件事就是确认坐标系和像元大小不要默认它是某个投影。很多坑都是这里埋下的——比如用WGS84经纬度数据直接算面积、做缓冲区距离和面积全是错的。2.3 核心参数单位、时间戳、缺失值这是我踩坑最多的部分。太阳辐射数据常见的单位有这么几类常见单位含义换算关系W/m²瞬时功率密度常为月平均日瞬时代表值1 kWh/m²/day 约等于 41.67 W/m²按日24小时平均换算kWh/m²/day日均太阳辐照量光伏发电量估算常用MJ/m²/day日均辐射能量密度1 kWh/m²/day 3.6 MJ/m²/dayMJ/m²/month 或 J/m²月总量或月累计看说明勿与日均混淆如果数据里写的是Monthly mean of daily GHI in kWh/m²/day单位就是kWh每平方米每天这是做光伏资源评估最顺手的单位。但如果说明不清晰、下载页面又隐藏了单位信息建议先用已知站点的观测值抽样对比一下把单位校准了再做全区域处理。我记得有一次用的产品单位是0.01 kWh/m²/day直接把数值当成kWh用结果整个区域辐照量比实际偏大100倍后面全报废重算。时间戳也一样。逐月数据的时间戳可能表示该月第一天、该月15日或该月最后一天也可能表示该月平均值。这会影响时间序列的匹配和画图标注。另外要确认月份是当地时间还是UTC——全球产品一般用UTC但做日照分析时最好转成地方时便于与光伏发电的峰时匹配。缺失值处理也要提前看。栅格产品对水体、极夜区、缺失观测区域会填一个特殊值比如NaN、-9999统计时如果不排除结果直接崩。用ArcGIS的统计功能时记得在环境设置里把NoData和特殊值处理干净。3. GIS处理实操要点3.1 加载数据前的标准动作先把数据分门别类放好。我习惯按原始数据区域裁剪统计输出制图成果四个目录归档下载的原始tif/nc一律只读备份处理产物单独存放。不会因为批量操作的中间文件覆盖原始数据事后想重新处理还不至于抓瞎。拿到GeoTIFF后直接用ArcGIS Pro拖进地图先别着急做分析先把图层属性打开做三件事。第一确认坐标系。若显示GCS_WGS_1984说明是经纬度数据如果单位是米且带投影信息如UTM、Web Mercator要留意全球数据一般不会用投影坐标系直接交付除非做过重投影。第二确认像元大小和范围。用属性里的源Source标签页查看像元大小Cell Size比如0.25度。如果像元大小不是规则的度数而是带小数点的米数例如1000.243米说明数据在交付过程中被重投影过间接产生了重采样精度会有损耗。第三查看符号化拉伸效果。第一次加载栅格ArcGIS通常会用默认拉伸。如果图像全黑或全白多半是栅格值域与符号化拉伸范围不一致双击图层打开符号系统选择拉伸类型把拉伸类型设为最值或百分比截断即可恢复显示。这对应了很多人在网上问的底图去除黑边问题其实很多时候不是黑边是NoData和有效值的范围没设置对。3.2 从全球数据按区域批量裁剪做区域项目第一步一定是把全球数据裁剪到研究区。不要在整个球面上做统计运算量大且结果难解释。裁剪的方法有三类按场景选择第一种是直接用ArcGIS的按掩膜提取Extract by Mask。输入研究区矢量边界栅格运算会以矢量范围为准裁出边界内的像元。优点是操作简单缺点是如果矢量范围很大输出分辨率、NoData处理都按环境设置来要记得在环境里把捕捉栅格Snap Raster设成原始数据否则输出栅格的像元位置会与原始数据产生偏移后续叠加其它栅格时容易出现半个像元的错位。第二种是裁剪Clip工具适合用矩形范围快速切图。与按掩膜提取的区别是Clip不要求输出与掩膜的像元对齐而按掩膜提取会做更严格的重采样处理。简单裁剪用Clip要求严格物候边界时用Extract by Mask。第三种是用PythonArcPy或rasterio批量处理。492个月份全用手工一个个裁效率太低。我通常写一个循环遍历所有tif用同一个shp执行裁剪顺便在文件名里加上区域名和月份标识。示例代码基于rasterio适合QGIS用户或纯Python环境import rasterio import rasterio.mask as riomask import geopandas as gpd from pathlib import Path shp gpd.read_file(study_area.shp) geom [shp.geometry.values[0]] in_dir Path(./raw_global_month) out_dir Path(./regional_month) out_dir.mkdir(exist_okTrue) for tif_path in sorted(in_dir.glob(*.tif)): with rasterio.open(tif_path) as src: out_img, out_transform riomask.mask(src, geom, cropTrue, nodatasrc.nodata) out_meta src.meta.copy() out_meta.update({ driver: GTiff, height: out_img.shape[1], width: out_img.shape[2], transform: out_transform }) out_name out_dir / fregional_{tif_path.name} with rasterio.open(out_name, w, **out_meta) as dst: dst.write(out_img) print(f完成: {out_name})这段代码是我日常处理逐月栅格的底子。注意我这里的shp只取了第一个要素如果研究区由多个面要素组成需要先把shp融合成一个要素避免mask时产生重复区域或孔洞。3.3 点位提取与分区统计分析里最常用的两个需求给坐标点赋值给行政区统计均值。给点赋值用ArcGIS的多值提取至点Extract Multi Values to Points工具或者在Pro里用栅格采样Sample。一次把492个栅格全选采样会生成492个字段字段命名默认是栅格文件名。采样前务必搞清楚坐标系点图层和栅格必须统一坐标系否则提取出的值位置全错。我的做法是先给点图层定义一个与栅格一致的坐标系通常WGS84再让工具自动在背后完成转换。给行政区统计均值用分区统计Zonal Statistics as Table。这里有个容易忽略的点分区统计时要确认把忽略NoData勾上否则一个区内只要有一个NoData像元整个统计结果就会受影响。如果研究区边缘有海洋或极夜区的NoData不勾选会得到明显偏低的均值。另外一个直接相关的问题是很多人问的GIS怎样用一个点插值。太阳辐射栅格虽然是连续面数据但有时野外实测只有少数站点想从点观测生成面分布。此时可以用反距离权重IDW或克里金Kriging。但我要特别提醒如果用这套全球产品做趋势验证、想用站点观测去校正产品不要用插值去替代栅格而是直接把站点观测值与栅格提取值做散点对比、计算偏差对栅格做回归校正。这才是更严谨的做法。插值只有在站点密度足够高、地形不复杂的地区才可信。3.4 模型构建器与其他小技巧ArcGIS的模型构建器ModelBuilder适合把裁剪→分区统计→出表这样的流程固化下来。很多人第一次看模型构建器里的变量搞不懂%值%和%名称%的区别。简单说在迭代器输出中%值%是要素或栅格对象的几何值也就是实际参与运算的数据%名称%是它的名字字符串。比如你迭代一组shp%值%是aa.shp这个要素类%名称%是字符串aa用于拼文件名、标注图例就非常方便。搞清楚这个区别批量出表、批量出图才能顺利跑下来。如果拖入模型运行报无法从数据源加载数据大概率是路径问题——模型里的路径是绝对路径移动到别的电脑后所有数据源就失效了。解决办法是把数据、脚本、工程文件放在同一个根目录里路径用相对路径或直接改源路径。还有一次客户拿着模型说点成线工具跑不通我一看是他把点要素的坐标系设成了未知工具找不到空间参考自然无法正确连线。另外如果项目里需要把研究区按等高线或河流分割成多个子区域来单独统计可以参考用线切割面的思路。ArcGIS里用线要素切割面推荐使用修复几何Repair Geometry先清理面要素再用分割面Split Polygon by Lines工具如果线没有完全穿过面工具会报错或切割失败此时要先用延伸线或生成面把线处理完整。这是很多人踩过的坑尤其在处理河流边界和流域分区时特别常见。4. 常见问题与排查技巧实录4.1 栅格全黑、黑边与拉伸异常这个必须放第一位因为太常见了。拿全球数据直接加载最典型的现象就是黑色一片或边缘一圈黑框。原因通常是栅格值范围很大尤其有异常高值或负值符号化的默认拉伸区间不合理NoData被当作有效值参与显示显示成黑色多波段数据里RGB通道分配不对加载多波段tif时如果波段没有标准元数据RGB拉伸可能乱套。解决办法在图层属性里把符号系统从拉伸改为最值或百分比截断设置NoData为透明色。若是多波段数据到波段选项卡里手动指定R、G、B对应波段。这不属于数据质量问题纯粹是显示设置。我现在每拿到一批新栅格第一件事就是快速检查有效值最小/最大值再看拉伸方式这能省下很多怎么图黑了的询问。4.2 时间维度错位用netCDF格式时会遇到时间维不显示、或显示出来的时间和我预期对不上。ArcGIS Pro的多维数据工具里如果netCDF的time变量不是标准格式Pro可能直接忽略它只剩一个slice波段。此时只能自己在属性表里记录切片顺序或者干脆用Python把nc转成逐月tif反而省心。转换时注意解压后的数值要乘以原始数据的scale_factor、加上add_offset如果有很多nc文件的数据是压缩存储的整数直接读出来是错的。这里我最推荐的流程是拿到nc文件先不急着拖进GIS先用Pythonxarray打开看一眼维度、变量、属性units、scale_factor、add_offset确认无误后再转成tif或加载到Pro。xarray的好处是可以直接按月份选取切片并且自动处理时间索引省去手工数波段的麻烦。4.3 投影与面积计算对全球数据做面积相关统计时首先要明确WGS84经纬度栅格像元面积不是常数纬度越高单个像元的实际面积越小。如果直接调用分区统计得到的是像元平均值面积权重本身没问题但如果用栅格计算求总量、或计算区域的累积辐射量就一定要把每个像元的实际面积考虑进去——通常做法是先投影到等面积投影如Mollweide、Albers再计算。有人问GIS计算椭球面积公式怎么用。在ArcGIS中计算面要素椭球面积的工具是计算几何属性Calculate Geometry Attributes选择AREA_GEO测地线面积它会按椭球模型计算而不是平面投影面积。对全球尺度的区划统计强烈建议用这个字段。手动写公式的话要用椭球面上两点间的积分公式非常复杂没必要直接用工具就好。理解为什么也很重要在大范围、高纬度地区Web Mercator等投影严重变形。如果在一个高纬度的研究区用平面面积统计结果可能比真实面积大好几倍。所以做辐照量总量汇总时我的习惯是统一投影到Albers或Mollweide等面积投影再做分区统计。4.4 栅格计算与单位换算的坑把逐月数据换算成年总辐射量或多年平均月辐射量常用栅格计算器。注意在栅格计算器里要先确认原始栅格的数值范围量级。如果原始数据是kWh/m²/day求一年总辐射量要乘以当月天数再求和jan*31 feb*28 ... dec*31。如果直接对十二个月求平均得到的是日平均辐射量的年均不是年总量。这两种结果差了几十倍。另外注意闰年问题。二月有28或29天1981—2021年间有闰年1984、1988、1992、1996、2000、2004、2008、2012、2016、2020这10个所以做多年统计时2月的日数要按年份判断代码里可以用calendar.isleap判断。写Python批量处理时我常用一个按月天数的字典import calendar month_days [calendar.monthrange(year, month)[1] for month in range(1, 13)]这样算年总量时不会弄错2月天数。如果数据是月总量单位就不需要乘天数了但很多全球产品给的是日均值这一步最容易出错。我习惯在数据处理脚本开头就写清楚raw_unit kWh/m2/daytarget_unit kWh/m2/year然后统一换算可读性高也方便复查。5. 典型应用场景与心得5.1 光伏选址与农业区划太阳能光伏电站的选址光看一个地区的平均辐射量远远不够还需要看年内波动和多年变化趋势。这套逐月数据可以直接做三件事生成多年月平均辐射量的12张图判断资源季节性计算变异系数CV识别年际波动大的区域制作资源等级区划图把最佳区域、一般区域、不宜建设区域划分出来。具体做法是先用栅格计算器把492个月的辐射量按年和月聚合得到41个年值再用标准差除以均值得到CV。CV值高的区域即便平均辐射量高对光伏电站的稳定收益也有风险通常要结合其他因素做综合评估。农业上太阳辐射直接决定作物光温潜力可以用月辐射量结合温度数据计算积温做种植区划。配合NDVI、降水、土壤等栅格还可以做进一步的适宜性评价。另外做光热项目时DNI比GHI更关键。如果只有GHI数据需要用统计分析或物理模型估算DNI但这会引入不确定度。所以选数据时尽量找带DNI分量的版本否则光热项目的经济性测算会有较大偏差。5.2 制图输出与成果表达处理完的数据最终要变成图这个环节有不少细节。比如制图时太阳辐射量的分级色带我会用从黄到红暖色调突出高辐射区分类采用分位数或等间隔注意图例上的单位注明。如果研究区域多比如中国按省用模型构建器批量出图时可以构造以省名称为标题、以栅格为底图的模板。就是把%名称%用在地图标题和输出文件名里实现自动化出图。很多人问GIS标注不要遮盖图斑怎么操作。在出图时标注与图层重叠是常事。可以右键图层属性在要素标注里勾选放置属性再加上移除冲突标注或者用标注缓冲区和仅显示在范围内来控制。如果要固定不压盖可以用标注转注记Convert Labels to Annotation后手动干涉但这样批量出图会慢通常是最后定稿时再用。如果想在地图上显示底图去除黑边的效果关键也是NoData透明化。在ArcGIS Pro里可以通过符号系统将NoData设置为无颜色QGIS里则在图层属性的透明度选项卡里把NoData值设为透明。这一步做好了图面干净很多也能避免黑边干扰视觉。5.3 我的实操体会这套类型的时间序列数据我接手过两个项目最深的体会是时间序列数据一旦进入GIS成败往往不在算法而在数据管理的细节——单位、坐标、NoData、时间戳任何一个搞错都会让后续分析报废。所以我现在的习惯是任何数据处理前先花10分钟写下元数据清单数据名称、原始单位、换算系数、坐标系、有效值范围、NoData值、时间戳含义。这个清单贴在项目目录首页整个团队都能对照检查。另外一个心得逐月数据在统计分析时一定要区分日均值和月总量这在处理太阳辐射数据时尤其容易迷糊。还有不管用什么软件都先做一个小范围试算比如仅裁一个县的数据跑一遍完整流程确认数值量级、空间分布都合理后再跑全区域。这一步能省下大量返工时间。最后再分享一个小技巧这批数据做时序变化分析时可以先做一个多年平均逐月辐射量的栅格集共12个月再用像元统计Cell Statistics计算每月的最大值、最小值、标准差这样能快速摸清研究区辐射资源的季节稳定度不必每次都把492个文件全拉出来统计。等有了整体判断再针对关键时段做精细分析效率高出不少。本文还有配套的精品资源点击获取
返回列表