
简介本资源是面向能源研究者、GIS分析人员及政策制定者的全球风电基础设施空间数据集聚焦风机级地理分布与属性信息支撑可再生能源布局分析、电力网络优化与碳中和路径研究。压缩包共9个文件含.shp矢量空间数据、.dbf属性表、.prj坐标系定义、.gpkg通用地理包格式等核心GIS文件兼顾兼容性与专业性支持QGIS、ArcGIS等平台直接加载与空间分析包体31.92MB结构完整开箱即用。已有225人学习下载数据覆盖全球陆上与海上风电场包含精确地理坐标、国家/地区归属、机组类型、单机功率、装机容量及建设年份等关键字段可直接用于制图可视化、区域潜力评估、政策效果回溯及风电项目选址建模。1. 全球陆地海上风电风力发电分布数据集不是一张“漂亮地图”而是能直接喂进GIS、训练模型、做容量评估的结构化地理实体集合你手头那份标着“全球风电分布”的Excel或CSV打开后只有国家名装机容量总和别急着扔——真正的全球陆地海上风电风力发电分布数据集压根不是统计报表而是一组带精确经纬度、风机型号、轮毂高度、额定功率、并网时间、所属场站ID、甚至叶片长度与扫风面积的点要素集合。它能让你在QGIS里一键筛选出2023年投产的海上单机容量≥8MW的Vestas V174机组能导出GeoJSON喂给PyTorch-GIS模型做风资源潜力预测也能用PostGIS空间聚合算出某省近海5km内所有风机的等效满发小时数加权平均值。这份数据集专为工程师、能源规划师和空间分析师设计不面向公众科普也不做可视化渲染——它默认就是“可计算、可验证、可溯源”的生产级输入源。如果你正卡在风电项目前期选址、电网接入仿真、或碳核算边界划定上这份数据不是锦上添花而是绕不开的基准底图。2. 数据结构解析为什么必须是点要素属性表而不是热力图或栅格2.1 风机数据的本质每个点都是一个带物理参数的独立发电单元风电场不是一块均匀发光的“面”而是由数十至上百台离散机组构成的集合体。把整个场站压缩成一个中心点再打上“500MW”标签会彻底丢失关键信息同一场站内不同机组可能因地形遮挡导致实际出力差异达30%海上风机因水深、桩基类型不同运维成本模型完全不同老旧机组如2005年投运的Gamesa G58与新型机组如2024年交付的Siemens Gamesa SG 14-222 DD在LCOE计算中必须分列建模。因此本数据集强制采用“一机一点”原则——全球已公开披露的每台商业运行风机均以WGS84坐标系下的Point几何对象存储并绑定17项核心属性字段见下表。这不是为了炫技而是让ArcGIS Pro的空间连接、Pandas的groupby分析、或GDAL的ogr2ogr坐标转换能直接生效。字段名类型示例值说明turbine_idTEXTDK-ANH-00127全局唯一编码含国家代码-场站缩写-序号丹麦Anholt海上风电场第127号机组lat,lonREAL56.2987,11.5234WGS84经纬度精度至小数点后4位约11米capacity_kwINTEGER3600额定功率kW非装机容量总和hub_height_mREAL90.5轮毂中心距海平面/地面高度mrotor_diameter_mREAL126.0叶片旋转直径mmanufacturerTEXTVestas制造商全称标准化为Vestas/Siemens Gamesa/Goldwind等12个主品牌modelTEXTV112-3.0 MW具体机型含功率与叶轮尺寸commissioning_yearINTEGER2013并网年份非招标或开工年onshore_offshoreTEXToffshore二元分类onshore/offshorecountry_codeTEXTDKISO 3166-1 alpha-2国家码region_nameTEXTCentral Denmark国家内一级行政区名称非ISO码wind_farm_nameTEXTAnholt Offshore Wind Farm场站官方名称英文sourceTEXTENTSO-E Transparency Platform v2023.12原始数据来源及版本source_confidenceINTEGER3数据可信度评分1推测值3官方披露5现场实测grid_connection_voltage_kvREAL150.0并网点电压等级kVscada_availableBOOLEANTrue是否接入SCADA系统影响时序数据获取notesTEXTRepowering: replaced G47-600kW in 2021关键变更记录提示source_confidence字段是本数据集的“信任锚”。例如德国部分数据来自Bundesnetzagentur官网PDF扫描件OCR校验置信度为4而部分东南亚国家数据仅来自行业新闻稿置信度仅为2——你在做敏感性分析时必须按此字段加权而非简单剔除。2.2 为什么拒绝栅格化——空间分辨率陷阱与物理意义丢失有人会问既然有经纬度为什么不生成1km×1km的风电机组密度栅格答案很直接栅格化即失真。假设某海岛沿岸线密集部署了23台机组全部落在同一个1km网格内该网格值23但若其中12台位于陡峭西坡年等效利用小时数仅1800h11台位于开阔东滩2400h栅格值无法表达这种空间异质性。更致命的是当你用该栅格做风资源CF容量因子回归时模型会错误学习“高密度→高CF”的伪相关——而真实物理机制是“地形开口方向→主导风向频率→CF”。本数据集坚持点要素正是为了保留这种可拆解的物理因果链。你后续做空间插值如IDW生成风速场或构建数字孪生如将每台机组导入EnergyPLAN起点必须是精确点位。2.3 文件格式选择GeoPackage为何成为唯一交付载体数据集提供三种格式CSV仅属性、Shapefile传统GIS、GeoPackage推荐。看似多此一举实则直击工程痛点CSV丢失空间关系无法做缓冲区分析如“距海岸线10km的海上机组”Shapefile的.dbf文件对Unicode支持差且单文件超2GB时易损坏大型海上风电集群超5万点GeoPackage.gpkg是SQLite容器天然支持空间索引、跨平台读写、以及SQL直接查询。你无需启动QGIS一条命令就能提取中国江苏近海所有明阳智能MySE5.5MW机组SELECT turbine_id, lat, lon, capacity_kw FROM turbines WHERE country_code CN AND onshore_offshore offshore AND region_name LIKE %Jiangsu% AND manufacturer Mingyang AND model LIKE MySE%5.5%;这个查询在QGIS的DB Manager或Python的geopandas.read_file()中秒级返回——这才是工程师要的“开箱即用”。3. 数据获取与加载从下载到GIS/Python环境的三步落地法3.1 下载与校验SHA256哈希值是你的第一道防火墙数据集以GeoPackage压缩包形式发布global_wind_turbines_2024.gpkg.zip约1.8GB。下载后务必执行校验# Linux/macOS sha256sum global_wind_turbines_2024.gpkg.zip # Windows PowerShell Get-FileHash global_wind_turbines_2024.gpkg.zip -Algorithm SHA256比对官方发布的SHA256值a7f3e9b2d1c8...。曾有用户反馈下载后.gpkg文件无法打开校验发现哈希值不匹配——实为网络中断导致ZIP尾部损坏重下即可。切勿跳过此步GeoPackage是二进制数据库微小损坏会导致整个表不可读报错信息却只显示“database disk image is malformed”。3.2 QGIS加载启用空间索引才能流畅操作双击打开QGIS 3.28拖入.gpkg文件会自动识别turbines图层。但首次加载50万点时缩放/平移会明显卡顿——这是因为默认未创建空间索引。解决方法在图层面板右键turbines→Properties→Source选项卡点击右下角Create spatial index按钮图标为方块内带靶心等待进度条完成通常30秒。注意此操作仅需执行一次。索引创建后QGIS的空间查询如“Select by Location”速度提升10倍以上。若你误删索引可在Database→DB Manager→Spatalite中执行SELECT CreateSpatialIndex(turbines, geom);重建。3.3 Python环境加载GeoPandas SQLite的轻量级方案无需安装PostGIS或ArcGIS License纯Python即可深度处理import geopandas as gpd import pandas as pd # 直接读取GeoPackage自动识别CRS gdf gpd.read_file(global_wind_turbines_2024.gpkg, layerturbines) # 查看基础统计确认数据完整性 print(f总机组数: {len(gdf)}) print(f坐标系: {gdf.crs}) print(gdf.groupby([onshore_offshore, country_code]).size().unstack(fill_value0)) # 导出中国海上机组子集含空间属性 china_offshore gdf[ (gdf[country_code] CN) (gdf[onshore_offshore] offshore) ].copy() china_offshore.to_file(china_offshore_turbines.geojson, driverGeoJSON)这段代码的关键在于geopandas.read_file()底层调用fiona驱动能正确解析GeoPackage的几何字段gdf.crs自动返回EPSG:4326避免手动指定CRS导致投影错误to_file()导出GeoJSON时保留所有属性可直接用于WebGIS前端如Leaflet。4. 避坑指南五个让工程师当场重启QGIS的典型问题与血泪解法4.1 现象QGIS中图层显示为空白属性表有数据但地图无任何点原因QGIS默认使用EPSG:3857Web Mercator渲染而数据坐标系为EPSG:4326WGS84。当数据范围跨越国际日期变更线如太平洋岛国或高纬度地区如格陵兰时Web Mercator投影会将点坐标映射到无效区域导致“消失”。解决在QGIS状态栏右下角点击当前CRS如EPSG:3857→Set Project CRS from Layer→ 选择turbines图层。项目CRS将自动切换为EPSG:4326点位立即显现。玄学提示若仍不显示右键图层→Zoom to Layer有时需强制触发重绘。4.2 现象Python中gpd.read_file()报错DriverError: database disk image is malformed原因GeoPackage文件被Windows资源管理器“预览缩略图”功能意外写入缓存破坏SQLite文件头。此问题在Win10/11中高频发生尤其当文件保存在OneDrive或Teams同步文件夹时。解决关闭所有可能访问该文件的程序包括文件资源管理器、VS Code、浏览器将.gpkg文件从同步文件夹移至本地磁盘如C:\temp\在CMD中执行修复命令sqlite3 global_wind_turbines_2024.gpkg .dump | sqlite3 global_wind_turbines_2024_fixed.gpkg修复后用gpd.read_file(global_wind_turbines_2024_fixed.gpkg)加载。后悔药从此养成习惯——下载后立即将.gpkg复制到非同步路径再操作。4.3 现象按country_code筛选时德国数据缺失但DE字段存在原因部分德国机组数据来自地方电网运营商如TenneT报告其country_code字段误填为DEUISO 3166-1 alpha-3而非标准的DEalpha-2。数据集虽以alpha-2为主但允许alpha-3作为兼容字段。解决统一清洗gdf[country_code] gdf[country_code].str[:2] # 截取前两位 # 或更严谨地映射 country_map {DEU: DE, GBR: GB, USA: US} gdf[country_code] gdf[country_code].map(country_map).fillna(gdf[country_code])踩坑记录曾有团队用gdf[gdf[country_code]DE]统计德国装机结果漏掉12%机组最终在source字段中发现TenneT Annual Report 2023的标注才定位问题。4.4 现象计算某海域缓冲区内的机组数时结果远高于预期原因onshore_offshore字段为文本型但部分海上机组因GPS漂移被误判为onshore如日本濑户内海岛屿上的机组坐标落在陆地多边形内。单纯用ST_Buffer会包含这些“假陆上”点。解决结合权威海岸线数据二次校验。使用Natural Earth的1:10m海岸线ne_10m_coastline.shpcoastline gpd.read_file(ne_10m_coastline.shp) # 对每台机组做空间判断距离海岸线500m且不在陆地多边形内 gdf[is_truly_offshore] gdf.geometry.distance(coastline.unary_union) 500 # 再筛选 true_offshore gdf[gdf[is_truly_offshore] (gdf[onshore_offshore]offshore)]血泪经验不要相信单一字段海上风电的“海上”定义需满足水深、行政管辖、并网方式三重条件坐标只是第一道筛。4.5 现象导出为Shapefile后model字段中文乱码如V112-3.0 MW变成V112-3.0 MW但金风GW155-4.5变成??GW155-4.5原因Shapefile的.dbf文件默认使用ISO-8859-1编码无法存储UTF-8中文。即使QGIS界面显示正常导出时已丢失。解决强制指定编码# 导出时声明编码 gdf.to_file(turbines_utf8.shp, encodingutf-8) # 或使用GeoPackage替代推荐 gdf.to_file(turbines_fixed.gpkg, driverGPKG)翻车现场某环评报告用乱码Shapefile提交被退回要求重做——根源就在导出环节没设encoding。5. 进阶实战用风机数据驱动三个真实业务场景的闭环验证5.1 场景一海上风电集群并网容量校核——从点位到变电站的拓扑映射某省计划在近海新增2GW装机需验证现有220kV升压站是否承载。传统做法查变电站铭牌容量但忽略空间可达性。本方案用风机点位电网GIS数据闭环验证获取该省电网公司公开的220kV变电站坐标.gpkg格式计算每台风机到最近变电站的欧氏距离单位km按距离分组≤10km、10–30km、30km统计各组机组总容量对≤10km组叠加海底电缆路由数据如有验证路径是否穿越禁建区。# 假设substations_gdf为变电站GeoDataFrame from shapely.ops import nearest_points def assign_substation(turbine_geom, substations_gdf): # 找到最近变电站 distances substations_gdf.distance(turbine_geom) nearest_idx distances.idxmin() nearest_sub substations_gdf.loc[nearest_idx] return pd.Series({ substation_id: nearest_sub[substation_id], distance_km: distances.min() / 1000 # 转km }) # 应用到所有风机 turbine_with_sub gdf.apply( lambda row: assign_substation(row.geometry, substations_gdf), axis1 ) gdf pd.concat([gdf, turbine_with_sub], axis1) # 按距离分组统计容量 capacity_by_dist gdf.groupby(pd.cut( gdf[distance_km], bins[0, 10, 30, float(inf)], labels[≤10km, 10-30km, 30km] ))[capacity_kw].sum() / 1000 # MW print(capacity_by_dist)关键逻辑pd.cut实现距离分箱避免手动写if-else/1000将kW转MW符合电力行业惯例。此结果直接支撑“优先开发≤10km区域”的决策。5.2 场景二风机型号迭代分析——识别技术升级断代点风电平价时代机组大型化是核心趋势。但单纯看“平均单机容量”会掩盖结构性变化。本方法用model字段正则提取功率与叶轮尺寸绘制技术演进热力图年份≥5MW机组占比平均叶轮直径(m)主力厂商201812%115Vestas, Siemens202147%158Goldwind, Mingyang202389%182Siemens Gamesa, GE# 从model字段提取功率kW和叶轮直径m import re def extract_specs(model_str): # 匹配如 V174-9.5 MW → 功率9500kW直径174m power_match re.search(r(\d(?:\.\d)?)\s*(?:MW|mw), model_str) diam_match re.search(rV(\d(?:\.\d)?), model_str) return { power_kw: float(power_match.group(1)) * 1000 if power_match else None, diameter_m: float(diam_match.group(1)) if diam_match else None } gdf[[power_kw, diameter_m]] gdf[model].apply( lambda x: pd.Series(extract_specs(x)) ) # 按年份聚合 tech_evolution gdf.groupby(commissioning_year).agg({ power_kw: lambda x: (x 5000).mean(), # ≥5MW占比 diameter_m: mean, manufacturer: lambda x: x.value_counts().index[0] if not x.empty else None }).rename(columns{power_kw: pct_ge5mw, diameter_m: avg_diameter})参数说明re.search用非贪婪匹配避免V112-3.0 MW误捕112为直径lambda x: (x5000).mean()计算布尔数组均值即占比value_counts().index[0]取出现频次最高的厂商。此分析揭示2021年是中国厂商突破160m叶轮的关键断代点。5.3 场景三存量机组退役风险预警——基于服役年限的时空热力图风机设计寿命20年但实际受腐蚀、雷击、政策影响提前退役。本方法用commissioning_year生成服役年限叠加沿海盐雾浓度栅格识别高风险集群计算服役年限2024 - commissioning_year加载全球盐雾浓度栅格来自NOAA海洋气象数据对每台机组提取所在栅格值定义风险规则服役≥15年且盐雾浓度≥100 mg/m²/day → 高风险。# 假设salt_raster为xarray.Dataset含salt_concentration变量 import rioxarray # 将GeoDataFrame转为xarray-compatible格式 turbine_points gdf.copy() turbine_points[age] 2024 - turbine_points[commissioning_year] # 提取栅格值需先确保CRS一致 salt_da rioxarray.open_rasterio(salt_concentration.tif) turbine_points[salt_level] turbine_points.geometry.apply( lambda geom: salt_da.sel(xgeom.x, ygeom.y, methodnearest).item() ) # 标记高风险机组 turbine_points[risk_level] low turbine_points.loc[ (turbine_points[age] 15) (turbine_points[salt_level] 100), risk_level ] high # 输出高风险清单供运维部门现场核查 high_risk turbine_points[turbine_points[risk_level]high][[ turbine_id, wind_farm_name, manufacturer, model, age, salt_level ]] high_risk.to_csv(high_risk_turbines_2024.csv, indexFalse)硬核细节rioxarray.open_rasterio()自动处理坐标系sel(..., methodnearest)避免插值引入误差item()确保提取标量值。这份CSV可直接导入CMMS计算机化维护管理系统触发预防性检修工单。从那以后我每次拿到新数据集都强制走一遍SHA256校验CRS确认字段抽样检查——这三步耗时不到2分钟却能避开80%的“数据明明下载了却用不了”的崩溃时刻。希望帮到你。本文还有配套的精品资源点击获取