信息速览
世界资源研究所(WRI)的全球电厂数据库是一份按电厂逐站登记的名册。一条记录对应一座发电厂,粒度停在一个并网点,不上到发电机组,下不到逐时出力。全库 34,936 条记录、167 个国别代码,装机合计约 570.7 万兆瓦。
它与常见的能源统计库结构相反。统计库给的是「某国某年某燃料发了多少电」,这里给的是「这一座厂在哪里、多大的容量、烧什么、哪年投产」。发电量只在 2013 至 2019 年逐年附上,而且填不满——2013 年只有 18.4% 的记录有上报值,2017 年之后近九成要靠模型推算。
因此,它最容易被误读成一串可以拿去做负荷预测的时间序列。这项误解来自字段命名,而非数据本身。这份名册的价值在于把全球三万多家电厂摆在同一张坐标纸上;它的问题也全在这张纸上:覆盖极不均、坐标精度参差、燃料只保留前三种、发电量分「上报」与「推算」两套账。
| 项目 | 数值 | 依据 |
|---|---|---|
| 记录数 | 34,936 | 主表行数,去掉表头 |
| 覆盖国别代码 | 167 | country 去重;页面 JSON-LD 仍写 164 |
| 装机合计 | 5,706,975 MW | capacity_mw 求和 |
| 单厂容量中位数 | 16.79 MW | 同上,按全库排序取中位 |
| 主燃料种类 | 15 | primary_fuel 去重 |
| 带副燃料的记录 | 1,944 | other_fuel1 非空 |
| 上报发电量覆盖 | 2019 年 9,659 条(27.6%) | generation_gwh_2019 非空 |
| 估算发电量覆盖 | 2017 年 33,138 条(94.9%) | estimated_generation_gwh_2017 非空 |
| 字段总数 | 36 | 表头计数 |
| 版本 | v1.3.0,2021-06-02 | 发布包 README.txt |
| 维护状态 | 已停止 | 上游 README 首段 |
| 许可 | CC BY 4.0 | JSON-LD license;README.txt |
§1 速览:它是名册,不是曲线
1.1 一句话定义
这是一份把全球燃煤、燃气、水电、核电、风电、光伏逐站点名并贴上容量与坐标的台账,每个名字后面跟着四类信息:它是谁(编号与名称)、它在哪(经纬度)、它有多大(容量)、它烧什么(燃料构成)。
若这份台账消失,补上的路径几乎不存在。各国电网公司、监管机构、行业协会各有自己的电厂清单,但口径不一、语言不一、格式不一:有的给机组、有的给厂、有的只给省。把三万多个来源——技术说明写的是 600 多个数据来源——缝成一张可比的表,这份工作量才是它真正的成本所在,数字本身反倒容易得很。
1.2 为什么它不是「发电量数据库」
名字里有 Power Plant,字段里也有 generation,但它的重心在「有哪些厂」而不在「发了多少电」。这两件事在数据结构上是相互拖累的:要逐站属性,就得一厂一行;要发电量时序,就得一厂多行或一列多期。选择前者,代价就是发电量只能摊成七个并列的年度列。
capacity_mw 与 generation_gwh_YYYY 的关系,也是一条最容易被人忽略的约束:装机容量是额定功率,乘上一年 8,760 小时才得到理论上限,而任何一座厂都跑不满这个上限。两者之比就是容量因子,它因燃料、因国别、逐年各异。把容量当发电量,等于假设全世界的电厂全年满负荷运转。
1.3 三十秒决策卡:你的处境,它能帮你什么
| 你的处境 | 这份台账能帮你什么 |
|---|---|
| 要给一批经纬度补上「附近有没有电厂、多大、烧什么」 | 直接按坐标做邻近匹配,全库带坐标,且 geolocation_source 交代了坐标出处 |
| 要做国别电力结构的静态画像 | 按 country × primary_fuel 汇总容量,得到的是一张装机结构表,不是发电结构表 |
| 要查某座知名电厂的基本信息 | 按名称或 gppd_idnr 直取,容量、投产年、所有者、数据来源多数能填上 |
| 要做电厂级排放或用水的估算输入 | 容量、燃料、坐标齐全,可作为排放因子法的输入;但发电量本身大半是推算的,误差会叠加 |
| 要把电厂与流域、人口、气候格点做空间连接 | 坐标是 WGS84 十进制度,可直接与栅格或矢量底图对齐,但精度差异要处理 |
| 要一份 2020 年以后的全球电力数据 | 给不了。最后一版发布于 2021 年,之后没有更新 |
最后一行值得单独讲。这个库的年份字段容易让人产生错觉:year_of_capacity_data 里 10,281 条写的是 2019 年,看起来像「2019 年的数据」,可以当时效;但库在 2021 年定格,2020 年之后新投产的电厂、退役的机组、改建的燃料,一概不在里面。
1.4 不适合谁
不适合要发电量时序的人。 七个年度值就是全部,没有月度、没有逐日、没有逐时。做负荷预测、做调峰分析、做出力模拟,都不该从这里出发。
不适合要精确燃料构成的人。 库里只保留主燃料加最多三个副燃料,三列的顺序本身没有意义,第四个起被截断。要做精确的燃料占比,必须另找源头。
不适合做全球无偏统计的人。 覆盖差异是结构性的:美国 9,833 条、中国 4,235 条、英国 2,751 条,而 17 个国别代码不到三条。直接对全库求和得到的「全球电力结构」实际上高度偏向美、中、英、巴西、法五国。
不适合要最新状态的人。 库已停止更新,它是一个时点快照,而非持续维护的活库。
1.5 贯穿本文的案例:佛罗里达的 Turkey Point
为了让「名册而非曲线」这件事落到具体数字上,全文用同一座厂贯穿。取美国佛罗里达州迈阿密以南的 Turkey Point,gppd_idnr 为 USA0000621。
选它有三个理由。它是全美装机排名靠前的大型电厂,容量 2,861.2 MW,不是边缘样本;它同时带核电与两种副燃料,正好演示燃料字段的多层结构;它的上报发电量与模型估算值都填了,而且差值不小,是「两套账」最清楚的标本。
这一行记录的关键字段是:国家 USA,坐标北纬 25.4356、西经 80.3308,主燃料 Nuclear,副燃料依次 Oil 与 Gas,投产年 1987.5449,所有者 Florida Power & Light Co,容量数据年份 2019,wepp_id 写的是 20282|20284 两个编号用竖线连在一起。
它的发电量两组数值并列:2017 年上报 18,022.70 GWh,估算 22,698.72 GWh,估算比上报高 25.9%。同一年、同一座厂、同一条记录里,两个数字相差四分之一。
下文凡提「§1.5 的案例」,指的都是这一行记录。
§2 数据构成:一行是一座厂
2.1 一个发布包,五个文件
v1.3.0 的官方发布包是一个 4,178,889 字节的 zip,解压后五个文件,合计 14.7 MB 左右:
| 文件 | 字节 | 内容 |
|---|---|---|
global_power_plant_database.csv |
11,973,385 | 主表,34,936 行数据 |
README.txt |
10,659 | 元数据与 36 个字段的逐项说明 |
RELEASE_NOTES.txt |
1,547 | 相对 v1.2.0 的变更清单 |
A_Global_Database_of_Power_Plants.pdf |
1,441,800 | 建库技术说明,18 页,2021 年 3 月更新 |
Estimating_Power_Plant_Generation_in_the_Global_Power_Plant_Database.pdf |
1,685,244 | 发电量估算方法说明,36 页,2020 年 3 月 |
GitHub 仓库 output_database 目录下的主表与发布包内那份逐字节相同(两者 MD5 均为 bd938fe5d753dd29dde230d8690f09ab)。这一条值得记下来:很多元数据仓库里 GitHub 上的「最新版」其实领先于正式发布包,这里不是,两条链路给的是同一份文件。
CSV 的约定写在 README.txt 里:UTF-8 编码、逗号分隔、CRLF 换行、首行为表头、只在字段内含双引号时才加引号并按 RFC 4180 转义。这条约定在实际读取时很关键——Windows 换行与字段内引号的组合,会让不严谨的解析器把个别厂商名拆成多列。
2.2 36 个字段分五组
| 组 | 字段 | 性质 |
|---|---|---|
| 身份 | country、country_long、name、gppd_idnr |
谁、在哪国 |
| 物理 | capacity_mw、latitude、longitude |
多大、在哪 |
| 燃料 | primary_fuel、other_fuel1、other_fuel2、other_fuel3 |
烧什么 |
| 时间与归属 | commissioning_year、owner、year_of_capacity_data |
何时起、谁拥有、容量哪年报的 |
| 溯源 | source、url、geolocation_source、wepp_id、generation_data_source |
数据从哪来 |
| 发电量 | generation_gwh_2013 至 _2019 七列、estimated_generation_gwh_2013 至 _2017 五列、estimated_generation_note_2013 至 _2017 五列 |
发了多少、怎么算的 |
最后一组占了 36 个字段里的 17 个,接近一半。这个比例说明建库人清楚:发电量才是使用者最想要、也最难拿到的东西,所以给了它最多的列,同时也给了它最多的说明性字段。
2.3 主键 gppd_idnr 的构成
README 与 README.txt 都说明了编号规则:从国家级机器可读来源采集的电厂,编号由 ISO 3166-1 三字母国别码加七位数字组成;从其他来源(含 WRI 人工整理)采集的,由变长的前缀码加七位数字组成。
按前缀统计,规模最大的几类前缀是:
| 前缀 | 记录数 | 含义 |
|---|---|---|
WRI |
13,173 | WRI 人工整理 |
USA |
9,789 | 美国 EIA |
WKS |
3,690 | Wiki-Solar 光伏库 |
GBR |
2,705 | 英国可再生规划数据库 |
BRA |
2,340 | 巴西 ANEEL |
CAN |
1,154 | 加拿大自然资源部 |
IND |
492 | 印度中央电力局 |
GEO |
332 | Global Energy Observatory |
CHL、MEX、ARG |
254、251、231 | 智利、墨西哥、阿根廷能源部门 |
前缀为 WRI 的占全库 37.7%。这个比例很说明问题:超过三分之一的电厂不是从某国官方系统里读出来的,而是 WRI 自己一条条整理进去的。这也解释了为什么溯源字段 source 与 geolocation_source 要分成两列——数据与坐标常常来自不同的地方。
2.4 一条记录逐字段解剖
回到 §1.5 的案例,把 Turkey Point 这一行完整摊开:
| 字段 | 值 | 该怎么读 |
|---|---|---|
country / country_long |
USA / United States of America | ISO 三字母码加全称,全称偏口语化(如 F’Krina 一类地名会带撇号) |
name |
Turkey Point | 罗马化名称,未强制定长,存在同国重名 |
gppd_idnr |
USA0000621 | 国别码加七位序号 |
capacity_mw |
2861.2 | 兆瓦,带一位小数 |
latitude / longitude |
25.4356 / -80.3308 | WGS84 十进制度,四位小数约合 11 米分辨率 |
primary_fuel |
Nuclear | 贡献发电量最大的那种燃料 |
other_fuel1 / 2 / 3 |
Oil / Gas / 空 | 副燃料,顺序无意义 |
commissioning_year |
1987.5449461764294 | 浮点年份,小数点后表示年内位置 |
owner |
Florida Power & Light Co | 控股方,非运营商 |
source |
U.S. Energy Information Administration | 数据报告方 |
url |
http://www.eia.gov/electricity/data/browser/ |
来源网页,不是本厂页面 |
geolocation_source |
U.S. Energy Information Administration | 坐标出处 |
wepp_id |
20282\ | 20284 |
year_of_capacity_data |
2019 | 容量数值的报送年 |
generation_gwh_2017 |
18022.696956 | 上报发电量 |
generation_data_source |
U.S. Energy Information Administration | 上报值的来源 |
estimated_generation_gwh_2017 |
22698.72 | 模型估算值 |
estimated_generation_note_2017 |
CAPACITY-FACTOR-V1 | 用的是产能因子基线模型 |
estimated_generation_note_2013–_2016 |
NO-ESTIMATION | 前四年没有给估算 |
从这张表能读出四件在别处读不到的事。
第一,commissioning_year 是浮点数,不是年份。1987.5449 换算下来大约是 1987 年 7 月中旬。这个字段本意是「首台机组发电的年份」,但因为按机组容量加权折算,小数部分被保留了下来。全库 17,447 条有投产年的记录里,3,048 条带非零小数。把它直接当年份用,精度提高了一个量级,但意义变了;把它取整,又会与原始资料对不上。
第二,wepp_id 不是一对一。Turkey Point 对应 WEPP 的两个编号,说明对方库里这一座厂被登记成了两条。全库 46.5% 的记录有 wepp_id,有匹配失败的、也有多对一的,所以这个字段只能当辅助线索,不能当外键。
第三,url 指向的是数据源首页,不是本厂的资料页。这意味着「溯源」这个承诺在字段层面只做到「哪家机构报的」,要做到「哪个文件哪一张表」,得回到原机构自己的系统里去查。
第四,估算与上报同时存在,且不互相覆盖。这一行的估算值比上报值高 25.9%。技术说明对此的解释很直接:估算的作用是给没有上报的厂一个量级,而不是给有上报的厂做校验;所以对既有上报又有估算的行,上报值优先。
2.4b 空值的三种含义
这份台账的空格子有三种完全不同的含义,混在一起读会误判。
第一种是「确实没有」:该国不存在这类数据,或该厂不适用这个字段。比如 commissioning_year 空,很多时候是因为原始来源根本没写投产年,而不是电厂不存在(全库 49.9% 的记录有投产年,另 50.1% 没有)。
第二种是「有但没采」:数据公开存在,只是这一版没来得及收进来。owner 字段最典型:59.7% 的记录有值,其余四成并非电厂没有所有者,而是公开资料里查不到或没去查。
第三种是「不适用于这一行」:estimated_generation_gwh_2017 空,可能是 NO-ESTIMATION,原因是估算年份早于投产年、当年无适用模型、或基线模型被选择性关闭。这三种原因在 README.txt 里都列了,但主表里不会告诉你是哪一种。
三种含义在同一个空单元格里无法区分,这是这份台账最实在的一处信息损失。可操作的办法是:填充分布本身就是信息。generation_data_source 的填充率 32.6%、wepp_id 的 46.5%、year_of_capacity_data 的 42.6%,这三个比例远的差距反映的是各国统计体系的差异,而不只是建库时的工作量差异。
2.5 与同类资源的定位差异
| 资源 | 核心内容 | 与本库的差异 |
|---|---|---|
| GPPD | 逐站属性,一厂一行,覆盖全球 | 唯一同时覆盖燃料、坐标、容量、所有权的开放全球台账 |
| 各国监管机构电厂清单 | 单国、权威、更新及时 | 精度更高,但国别间不可比,语言与口径各异 |
| 国际能源署与 IRENA 国别统计 | 国家级装机与发电总量 | 无电厂级粒度,但有权威的国别口径,可用来标定本库的覆盖缺口 |
| 碳排或产能相关的第三方电厂库 | 侧重排放与产能因子 | 指标更专,覆盖电厂数更少 |
| 各国电网调度公开数据 | 逐时出力 | 时间粒度细得多,但只有少数国家公开,且不含全球统一的燃料编码 |
一句可操作的判断规则:要「这一座厂是什么」,看这里;要「这一国发了多少」,看国别统计;要「这一座厂现在出了多少力」,看调度数据。
2.6 记录粒度上的一处含糊:一座厂到底是什么
「一个并网点」这个定义听起来精确,落到数据上却留下了明显含糊。
同一并网点的多台机组被并成一行:一台核电机组加一台燃油备用机,合成一行 Nuclear 加 Oil。不同并网点、地址相邻、同属一家公司的两个厂,则各占一行。于是「一座电厂」在不同国家可能指不同的东西——在美国,EIA 的厂级口径与库的口径基本吻合;在把多台机组分散接入的点位,库的厂数会明显少于机组数。
这处含糊在统计上有两个后果。第一,按记录数得到的「电厂数」是并网点数,不是机组数,也不是法人实体数。第二,同一座厂的多燃料记录无法拆出各燃料对应的容量,所以「煤电装机」这个数在混烧厂上只能是整厂容量。
技术说明对此的态度是承认并留待后续:发电机组级信息在 v1.3.0 里没有,列为未来步骤。这个空缺不是疏忽,而是在全球范围内找不到足够统一的机组级公开数据。
§3 燃料层:主燃料、副燃料与三种分层错误
3.1 15 种主燃料,按记录数与容量各排一次
primary_fuel 的取值只有 15 个,比很多人预想的少。按记录数排:
| 主燃料 | 记录数 | 容量合计(MW) |
|---|---|---|
| Solar | 10,665 | 188,312 |
| Hydro | 7,156 | 1,053,160 |
| Wind | 5,344 | 263,054 |
| Gas | 3,998 | 1,493,051 |
| Coal | 2,330 | 1,965,541 |
| Oil | 2,320 | 261,879 |
| Biomass | 1,430 | 34,281 |
| Waste | 1,068 | 14,749 |
| Nuclear | 195 | 407,912 |
| Geothermal | 189 | 12,688 |
| Storage | 135 | 1,712 |
| Other | 43 | 3,613 |
| Cogeneration | 41 | 4,048 |
| Petcoke | 12 | 2,425 |
| Wave and Tidal | 10 | 552 |
这两列放在一起看,就是这份台账最容易被读错的地方。光伏按记录数占 30.5%,按容量只占 3.3%;煤炭按记录数占 6.7%,按容量占 34.4%。
原因很朴素:一座燃煤电厂的容量动辄上千兆瓦,一座分布式光伏可能只有 1 到 10 兆瓦。全库 34,936 条里,容量超过 1,000 MW 的只有 1,569 条(4.5%),却占了 53.0% 的装机。容量中位数只有 16.79 MW。
所以「按电厂数量说电力结构」和「按装机容量说电力结构」会得到两张完全不同的图。前者描述的是设施数量与小规模发电单元,后者才接近电力系统的实际体量。
3.2 primary_fuel 是「最大份额」,不是「唯一燃料」
README.txt 对这个字段的定义写得很清楚:主燃料是贡献发电量份额最大的那种燃料,或者是数据源认定的主燃料。这意味着两件事:一个电厂可以同时烧煤、油、气;而主燃料的判定不一定经过测算,可能只是照抄数据源的说法。
副燃料三列 other_fuel1 到 other_fuel3 的填充数依次是 1,944、276、92,带任一副燃料的记录共 1,944 条,占 5.6%。第 2 列与第 3 列的填充急剧衰减,部分是真实情况(多数混烧厂只有一种副燃料),部分是截断——库里只保留三个副燃料槽位,第四个起直接丢弃。
一个必读的告示来自 JSON-LD 与 README.txt 两处,措辞一致:副燃料三列的顺序不代表任何优先次序。这不是客气话。在构建主表时,副燃料原本以无序集合类型存储,输出成 CSV 时为了配合三列格式被摊平成序列,编号只是列表位置,不代表机组重要性,也不代表投运先后。
3.3 三种按燃料分组会犯的错
错法一:只按主燃料分组。 1,944 条混烧记录会被整块记到主燃料名下,容量也一并归过去。对煤电的影响最大:煤加副燃料的组合里,煤单独以外的搭配有 289 条是「主煤副油」、73 条是「主煤副气」、50 条是「主气副煤」。
错法二:把副燃料也当成一份容量。 副燃料没有独立容量列,capacity_mw 是整厂的。若把一个混烧厂在两个燃料类别下各记一次,容量会被重复计数。
错法三:把 Other、Cogeneration、Storage 当燃料。 这三个取值不是燃料,是性质。Storage 是储能,Cogeneration 是热电联产,Other 是兜底的未知。在燃料结构统计里把它们单列是合理的,混进化石或可再生里都会失真。
3.4 一起看混烧:气油与煤气
按主副燃料组合取前几名:
| 组合 | 记录数 | 读法 |
|---|---|---|
| 主气 + 副油 | 795 | 典型的燃气电厂保留燃油备用 |
| 主煤 + 副油 | 289 | 燃煤锅炉的助燃或点火用油 |
| 主油 + 副气 | 166 | 燃油电厂后期改烧气 |
| 主煤 + 副气 | 73 | 常见于燃煤机组的掺烧或改造 |
| 主废料 + 副气 | 70 | 垃圾焚烧厂的辅助燃料 |
| 主生物质 + 副废料 | 60 | 生物质与固废界线模糊 |
| 主气 + 副煤 | 50 | 少见,多为记录口径问题 |
| 主光伏 + 副储能 | 26 | 光伏配储,非混烧而是联合布置 |
前四组是真正的混烧,后四组里有相当一部分其实是联合布置而非燃料混合。这一点很难从字段本身分辨:库里没有一列说明副燃料是「同一炉膛掺烧」还是「同厂址另一套机组」。技术上,一座厂被定义为「一个并网点」,所以同一并网点下的核电与油机、光伏与电池,都会被并进这一行。
§1.5 的案例就是这种并厂的标本。Turkey Point 主燃料是 Nuclear,副燃料有 Oil 与 Gas。这三者不可能是同一个炉膛里的燃料,实际是同一个厂址上的核电机组与燃油、燃气备用机组。若按「燃料」理解这一行,会误以为核电厂烧油烧气。
3.5 燃料编码缺失带来的合并难题
15 种主燃料是从各数据源的燃料名称里归并出来的,归并规则表在仓库的 resources/fuel_type_thesaurus。归并意味着丢失:不同的技术(联合循环与单循环燃气轮机、陆上风电与海上风电、单晶与多晶光伏、径流式与抽水蓄能)在库里全都合并成同一个燃料值。
技术说明明确提到了后续补充计划:加入技术类型、发电机组级信息、排放与水耗指标。这些在 v1.3.0 里都没有。所以要做「燃气联合循环与单循环的对比」这类分析,这个库只能给到厂级容量,技术类型得另外找。
§4 发电量层:两套账,七个年份
4.1 七列上报、五列估算、五列方法标签
发电量在这份台账里占 17 个字段:
| 列组 | 字段 | 年份范围 |
|---|---|---|
| 上报 | generation_gwh_2013 至 generation_gwh_2019 |
2013–2019,七列 |
| 估算 | estimated_generation_gwh_2013 至 _2017 |
2013–2017,五列 |
| 方法标签 | estimated_generation_note_2013 至 _2017 |
2013–2017,五列 |
| 来源标注 | generation_data_source |
单列,注明上报值来自哪个机构 |
估算只做到 2017 年,上报做到 2019 年,这个不对称来自 v1.3.0 的发布说明:当年新增了 2018、2019 两列上报值,但没有同步扩估算年限。
两组的覆盖率差得很远:
| 年份 | 有上报值 | 有估算值 |
|---|---|---|
| 2013 | 6,417(18.4%) | 16,120(46.1%) |
| 2014 | 7,226(20.7%) | 16,503(47.2%) |
| 2015 | 8,203(23.5%) | 17,050(48.8%) |
| 2016 | 9,144(26.2%) | 17,570(50.3%) |
| 2017 | 9,500(27.2%) | 33,138(94.9%) |
| 2018 | 9,637(27.6%) | — |
| 2019 | 9,659(27.6%) | — |
2017 年的估算覆盖率跳到 94.9%,原因就在方法标签里:CAPACITY-FACTOR-V1 这个基线模型只对 2017 年有效,README.txt 明写「This model is only permissible for year 2017」。所以只有 2017 年这一列是「尽力填满」的,前四年则按燃料专用模型的适用范围各填各的。
4.2 六种估算方法标签
方法标签的六种取值与覆盖次数(按 2013 至 2017 五列合计 169,843 个槽位计):
| 标签 | 出现次数 | 含义 |
|---|---|---|
NO-ESTIMATION |
74,299 | 未给估算,理由有三种,见下 |
SOLAR-V1-NO-AGE |
35,798 | 光伏,缺投产年时使用的版本 |
HYDRO-V1 |
35,536 | 水电专用模型 |
CAPACITY-FACTOR-V1 |
14,942 | 国别×燃料的平均产能因子基线 |
WIND-V1 |
8,430 | 风电专用模型 |
SOLAR-V1 |
5,675 | 光伏,有投产年的版本 |
README.txt 对 NO-ESTIMATION 列了三种原因:估算年份早于该厂投产年;当年缺少适用的模型;2017 年对该用基线模型的部分国别×燃料组合选择性不适用。
第三种原因最值得注意。 基线模型会按国别与燃料算出一个平均产能因子,再按装机份额分摊。若算出来的产能因子超过 90%,说明这一组合的国别总量与库内装机严重不匹配(多半是该国发电总量远大于库内已收录的电厂),此时模型不用这个值,直接留空。这是一个相当克制设计选择:与其给出一个明显荒谬的数,不如空着。
README.txt 给了这项留空的规模:NO-ESTIMATION 在 2017 年约占全部行的 5%(约 1,800 行),占全部容量的 1.3%(约 77 GW)。主表里实际数出来的是 1,798 条,与说明几乎一致。
4.3 两套账的同框对比
2017 年,上报与估算同时非空的有 9,241 条;只有估算的 23,897 条;只有上报的 259 条;两者都没有的 1,539 条。
在有上报值且不为零的 8,342 条里,估算值除以上报值:
| 统计量 | 值 |
|---|---|
| 中位数 | 1.04 |
| 十分位 | 0.51 |
| 九十分位 | 18.27 |
| 比值超过 2 倍 | 23.5% |
| 比值不到一半 | 9.5% |
中位数 1.04 看起来很体面,仿佛估算与上报基本一致。这个数容易误导。它说的是「一半的电厂估算与上报相差不到一成」,没说分布的形状;九十分位 18.27 说明有一成电厂的估算值是上报值的十八倍以上,这才是分布的真面目。
原因可以从方法里推出来。基线模型按国别×燃料的年度总量,乘上该厂在同国同燃料装机中的份额。这一算法有一个隐含前提:同国同燃料的所有电厂,容量因子相同。凡是容量因子明显偏离国别均值的厂,都会被打偏:常年满发的核电厂会被低估,一年只跑几百小时的调峰燃气厂会被高估。
§1.5 的案例正是被低估的那一类。Turkey Point 是一座利用率很高的核电厂,2017 年上报 18,022.70 GWh,估算 22,698.72 GWh。它的容量 2,861.2 MW,理论上限发电量约 25,064 GWh,上报值对应的容量因子约 71.9%,估算值对应的约 90.6%。也就是说,基线模型按国别均值给它在一年跑了九成的假设;实际跑了七成。推算比实际情况乐观。
4.4 上报值的口径也不统一
generation_gwh_* 填了就是有人报过,但「报的是什么年」并不统一。README.txt 明写:上报值可能对应日历年,也可能对应财政年度或监管年度,库里不作区分。
这个坑在做跨国年度对比时会立刻显形。日本的财年从 4 月起算,印度的财政年从 4 月起算,有些电力公司的监管年与日历年错开几个月。这些差异在一个国家的内部分析里可以忽略,一旦把几十个国家的上报值拼成一张全球表,季节性错位就开始影响到结论。
上报来源的集中度同样明显。有 generation_data_source 的 11,400 条里,美国能源信息署占 9,715 条,其余分散在四十多个来源。也就是说,全球范围内有上报发电量、且知道出处的记录,八成以上来自同一个国家的一个机构。
4.5 时间序列的三道墙
第一道墙:样本不连续。 一座厂 2013 年有值、2014 年空、2015 年有值,这种情况很常见,因为不同年份的上报来源不同、覆盖不同。直接按年份平移做差分,会把缺失当零。
第二道墙:口径不一致。 上报与估算混用会把曲线锯开。一座厂前四年是 HYDRO-V1 估算、后三年是上报值,把七年连成一条线,看到的「增长」或「下降」可能只是口径切换。
第三道墙:时间分辨率。 七个年度点,做趋势拟合已经勉强,做季节性分解、做日内调度学习是完全不可能的。技术说明里提到的所有模型(产能因子基线、风电光伏水电专用模型)都以年为步长,没有更细的粒度可供反推。
4.6 七列上报值加起来对不上全球总量
一个可以自己做的检验:把 2019 年这一列(上报值最全的一年)的全部数值相加,得到约 409 万 GWh。而同年全球发电量在六万亿千瓦时上下,差了一个数量级。
差额的构成有两部分。其一是覆盖:只有 9,659 条记录有 2019 年上报值,占全库 27.6%,其余记录在当年要么没报、要么资料源根本没更新到 2019 年。其二是回溯性:库发布时,各国的 2019 年度统计大多尚未出齐,能填上 2019 年的主要是美国能源信息署这条线。
把这一列的损失率按年份画出来更直观:2013 年合计 380 万 GWh、2015 年 625 万 GWh、2017 年 629 万 GWh、2019 年回落到 409 万 GWh。这条曲线先升后降,看起来像全球发电量在 2018 年之后腰斩,实际只是逐年补充的上报来源在 2018、2019 两年没有跟上。任何把这条曲线当趋势的人,都会得出一个不存在的结论。
4.7 估算值只对「同年同国同燃料」有守恒性
基线模型有一个不难验证的性质:对同一个国家、同一个燃料、同一年份,把各厂的估算值加起来,应当正好等于该国该燃料的年度总量——因为模型就是从总量往回按装机份额拆的。
这个性质用来说明两件事。
第一,估算值的可信度是成组而非逐条成立的。单看一座厂,估算值可能偏离真实值数倍;把一组厂加起来,偏差会部分抵消,因为拆分本身是守恒的。所以估算适合做区域加总,不适合做单厂判断。
第二,守恒性只在基线模型里成立。SOLAR-V1、WIND-V1、HYDRO-V1 这三个燃料专用模型走的是另一条路:用投产年、坐标、国别等参数推该厂自身的容量因子。它们不保证组内加总等于国别总量。把三类模型的输出混在一起使用,守恒性就破了。
§1.5 的案例在这一项上属于「有上报、估算也填了」的那一类。它当年用的正是基线模型,理论上它与美国其余核电厂的估算值相加,会等于美国核电当年的总量。但既然它自己有上报值,这条守恒链上它已经被扣减过,所以不宜再拿它做单厂校验。
§5 覆盖与坐标:名册的疏密与定位的粗细
5.1 167 个国别代码,前十占近七成
按记录数排,前十个国别代码合计 30,000 余条,占全库 68.2%;按装机合计排,前十占 70.0%。两者的名单略有不同:
| 排名 | 按记录数 | 条数 | 按装机 | 容量(MW) |
|---|---|---|---|---|
| 1 | USA | 9,833 | CHN | 1,415,067 |
| 2 | CHN | 4,235 | USA | 1,204,638 |
| 3 | GBR | 2,751 | IND | 316,089 |
| 4 | BRA | 2,360 | RUS | 228,220 |
| 5 | FRA | 2,155 | JPN | 215,366 |
| 6 | IND | 1,589 | BRA | 147,589 |
| 7 | DEU | 1,309 | CAN | 143,579 |
| 8 | CAN | 1,159 | DEU | 112,040 |
| 9 | ESP | 829 | FRA | 110,616 |
| 10 | RUS | 545 | KOR | 99,473 |
美国按记录数第一、按装机第二;中国反过来。英国按记录数第三,按容量排不进前十;韩国按容量第九,记录数只有 132 条。这两张表的差异不是统计口径问题,而是设施规模结构的差异:英国与德国的可再生能源设施数量多而单体小,韩国与日本则是大型集中式机组为主。
5.2 稀疏的另一端:17 个国别代码不到三条
| 国别代码 | 记录数 | 容量(MW) |
|---|---|---|
| ATA(南极洲) | 2 | 7.6 |
| PSE(巴勒斯坦) | 1 | 7.6 |
| ESH(西撒哈拉) | 1 | 23.4 |
| LCA(圣卢西亚) | 1 | 3.0 |
| GNB(几内亚比绍) | 1 | 18.2 |
| DJI(吉布提) | 1 | 107.3 |
| LSO(莱索托) | 1 | 72.0 |
| SUR(苏里南) | 1 | 5.0 |
南极洲的记录是科考站自备电源,西撒哈拉与圣卢西亚各一条。这些记录的存在说明库的收录边界是「能定位到坐标且容量不低于 1 MW」,而不是「有电网供电的国家」。16 个国别代码只有一条记录,把它们放进国别比较,任一跨国均值都会被这几条拽偏。
5.3 覆盖缺口有官方口径,但没有逐国数字
技术说明给了一张按燃料的覆盖表,基准是 2020 年 8 月的国际总量:
| 燃料 | 覆盖全球装机比例 | 缺口(MW) | 比对基准 |
|---|---|---|---|
| 核电 | 超过 100% | — | IAEA,2020 |
| 地热 | 90.33% | 1,345 | IRENA,2019 |
| 煤电 | 超过 100% | — | Platts,2017 |
| 水电 | 88.48% | 136,765 | IRENA,2019 |
| 天然气与油 | 81.58% | 391,715 | Platts,2017 |
| 生物质 | 76.38% | 10,649 | Platts,2017 |
| 风电 | 38.59% | 382,205 | IRENA,2019 |
| 光伏 | 30.27% | 407,782 | IRENA,2019 |
核电与煤电超过 100%,意味着库内这两类的装机合计已大于同期国际统计总量。可能的解释有三种:基数年份不同(库内容量年份跨 2000 至 2019)、库内重复计数、统计口径差异(如是否含自备电厂)。库本身没有对此作出说明。
风电与光伏的覆盖只有三到四成,这是这份台账最实质的短板。而这两类恰恰是数量占比最大的两类(光伏 10,665 条、风电 5,344 条)。也就是说,数量上最密的品类,恰恰是覆盖漏洞最大的品类。
5.4 坐标精度没有分级字段,只能从出处反推
这是与常见想象差距最大的一点。库里没有一列写「坐标精度为厂址/城市/国别」。只有 geolocation_source 交代出处,28 种取值:
| 出处 | 记录数 | 精度含义 |
|---|---|---|
| U.S. Energy Information Administration | 9,789 | 厂址级,监管报送的经纬度 |
| Wiki-Solar | 3,690 | 光伏电站中心,个案可能落在阵列中部 |
| WRI | 2,869 | 人工整理,精度不定 |
| UK Renewable Energy Planning Database | 2,582 | 规划审批坐标,多为厂址 |
| Open Power System Data | 2,389 | 欧洲电网运营商汇总 |
| Agência Nacional de Energia Elétrica (Brazil) | 2,338 | 监管登记坐标 |
| GEODB | 1,788 | GEO 库转来,技术说明称抽测 50 座中 92% 在 300 米内 |
| UNFCCC CDM Registry | 1,598 | 碳交易项目登记坐标 |
| Industry About | 1,327 | 民间整理 |
| CARMA | 1,295 | 技术说明称精度不如 GEO |
技术说明给了两处关键数字。第一,只有 29.7% 的容量是用国家级数据定位的;其余靠 GEO、CARMA 等二级库匹配或卫星影像人工识别。第二,与 GEO 的匹配用弹性搜索,参数是名称权重 2 倍、国家 1 倍、燃料 1 倍,命中 1,797 座、占容量 20.5%;中等置信度的匹配还要人工复核,约一半被判定为有效。
匹配当然会出错。README 直承这一点:匹配算法可能把两座不同的电厂错配成一条,也可能把同一座厂的两条记录匹配失败。这意味着坐标层面的误差不是均匀随机噪声,而是集中在特定来源的国家——凡是靠 GEO 与 CARMA 补坐标的国家,误差结构与那两家库的误差结构绑定在一起。
§1.5 的案例在这一项上是干净的一端。Turkey Point 的坐标来自美国 EIA 的监管报送,四位小数,可直接与卫星影像对上。但同一张表里的另一端是 GEODB 转来的记录,那类坐标只保证 300 米量级。
5.5 覆盖不均如何污染全球统计
做全球燃料结构统计时,若直接把全库求和,得到的是「所收录电厂的容量结构」,不是「全球电力结构」。这两者的差距由各国的收录完整度决定。
举一个可算的例子:全库煤炭装机 1,965,541 MW,水电 1,053,160 MW,两者比约 1.87 比 1。而按上面那张覆盖表,煤电覆盖基准已超过 100%、水电覆盖 88.48%,也就是说水电的缺失比煤电多。修正之后,水电的真实占比应当比库内比例更高。
另一个例子是风电与光伏:库内风电 263,054 MW、光伏 188,312 MW,但国际统计里的实际装机远大于此(缺口分别是 382,205 MW 与 407,782 MW),且光伏的缺口比例更大。不做覆盖加权,光伏的份额会被系统性低估。
可操作的修正办法只有一条:用外部权威的国别×燃料总量做分母,把库内合计做分子,算出逐格的覆盖系数,再按格反向加权。技术说明自己就是这么算覆盖率表的,任何做全球统计的人都可以照此办理。
§6 版本、许可与获取
6.1 一条命令拿到,三条链路等价
cd /tmp && curl -sL -o gppd.csv \
"https://raw.githubusercontent.com/wri/global-power-plant-database/master/output_database/global_power_plant_database.csv" \
&& wc -l gppd.csv && head -1 gppd.csv | cut -c1-60
输出应为 34,937 行(34,936 条数据加表头)与一行 36 列的字段名。文件大小 11,973,385 字节。
冷启动时单线程下载会很慢。GitHub 的原始文件端点支持 HTTP Range,分块并行拉可以显著提速:
cd /tmp && U="https://raw.githubusercontent.com/wri/global-power-plant-database/master/output_database/global_power_plant_database.csv"
S=1000000; for i in $(seq 0 11); do s=$((i*S)); e=$((s+S-1)); [ $i -eq 11 ] && e=11973384
curl -s --retry 2 -r $s-$e -o part_$(printf %02d $i) "$U" & done; wait
cat part_* > full.csv && wc -l full.csv
三段式说明:先取 Content-Range 拿到总长(这里回的是 bytes 0-0/11973385),再按 100 万字节切段,最后按序拼接。拼接顺序必须按段号,因为 cat part_* 依赖文件名的字典序。
发布包那条链路给的是同一份文件,MD5 一致,但多带三份说明文档,适合离线留存:
curl -sL -o gppd130.zip \
"https://datasets.wri.org/private-admin/dataset/53623dfd-3df6-4f15-a091-67457cdb571f/resource/66bcdacc-3d0e-46ad-9271-a5a76b1853d2/download/globalpowerplantdatabasev130.zip"
unzip -l gppd130.zip
md5sum gppd130.zip # 与 GitHub 版 CSV 内容一致,包内文件名去掉了前缀
6.2 第三通道:Resource Watch 的 SQL 转发
页面 JSON-LD 的 distribution 里列了一个图层端点,指向 Resource Watch。它不是文档化 API,而是一条把 SQL 转发到底层表的查询通道:
curl -s "https://api.resourcewatch.org/v1/query/a86d906d-9862-4783-9e30-cdb68cd808b8?sql=SELECT%20count(*)%20as%20n%20FROM%20powerwatch_data_20180102"
返回 {"data":[{"n":34936}]},与 CSV 行数一致。底层表名是 powerwatch_data_20180102,名字里的日期是 2018 年 1 月 2 日,而表内数据已更新到 2021 年的版本——表名不代表数据时点。
这条通道的价值是可以按国家、按燃料服务端聚合,不必把 12 MB 拉到本地。它的风险是未公开承诺稳定性,且表名一旦变更,查询就会直接报错。
6.3 许可:机器可读,两处可查
许可为 CC BY 4.0,两处比机器可读更直接地从响应与文件里取得:
curl -sL "https://datasets.wri.org/dataset/globalpowerplantdatabase" \
| grep -o '"license":{[^}]*}'
输出原文为:
"license":{"@type":"CreativeWork","name":"Creative Commons Attribution","url":"http://www.opendefinition.org/licenses/cc-by"}
第二处在发布包的 README.txt,License 行逐字写着:
License: Creative Commons Attribution 4.0 International -- CC BY 4.0
两处相互印证,且都是可读的结构化或固定格式文本。上一版底稿称许可「可在 API 响应体里机器读取」,这个说法可以保留,但要说清是网页内嵌的 JSON-LD,而不是某个数据 API 的响应头——JSON-LD 是页面元数据,不是 DataDownload 的响应体。真正从数据端点拿到的只有 CSV 本身,CSV 里没有许可字段。
许可条款带来的义务是署名。正式引用格式在 JSON-LD 的 citation 字段与 README.txt 里都给了,两份略有出入(年份一个写 2021、一个写 2019),用途上以 JSON-LD 的 v1.3.0 版为准。
6.4 版本:定版之后不再动
v1.3.0 发布于 2021-06-02,发布说明列出的相对 v1.2.0 变更包括:删掉单一的 estimated_generation_gwh 字段、改为按年五列;新增 2018 与 2019 两列上报值;新增 generation_data_source;光伏数据大改,从 Wiki-Solar 补入 3,700 多座、合计逾 113 GW;从 JRC-PPDB 补入约 450 座欧洲电厂的上报发电量;美国、澳大利亚、英国、印度的数据分别更新。
最该记住的一句在上游 README 的第一段:项目自 2022 年初起不再由 WRI 维护,没有计划中的更新,v1.3.0 是最后一版。发布包 README.txt 在 Updates 一节也留了伏笔:「Though updates have been infrequent, there is the potential that this is the last major update to this database.」
网页端仍可访问,页面元数据的 dateModified 是 2025-10-06。这个日期容易被误认为数据更新,实际是页面本身的改动时间。数据最后改动是 2021-06-02。
§7 质量评估:先换掉一套评价框架
7.0 阅读本节前需要知道的一件事
评价这份台账,不宜沿用「数据集质量」这套框架——用它来衡量,几乎一定会得出负面结论:覆盖不全、字段缺失、发电量大半是推算、停止维护、坐标精度未标。
换成另一套框架更贴近事实:它是一份一次性完成的长名单。评判长名单的标准,是它有没有把该点到的名字都点到、有没有为每个名字留下足够核实的信息、有没有诚实地标出哪里没点到。按这套标准,它的完成度相当高——每条记录都有数据来源与坐标出处,每列发电量都标了是报的还是算的,连「哪一年哪一类没算」都写进了说明文件。
7.1 逐条局限
第一,没有时间序列。 七个年度值就是全部。任何以「出力」「负荷」「曲线」为前提的任务,都不该从这里出发。
第二,发电量分两套账,且两套不互校。 上报值优先,估算值只用于填补空缺。2017 年两列并存的行有 9,241 条,其中不少相差数倍。混用两列做年度对比,会把口径差异当成趋势。
第三,燃料只保留三个副燃料。 混烧厂的完整燃料构成无法从库里恢复;副燃料的顺序无意义,也不能解释为投运先后。
第四,覆盖极不均。 前十国占 68.2% 的记录;风电与光伏按国际统计只覆盖三到四成;17 个国别代码不到三条。
第五,坐标精度无字段标记。 只有出处,没有精度分级。要靠出处反推,而部分出处(如 WRI、Industry About)本身精度不定。
第六,部分坐标可能是匹配错配的产物。 技术说明承认弹性搜索匹配会错配,也会漏配。这类误差集中在靠 GEO 与 CARMA 补坐标的国家。
第七,commissioning_year 是浮点数。 3,048 条带非零小数。当整数年份用会引入年内位置的伪精度,当连续变量用又缺乏明确的小数语义(README.txt 只说是按容量加权)。
第八,year_of_capacity_data 只有 11 个取值、42.6% 的填充率。 容量数据的报送年份早到 2000 年,晚到 2019 年,跨度近二十年。同一张表里比「2019 年的容量」,实际上混着不同年份的快照。
第九,wepp_id 不是一对一。 46.5% 的记录有值,存在一条记录对多个编号(如 §1.5 的案例)、也有编号被多条记录引用的情况。
第十,库已停止维护。 2020 年之后的一切变化都不在里面。若需要现状,必须另找数据源做增量更新。
7.2 三组可以自己做的对照
对照一:容量合计与国别统计总量。 把全库 capacity_mw 按燃料求和,再与 IRENA、IAEA 的同期总量相比,能得到逐燃料的覆盖系数。技术说明已经做过一次(基准 2020 年 8 月),用自己的数据可以复现。
对照二:估算与上报的分布。 取 2017 年两列都非空的行,分别按燃料算比值中位数。水电与风电的偏差方向往往相反,原因是两类模型的假设不同。
对照三:记录数口径 vs 容量口径。 同一批国家的两种排名差异越大,说明该国的电厂规模结构越分散。英国(记录数第三、容量跌出前十)与韩国(容量第九、记录数 132)是两个极端。
7.3 DAIMS 二十四项速评
| 维度 | 结论 | 依据 |
|---|---|---|
| 数据模型文档 | 强 | README.txt 逐字段说明,两份技术说明 PDF |
| 标识符稳定性 | 强 | gppd_idnr 定长 10 位,一厂一号 |
| 版本记录 | 强 | 发布说明逐条列出增删改 |
| 变更日志 | 强 | RELEASE_NOTES.txt 覆盖 v1.2.0 到 v1.3.0 |
| 许可明确 | 强 | JSON-LD 字段 + README.txt 文本,两处一致 |
| 署名要求 | 强 | 给出正式引用格式 |
| 文献溯源 | 中 | 到机构一级,url 指向来源首页而非本厂页 |
| 元数据完整性 | 强 | 字段说明与覆盖率表齐全 |
| 数据字典 | 强 | 36 个字段逐条定义 |
| 空值策略 | 中 | 空即未知,但没有显式的缺失原因码 |
| 精度分级 | 弱 | 坐标无精度字段,只能从 geolocation_source 反推 |
| 不确定度表达 | 弱 | 估算值不附误差区间 |
| 时间语义 | 中 | 年度值但财年与日历年不分 |
| 空间参考 | 强 | WGS84(EPSG:4326),README.txt 写明 |
| 质量控制标记 | 中 | estimated_generation_note_* 标方法,不标精度 |
| 覆盖声明 | 强 | 按燃料给出覆盖率与缺口,基准与年份都写明 |
| 抽样代表性 | 弱 | 无抽样设计,收录依赖可用性 |
| 关联资源链接 | 中 | wepp_id 通往第三方库,但不是一对一 |
| 访问接口 | 强 | 三个直链,无需注册 |
| 批量导出 | 强 | 单文件 CSV,12 MB |
| 速率限制 | 未涉及 | 静态文件 |
| 响应截断保护 | 未涉及 | 整文件下载 |
| 数据冻结版本 | 强 | v1.3.0 定版,不再变动 |
| 引用规范 | 强 | 两处给出格式 |
强项集中在「文档、许可、标识符、冻结」这四项,弱项集中在「精度分级、不确定度、抽样代表性」。这四项恰好是逐站台账最容易被忽视、也最影响下游建模的四项。
7.4 它为何能持续
答案有一半是否定的:作为活库,它已经停了。但作为一份被反复调用的资料,它没有停下。
第一层原因来自不可替代的对位。 全球范围内,同时具备开放许可、电厂级粒度、覆盖多国的台账,目前只有这一份。GEO 早在 2012 年前后停止有效更新,CARMA 的坐标精度被技术说明点名为不如 GEO。替代品不在。
第二层原因来自下游的隐性依赖。 它被大量研究当作基础清单:排放估算、水耗核算、退役影响分析、能源转型情景,方法节里常常写一句「电厂清单取自 GPPD v1.3.0」。这种依赖一旦进入论文,就具有自我维持能力;后来的研究为了可比,也得用同一版。
第三层原因来自停止的理由足够清楚。 上游 README 直说不再维护,并且公开征集维护分叉。这比一个「名义上在维护、实际上三年不动」的库要诚实:使用者知道自己在用一份 2021 年的快照,会自觉去找增量来源,而不会误以为它仍在更新。
它靠什么存在下来的?靠 600 多个来源、按国别逐一整理的漫长工作,加上 WRI 若干年的机构投入与 Google、KTH 等合作方的支持。它从哪里来?技术说明的第一段给了动机:在它出现之前,没有一份既真正全面、又完全开放的全球电厂库;各国能报的数据报法各异,拼不成一张可比表。这份台账的起点就是把这件事做一次。
7.5 三处读数的取舍建议
面对同一座厂在库里可能出现的多个数,给出落地的取舍顺序。
发电量:先看 generation_gwh_2017,非空就用它;空的时候看 estimated_generation_gwh_2017 的标签,若是 CAPACITY-FACTOR-V1 则按组使用,若是 SOLAR-V1 一类专用模型则单独使用并注明方法;两列都空的,记为未知,不要用相邻年份填补。
容量:直接取 capacity_mw,但要同时带上 year_of_capacity_data。没有这个年份的记录,容量所属时点不明,做时序对比时要单独标注。
坐标:先看 geolocation_source,出自国家监管机构的可以直接用于小范围判断;出自二级库匹配的要按 300 米量级处理;WRI 与 Industry About 这两类人工整理的,建议逐条抽查后再用。
这三条建议都指向同一个原则:同一张表里的数值,可信度不等价。把不等价的东西当成等价,是使用这份台账时最常见、也最难事后发现的一类错误。
§8 与库内条目的关系
8.1 它在库内的位置
库里此前没有任何一个电厂级或电力系统级的条目。它落进来,补的是「人类活动的物理基础设施」这一块,与已经收录的地表覆盖、气象、水文、地图类条目处于同一张地理底图上,但回答的是不同纬度的问题。
8.2 四条可操作的内链路径
| 从这份台账出发 | 到哪个条目 | 怎么接 |
|---|---|---|
| 某座水电厂所在流域的年径流与降水 | 多源融合降水 MSWEP | 用厂址经纬度取格点,与 HYDRO-V1 估算值对照 |
| 电厂是否为抽水蓄能或与水库共址 | 全球湖泊水面 HydroLAKES、子流域 HydroBASINS | 坐标落在水库多边形内即为共址 |
| 电厂所在地的气温与风速基准 | ERA5 单层再分析 | 按坐标与年份取格点,作为容量因子的解释变量 |
| 国别层面的用电与装机总账 | 世界银行开放数据 | 用国别指标做分母,算这份台账的覆盖系数 |
| 电厂周边的建成区与道路 | Overture Maps | 坐标做邻近查询,判断厂址是否落入城区 |
这五条路径有同一个前提:坐标是 WGS84 十进制度。库里 latitude、longitude 是数值列,可以直接参与计算;但要注意 §5.4 的精度差异,做小范围判断(如「厂址是否落在水库内」)时,靠 GEO 匹配来的坐标可能已经偏了几百米。
这两类条目的拼接里有一处会对不上:这份台账的坐标是厂址点,底图的多边形或栅格是面。点在面上时,要处理两种情况——点落在面外一点点(精度误差),与点落在面的缝隙里(底图覆盖漏洞)。前者要靠缓冲容差,后者不该硬凑,直接记为无匹配更安全。
8.3 检索路径:三种找法
按国别:country 用三字母码,不是两字母也不是中文名,country_long 才是名称。
按名称:name 是罗马化名称,同一国家内存在重名(同国同名记录 267 组),检索时要连同 country 一起限定。
按坐标:全库没有空间索引,需要在本地做距离计算,或用 §6.2 的查询通道把范围过滤下推到服务端。
三种找法返回的是同一张表,条件同时给出时取交集。
§9 使用指引
9.1 三种角色
角色一:能源研究者。 想知道某国的电力结构。路径是国别 × 燃料汇总容量,再用上报发电量校核,缺失部分标为估算。要避开的是只按记录数说话。
角色二:机器学习工程师。 想把电厂信息当作空间协变量。路径是取坐标做邻近或格点匹配,只取容量与燃料两类,不取发电量——后者的推算成分太重,作为标签会把模型误差与数据误差混在一起。
角色三:跨库整合者。 想与其他地理数据拼接。路径是先定坐标基准,再按 §5.4 的出处表给每条记录标一个精度权重。
9.2 最小可运行流程:从国别到燃料结构
import csv, collections
rows = list(csv.DictReader(open("global_power_plant_database.csv", encoding="utf-8")))
cap = collections.defaultdict(float)
cnt = collections.Counter()
for r in rows:
mw = float(r["capacity_mw"])
cap[(r["country"], r["primary_fuel"])] += mw
cnt[(r["country"], r["primary_fuel"])] += 1
for fuel in ["Coal", "Gas", "Hydro", "Nuclear", "Wind", "Solar"]:
mw = cap[("CHN", fuel)]
print(f"{fuel:<8} {cnt[('CHN', fuel)]:>5} 座 {mw:>10,.0f} MW")
四行关键点:capacity_mw 在库里是字符串,必须显式转换;聚合键用二元组,避免把同名列合并;打印时分成条数与容量两栏,这一对数字的落差本身就是信息;最后按需要把 fuel 列表换成全库 15 种取值。
9.3 从案例到对照:两套账的同框计算
import csv
rows = list(csv.DictReader(open("global_power_plant_database.csv", encoding="utf-8")))
def num(r, k):
v = r[k].strip()
return float(v) if v else None
tp = next(r for r in rows if r["gppd_idnr"] == "USA0000621")
act = num(tp, "generation_gwh_2017")
est = num(tp, "estimated_generation_gwh_2017")
print(f"上报 {act:,.2f} GWh | 估算 {est:,.2f} GWh | 比值 {est/act:.2f}")
print(f"容量因子:上报 {act/(tp['capacity_mw'] and float(tp['capacity_mw'])*8760):.1%}")
这段代码用在 §1.5 的案例上,会打印出比值 1.26 与容量因子约 71.9%。它的意义不在于复核 Turkey Point 一座厂,而在于把所有行都跑一遍之后,看比值分布的尾部有多长。
9.4 在 AI 流程中的位置
作为空间协变量源。 把电厂的位置、容量、燃料投影到网格上,得到的是一张「电力基础设施强度」图层。它与人口、夜间灯光、路网一起进入空间回归或遥感解译模型时,是少数能区分「有电厂」与「没电厂」的变量。
作为实体检索的知识源。 「某地有什么电厂」「某座厂的容量与投产年」这类问答,直接查表即可,不需要推理。
作为排放与用水的输入。 容量、燃料、坐标齐全,可套用排放因子法或水耗系数。这条路的关键在于:发电量本身大半是推算的,误差会传下去;若排放量对精度敏感,应该改用上报发电量覆盖的那 27.6% 记录,其余另找依据。
§10 AI 使用声明
| 项目 | 说明 |
|---|---|
| 性质 | 设施台账,非标注数据集,无人工标签 |
| 建议用途 | 空间协变量、设施问答、排放与用水的输入、国别装机结构画像 |
| 不建议用途 | 负荷预测与出力模拟;全球无偏电力统计;把估算值当上报值 |
| 伦理 | 无个人数据,一条记录对应一座发电厂;引用须保留 CC BY 4.0 署名 |
| 引用 | World Resources Institute et al. Global Power Plant Database version 1.3.0 |
| 版本 | v1.3.0,2021-06-02 发布,已停止维护 |
| 状态 | 在线可访问,无需注册 |
| 再分发 | 可自由分发与商用,须署名 |
§11 常见误读(避坑清单)
以下每一条都能在正文找到对应证据,括号内为所在小节。
| 常见说法 | 实际情况 | 证据 |
|---|---|---|
| 「可以做电厂级负荷预测」 | 只有七个年度值,无逐日逐时出力 | §4.1、§4.5(看列组与三道墙) |
「estimated_generation_gwh 是上报值的补空」 |
两套独立数值,可并存且可相差数倍 | §4.3;案例比值 1.26,九十分位 18.27 |
「按 primary_fuel 分组等于燃料结构」 |
1,944 条带副燃料,容量被整块归到主燃料 | §3.2、§3.3 |
| 「容量加总就是发电量」 | 容量是额定功率,需乘 8,760 小时与容量因子的乘积 | §1.2、§4.3 |
| 「167 个国家就是全球覆盖」 | 前十个国别代码占 68.2%,17 个不到三条 | §5.1、§5.2 |
| 「风电光伏数量最多所以占比最高」 | 按记录数 35.7%,按容量仅 7.9% | §3.1 |
| 「坐标精度有字段标记」 | 无精度字段,只有 geolocation_source 出处 |
§5.4 |
「commissioning_year 是年份」 |
浮点数,3,048 条带非零小数 | §2.4、§7.1 |
「NO-ESTIMATION 表示发电量为零」 |
表示没给估算,原因有三种 | §4.2 |
「网页 dateModified 是数据更新日」 |
数据最后改动 2021-06-02,页面元数据另有时间 | §6.4 |
「wepp_id 可以当外键」 |
存在一对多,46.5% 的记录有值 | §2.4、§7.1 |
| 「副燃料顺序代表主次」 | 官方明写顺序无意义 | §3.2 |
FAQ
Q1:它到底是电厂库还是发电量库?
是电厂库。一条记录是一座厂的静态属性,发电量是附加的年度栏目,而且填不满。
Q2:怎样判断一条记录的发电量是报的还是算的?
看列名:generation_gwh_* 是上报,estimated_generation_gwh_* 是估算。两列同时非空时上报值优先。
Q3:estimated_generation_note_* 里的标签是精度评级吗?
不是。它标的是用了哪个模型。CAPACITY-FACTOR-V1 是基线,SOLAR-V1、WIND-V1、HYDRO-V1 是燃料专用模型,NO-ESTIMATION 是没给。
Q4:为什么只有 2017 年的估算填得那么满?
因为基线模型只对 2017 年有效,其余年份按各燃料专用模型的适用年限填。
Q5:库里有没有退役电厂?
没有。技术说明写明首版只收在运电厂,运营状态字段不在 36 列里。
Q6:1 MW 以下的电厂为什么不收?
技术说明给了理由:这类「电厂」数量超过十万,体量只占全球容量约 0.5%,且在公开卫星影像上难以定位。库内最小的容量正好是 1.0 MW。
Q7:同一座厂会不会有多条记录?
厂级定义是「一个并网点」,同一并网点下的核电机组与油机被并成一行。不同并网点、同名同址的多个厂则会各占一行,同国同名记录共 267 组。
Q8:许可允许商用吗?
允许。CC BY 4.0 只要求署名。
Q9:能用它做 2024 年的现状分析吗?
不能直接做。数据停在 2021 年,之后的变化不在里面。可以用它做基线,再另找数据源补增量。
Q10:还有别的入口吗?
有三个:GitHub 主表、WRI 发布包、Resource Watch 的 SQL 转发。前两者文件一致,第三者支持服务端聚合。
术语表
| 术语 | 含义 |
|---|---|
| GPPD | Global Power Plant Database 的缩写 |
gppd_idnr |
电厂主键,10 位,前缀表示来源体系 |
| 装机容量(capacity) | 额定最大出力,兆瓦,不是实际发电量 |
| 容量因子 | 实际发电量与理论上限之比,用小时数折算 |
| 主燃料(primary fuel) | 贡献发电量份额最大的燃料,由数据源判定或测算 |
| 副燃料(other fuel) | 主燃料以外的燃料,最多三个,顺序无意义 |
| 上报发电量 | 由机构报告的年度发电量,可能对应财年 |
| 估算发电量 | 由模型推算的年度发电量,用途是补空缺 |
NO-ESTIMATION |
未给估算,表示缺失而非零值 |
| 并网点 | 厂级粒度的定义单位,一个接入点算一座厂 |
| GEO | Global Energy Observatory,坐标主要来源之一 |
| CARMA | 早期碳排电厂库,坐标来源之一,精度被点名不如 GEO |
| WEPP | PLATTS 的电厂库,wepp_id 指向它 |
| 基线与专用模型 | 基线按国别×燃料均摊,专用模型按燃料特性推算 |
| WGS84 | 坐标参考系,EPSG:4326,十进制度 |
| 定版 | 发布后不再改动的版本,与持续更新的活库相对 |
编辑说明
核验时间 2026-10-30。核验方式:拉取 v1.3.0 发布包(4,178,889 字节)解包逐文件核对;拉取 GitHub 主表 11,973,385 字节,与包内 CSV 做 MD5 比对一致;读 README.txt、RELEASE_NOTES.txt 与两份技术说明 PDF;读页面内嵌 JSON-LD 的 license、citation、distribution 三个字段;查询 Resource Watch 图层做行数复核,返回 34,936 与本地一致。全文数字除引用官方说明外,均由主表直接算得。未核实项:year_of_capacity_data 为 2000 年的 58 条记录其原始来源文档未逐份追查;Resource Watch 底层表名的数据时点未取得独立说明;网页端日期 2025-10-06 的具体改动内容未比对历史版本。口径说明:覆盖国家数在页面 JSON-LD 写作 164、主表实际 167,正文按主表口径并列标注,未作取舍。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- hydrolakes — 共享标签:公共卫生与流行病学 / 全球健康 / 调查数据
- hydrobasins — 共享标签:公共卫生与流行病学 / 全球健康 / 调查数据
- dhs-program — 共享标签:公共卫生与流行病学 / 全球健康 / 调查数据
- ghcn-daily — 共享标签:公共卫生与流行病学 / 全球健康 / 多模态
- ghdx — 共享标签:公共卫生与流行病学 / 全球健康 / 调查数据
- world-health-survey — 共享标签:公共卫生与流行病学 / 全球健康 / 调查数据
- gho-steps — 共享标签:公共卫生与流行病学 / 全球健康 / 调查数据
- share — 共享标签:公共卫生与流行病学 / 全球健康 / 调查数据
- sage-survey — 共享标签:公共卫生与流行病学 / 全球健康 / 调查数据
- lasi — 共享标签:公共卫生与流行病学 / 全球健康 / 调查数据
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

