Windfarm Processing
Processing of the windfarm database consists of filtering the data, adding powercurve, and adding missing data
Add functions to the path
Load Windturbine Data
filename = "data/WT_data/TheWindPowerDatabaseWithRotorParameters23Mar.csv";
opts = detectImportOptions(filename,'Encoding','UTF-8');
t=readtable(filename,opts);
Warning: Column headers from the file were modified to make them valid MATLAB identifiers before creating variable names for the table. The original column headers are saved in the VariableDescriptions property.
Set 'VariableNamingRule' to 'preserve' to use the original column headers as table variable names.
disp("Number of Windfarm: "+ height(unique([t.Latitude t.Longitude], "row")))
Number of Windfarm: 15889
disp("Number of wind turbines: "+ sum(t.Number_of_turbines,"omitnan"))
Number of wind turbines: 116430
Basic Filtering
Remove offshore turbine
t(~strcmp(t.Offshore_Shore_distance,'No'),:)=[];
Remove turbine not in production (i.e., Construction, Planned, Approved or dismantled)
t(~strcmp(t.Status,'Production'),:)=[];
Remove data without location information
t(isnan(t.Latitude) | isnan(t.Longitude),:)=[];
Remove data outside of study area as defined by the bird datase.
To do that, we first assign to each windfarm the grid id of its location in the bird database and then we filter for windfarm further than 50km from the closest grid id.
load('data/2018/Density_estimationMap','g');
[dist,grid_id] = min(pdist2([g.lat2D(g.latlonmask) g.lon2D(g.latlonmask)],[t.Latitude t.Longitude],@lldistkm));
Display table
t
t = 12518×34 table
| ID | Continent | ISO_code | Country | State_code | Area | City | Name | X2nd_name | Latitude | Longitude | Altitude_Depth | Location_accuracy | Offshore_Shore_distance | Manufacturer | Turbine | Hub_height | Number_of_turbines | Total_power | Developer | Operator | Owner | Commissioning_date | Status | Decommissioning_date | Link | Update | turbine_make | turbine_capacity | turbine_rotorDiameter | turbine_rotorRadius | turbine_sweptArea | NOTES | grid_id |
---|
1 | 1256 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Niederösterreich' | 'Ertl' | 'Ertl' | 'NA' | 47.9670 | 14.6600 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E40/500' | 65 | 1 | 500 | 'NA' | 'Prenn Franz' | 'NA' | 2000 | 'Production' | '' | 'Link' | 29-Apr-0019 | 'Enercon' | 500 | 40.3000 | 20.1000 | 1.2692e+03 | '' | 1894 |
---|
2 | 1247 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Eberschwang' | 'Eberschwang' | 'NA' | 48.1450 | 13.5190 | '620' | 'Yes' | 'No' | 'Enercon' | 'E40/500' | 50 | 2 | 1000 | 'Windkraft Innviertel GmbH/EWS Consulting' | 'Windkraft Innviertel GmbH' | 'NA' | NaN | 'Production' | '' | 'Link' | 29-Apr-0019 | 'Enercon' | 500 | 40.3000 | 20.1000 | 1.2692e+03 | '' | 1840 |
---|
3 | 1252 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Laussa' | 'Laussa' | 'Plattenberg' | 47.9520 | 14.4920 | 'NA' | 'Yes' | 'No' | 'Tacke' | 'TW-600' | 50 | 3 | 1800 | 'EWS Consulting' | 'Energie AG' | 'Erneuerbare Energie Laussa GmbH' | 1996 | 'Production' | '' | 'Link' | 29-Apr-0019 | 'Tacke' | 600 | 43 | 21.5000 | 1.4522e+03 | '' | 1894 |
---|
4 | 16707 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Munderfing' | 'Munderfing' | 'Kobernaußerwald' | 48.0550 | 13.2420 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V112/3000' | 140 | 5 | 15000 | 'NA' | 'NA' | 'Municipality of Munderfing/EWS Consulting' | NaN | 'Production' | '' | 'Link' | 29-Apr-0019 | 'Vestas' | 3000 | 112 | 56 | 9.8521e+03 | '' | 1810 |
---|
5 | 1251 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Oberrödham' | 'Oberrödham' | 'NA' | 48.3300 | 13.6620 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V47/660' | 65 | 3 | 1980 | 'EWS Consulting' | 'Energie AG' | 'NA' | 1999 | 'Production' | '' | 'Link' | 29-Apr-0019 | 'Vestas' | 660 | 47 | 23.5000 | 1.7349e+03 | '' | 1869 |
---|
6 | 1254 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Schenkenfelden' | 'Schenkenfelden' | 'NA' | 48.5100 | 14.3500 | 'NA' | 'Yes' | 'No' | 'Micon' | 'M1800-600/48' | 60 | 2 | 1200 | 'EWS Consulting' | 'Future Energy GmbH' | 'WEB Windenergie AG' | 1998 | 'Production' | '' | 'Link' | 20-Feb-0020 | 'Micon' | 600 | 48 | 24 | 1.8096e+03 | '' | 1896 |
---|
7 | 1249 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Schernham' | 'Schernham' | 'NA' | 48.1790 | 13.6090 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E66/1800' | 86 | 1 | 1800 | 'Windkraft Innviertel GmbH' | 'Windkraft Innviertel GmbH' | 'NA' | NaN | 'Production' | '' | 'Link' | 29-Apr-0019 | 'Enercon' | 1800 | 70 | 35 | 3.8485e+03 | '' | 1840 |
---|
8 | 1257 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Spörbichl' | 'Spörbichl' | 'NA' | 48.5520 | 14.6000 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V47/660' | 65 | 2 | 1320 | 'EWS Consulting' | 'New Energy/Austrian Wind Power GmbH' | 'NA' | 1999 | 'Production' | '' | 'Link' | 29-Apr-0019 | 'Vestas' | 660 | 47 | 23.5000 | 1.7349e+03 | '' | 1896 |
---|
9 | 1248 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Steiglberg' | 'Steiglberg' | 'NA' | 48.0960 | 13.3560 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V80/2000' | 100 | 1 | 2000 | 'EWS Consulting' | 'NA' | 'Windkraft Simonsfeld GmbH & Co KG' | 2002 | 'Production' | '' | 'Link' | 16-Sep-0019 | 'Vestas' | 2000 | 80 | 40 | 5.0266e+03 | '' | 1810 |
---|
10 | 1250 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Steindlberg' | 'Steindlberg' | 'NA' | 48.3220 | 13.6660 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V47/660' | 65 | 2 | 1320 | 'EWS Consulting' | 'Energy from A to Z Gmbh & Co KGa' | 'NA' | 2001 | 'Production' | '' | 'Link' | 29-Apr-0019 | 'Vestas' | 660 | 47 | 23.5000 | 1.7349e+03 | '' | 1869 |
---|
11 | 1253 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Vorderweissenbach' | 'Sternwald I' | 'Sternwind' | 48.5790 | 14.2310 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V80/2000' | 100 | 1 | 2000 | 'Sternwind/ImWind' | 'Sternwind/WEB Windenergie AG' | 'Sternwind/WEB Windenergie AG' | NaN | 'Production' | '' | 'Link' | 20-Feb-0020 | 'Vestas' | 2000 | 80 | 40 | 5.0266e+03 | '' | 1896 |
---|
12 | 10444 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Vorderweissenbach' | 'Sternwald II' | 'Sternwind' | 48.5790 | 14.2310 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V90/2000' | 105 | 6 | 12000 | 'Sternwind/EWS Consulting/ImWind' | 'Sternwind/WEB Windenergie AG' | 'Sternwind/WEB Windenergie AG' | NaN | 'Production' | '' | 'Link' | 20-Feb-0020 | 'Vestas' | 2000 | 90 | 45 | 6.3617e+03 | '' | 1896 |
---|
13 | 22495 | 'Europe' | 'AT' | 'Austria' | 'NA' | 'Oberösterreich' | 'Vorderweissenbach' | 'Sternwald III' | 'NA' | 48.5840 | 14.2200 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V112/3000' | NaN | 2 | 6000 | 'WEB Windenergie AG' | 'Sternwind/WEB Windenergie AG' | 'Sternwind/WEB Windenergie AG' | 2016 | 'Production' | '' | 'Link' | 20-Feb-0020 | 'Vestas' | 3000 | 112 | 56 | 9.8521e+03 | '' | 1896 |
---|
14 | 23831 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Antwerpen' | 'Antwerpen BASF' | 'Zandvliet BASF' | 51.3630 | 4.2970 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 98 | 6 | 12000 | 'Electrabel' | 'Engie' | 'Engie' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 761 |
---|
15 | 17531 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Arendonk, Oud-Turnhout' | 'Arendonk' | 'Zephiros' | 51.2980 | 5.0620 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | 108 | 7 | 16100 | 'Eneco' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 23-Oct-0017 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 861 |
---|
16 | 23198 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Arendonk' | 'Arendonk' | 'Evergem' | 51.2970 | 5.1010 | 'NA' | 'No' | 'No' | 'Enercon' | 'E82/2300' | 108 | 1 | 2300 | 'Elicio' | 'NA' | 'NA' | 2015 | 'Production' | '' | 'Link' | 21-Oct-0019 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 861 |
---|
17 | 1857 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Kasterlee' | 'Bobbejaanland' | 'Kasterlee' | 51.1990 | 4.9050 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V47/660' | 42 | 1 | 660 | 'NA' | 'NA' | 'NA' | 2001 | 'Production' | '' | 'Link' | 30-Nov-0016 | 'Vestas' | 660 | 47 | 23.5000 | 1.7349e+03 | '' | 861 |
---|
18 | 30293 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Zwijndrecht' | 'DEME' | 'NA' | 51.2500 | 4.3140 | 'NA' | 'No' | 'No' | 'Xant' | 'M-21' | 38 | 1 | 100 | 'NA' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 02-Oct-0019 | 'Xant' | 100 | 21 | 10.5000 | 346.4000 | '' | 761 |
---|
19 | 23191 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Hoogstraten' | 'Hoogstraten' | 'NA' | 51.4220 | 4.7500 | 'NA' | 'No' | 'No' | 'Senvion' | '3.2M114' | 143 | 3 | 9600 | 'Storm' | 'Storm' | 'NA' | 2015 | 'Production' | '' | 'Link' | 22-Jan-0018 | 'Senvion' | 3200 | 114 | 57 | 1.0207e+04 | '' | 828 |
---|
20 | 4137 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Essen' | 'Kalmthout' | 'Essen' | 51.4470 | 4.5030 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM92/2050' | 100 | 1 | 2050 | 'Mega-Windy' | 'Ecopower' | 'NA' | 2012 | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 795 |
---|
21 | 18968 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Kalmthout' | 'Kalmthout' | 'Kalmthout' | 51.4470 | 4.5030 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM92/2050' | 100 | 3 | 6150 | 'Mega-Windy' | 'Ecopower' | 'NA' | 2012 | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 795 |
---|
22 | 692 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Laakdal' | 'Laakdal-Meerhout' | 'Nike Windpark' | 51.0970 | 5.0880 | 'NA' | 'Yes' | 'No' | 'Repower' | 'MD77' | 112 | 3 | 4500 | 'SeeBA EnergyFarming/WPD' | 'SeeBA EnergyFarming' | 'NA' | 2006 | 'Production' | '' | 'Link' | 22-Jan-0018 | 'Repower' | 1500 | 77 | 38.5000 | 4.6566e+03 | '' | 860 |
---|
23 | 16563 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Meerhout' | 'Laakdal-Meerhout' | 'Nike Windpark' | 51.0990 | 5.0910 | 'NA' | 'Yes' | 'No' | 'Repower' | 'MD77' | 112 | 3 | 4500 | 'SeeBA EnergyFarming/WPD' | 'SeeBA EnergyFarming' | 'NA' | 2006 | 'Production' | '' | 'Link' | 22-Jan-0018 | 'Repower' | 1500 | 77 | 38.5000 | 4.6566e+03 | '' | 860 |
---|
24 | 23954 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Olen' | 'Olen Umicore' | 'Geel-Olen' | 51.1790 | 4.8880 | 'NA' | 'No' | 'No' | 'Vestas' | 'V117/3450' | NaN | 4 | 13800 | 'Wind4Flanders' | 'Wind4Flanders' | 'Engie' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Vestas' | 3450 | 117 | 58.5000 | 1.0751e+04 | '' | 861 |
---|
25 | 23179 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Olen' | 'Olen-Geel' | 'NA' | 51.1480 | 4.9130 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | NaN | 3 | 6900 | 'EDF Luminus' | 'EDF Luminus' | 'EDF Luminus' | 2014 | 'Production' | '' | 'Link' | 22-Jan-0018 | 'Enercon' | 2300 | 82 | 41 | 5281 | 'Biggest rotor diameter for an Enercon model of this rating.' | 861 |
---|
26 | 23180 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Geel' | 'Olen-Geel' | 'NA' | 51.1440 | 4.9260 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2301' | NaN | 3 | 6900 | 'EDF Luminus' | 'EDF Luminus' | 'EDF Luminus' | 2014 | 'Production' | '' | 'Link' | 22-Jan-0018 | 'Enercon' | 2300 | 82 | 41 | 5281 | 'Biggest rotor diameter for an Enercon model of this rating.' | 861 |
---|
27 | 247 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Puurs' | 'Puurs' | 'Rupeltunnel' | 51.0790 | 4.3520 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V80/2000' | 100 | 2 | 4000 | 'Aspiravi' | 'Aspiravi' | 'Aspiravi' | NaN | 'Production' | '' | 'Link' | 16-Oct-0019 | 'Vestas' | 2000 | 80 | 40 | 5.0266e+03 | '' | 760 |
---|
28 | 17530 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Puurs' | 'Rijksweg' | 'Puurs' | 51.0670 | 4.3150 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | 108 | 2 | 4600 | 'Eneco' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 23-Oct-0017 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 760 |
---|
29 | 265 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Schelle' | 'Schelle' | 'NA' | 51.1250 | 4.3210 | 'NA' | 'Yes' | 'No' | 'Enron' | '1.5s' | 85 | 3 | 4500 | 'Engie' | 'Engie' | 'Engie' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Enron' | 1500 | 70.5000 | 35.2000 | 3.8926e+03 | '' | 761 |
---|
30 | 25321 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Mol' | 'Sibelco' | 'NA' | 51.2000 | 5.1600 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E92/2350' | 108 | 3 | 7050 | 'EDF Luminus' | 'NA' | 'EDF renewables' | 2017 | 'Production' | '' | 'Link' | 23-Jan-0018 | 'Enercon' | 2350 | 92 | 46 | 6.6476e+03 | '' | 894 |
---|
31 | 23173 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Westerlo' | 'Westerlo' | 'NA' | 51.0900 | 4.9140 | 'NA' | 'No' | 'No' | 'Senvion' | 'MM92/2050' | 100 | 2 | 4100 | 'Storm' | 'Storm' | 'NA' | NaN | 'Production' | '' | 'Link' | 17-Feb-0020 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 860 |
---|
32 | 23194 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Westerlo' | 'Westerlo' | 'NA' | 51.0900 | 4.9140 | 'NA' | 'No' | 'No' | 'Senvion' | 'MM100' | 100 | 2 | 4000 | 'Electrabel' | 'Engie' | 'NA' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Senvion' | 2000 | 100 | 50 | 7854 | '' | 860 |
---|
33 | 23193 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Wuustwezel' | 'Wuustwezel' | 'NA' | 51.4030 | 4.6880 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V90/2000' | NaN | 4 | 8000 | 'Electrabel' | 'Engie' | 'NA' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Vestas' | 2000 | 90 | 45 | 6.3617e+03 | '' | 828 |
---|
34 | 18814 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Brecht, Wuustwezel, Hoogstraten' | 'Wuustwezel-Brecht' | 'NA' | 51.3930 | 4.6860 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | 108 | 7 | 16100 | 'NA' | 'NA' | 'Aspiravi' | 2012 | 'Production' | '' | 'Link' | 16-Oct-0019 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 828 |
---|
35 | 18815 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Antwerpen (Vlaanderen)' | 'Brecht' | 'Wuustwezel-Brecht' | 'NA' | 51.3490 | 4.6200 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V90/2000' | 105 | 3 | 6000 | 'NA' | 'NA' | 'Aspiravi' | 2012 | 'Production' | '' | 'Link' | 16-Oct-0019 | 'Vestas' | 2000 | 90 | 45 | 6.3617e+03 | '' | 794 |
---|
36 | 24888 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Orp-Jauche, Opheylissem' | 'Greensky - E40 (Brabant wallon)' | 'Part 1' | 50.7160 | 5.0440 | 'NA' | 'No' | 'No' | 'Vestas' | 'V100/2000' | NaN | 2 | 4000 | 'Engie' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 26-Apr-0019 | 'Vestas' | 2000 | 100 | 50 | 7854 | '' | 859 |
---|
37 | 13 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Villers-la-Ville' | 'Marbais' | 'NA' | 50.5370 | 4.5150 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 78 | 8 | 16000 | 'Eneco' | 'Electrastar SA' | 'NA' | 2007 | 'Production' | '' | 'Link' | 23-Oct-0017 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 791 |
---|
38 | 10930 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Villers-la-Ville' | 'Marbais' | 'Extension' | 50.5330 | 4.5040 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 78 | 3 | 6000 | 'Eneco' | 'Electrastar SA' | 'NA' | 2010 | 'Production' | '' | 'Link' | 23-Oct-0017 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 791 |
---|
39 | 178 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Perwez' | 'Perwez' | 'NA' | 50.6060 | 4.7920 | 'NA' | 'Yes' | 'No' | 'Repower' | 'MD77' | 85 | 3 | 4500 | 'Aspiravi' | 'Les Eoliennes de Perwez' | 'ENI Wind Belgium' | NaN | 'Production' | '' | 'Link' | 23-Oct-0017 | 'Repower' | 1500 | 77 | 38.5000 | 4.6566e+03 | '' | 824 |
---|
40 | 179 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Perwez' | 'Perwez' | 'NA' | 50.6110 | 4.7970 | 'NA' | 'Yes' | 'No' | 'GE Energy' | '1.5sle' | 85 | 5 | 7500 | 'Eneco' | 'NA' | 'Les Vents de Perwez' | NaN | 'Production' | '' | 'Link' | 23-Oct-0017 | 'GE Energy' | 1500 | 77 | 38.5000 | 4.6566e+03 | '' | 824 |
---|
41 | 210 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Perwez' | 'Perwez' | 'NA' | 50.5980 | 4.7980 | 'NA' | 'Yes' | 'No' | 'Nordex' | 'N100/2500' | 100 | 2 | 5000 | 'Eneco' | 'Hegao Wind' | 'NA' | 2012 | 'Production' | '' | 'Link' | 23-Oct-0017 | 'Nordex' | 2500 | 100 | 50 | 7854 | '' | 824 |
---|
42 | 2951 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Perwez' | 'Perwez' | 'NA' | 50.6030 | 4.7840 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V90/2000' | 105 | 3 | 6000 | 'Aspiravi' | 'Aspiravi' | 'Aspiravi' | NaN | 'Production' | '' | 'Link' | 16-Oct-0019 | 'Vestas' | 2000 | 90 | 45 | 6.3617e+03 | '' | 824 |
---|
43 | 18964 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Perwez' | 'Perwez' | 'NA' | 50.6030 | 4.7840 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V90/2000' | 105 | 2 | 4000 | 'Elicio' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 09-Apr-0020 | 'Vestas' | 2000 | 90 | 45 | 6.3617e+03 | '' | 824 |
---|
44 | 21075 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Perwez' | 'Perwez' | 'NA' | 50.5980 | 4.7980 | 'NA' | 'Yes' | 'No' | 'Nordex' | 'N100/2500' | 100 | 1 | 2500 | 'NA' | 'NA' | 'NA' | 2012 | 'Production' | '' | 'Link' | 23-Oct-0017 | 'Nordex' | 2500 | 100 | 50 | 7854 | '' | 824 |
---|
45 | 24691 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Brabant wallon (Wallonie)' | 'Nivelles' | 'Vents d’Arpes' | 'NA' | 50.5750 | 4.3050 | 'NA' | 'Yes' | 'No' | 'Senvion' | '3.4M114' | 93 | 4 | 13600 | 'Ventis' | 'Ventis' | 'Ventis/CLEF' | NaN | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Senvion' | 3400 | 114 | 57 | 1.0207e+04 | '' | 758 |
---|
46 | 7143 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Baileux' | 'Baileux' | 'Chimay' | 50.0440 | 4.3800 | 'NA' | 'Yes' | 'No' | 'GE Energy' | '2.5xl' | 100 | 4 | 10000 | 'Greenwind' | 'Ventient Energy' | 'Ventient Energy' | NaN | 'Production' | '' | 'Link' | 11-Mar-0020 | 'GE Energy' | 2500 | 100 | 50 | 7854 | '' | 789 |
---|
47 | 21711 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Baileux' | 'Baileux' | 'Chimay II' | 50.0470 | 4.3550 | 'NA' | 'Yes' | 'No' | 'GE Energy' | '2.5-100' | 100 | 2 | 5000 | 'NA' | 'Ventient Energy' | 'Ventient Energy' | 2014 | 'Production' | '' | 'Link' | 11-Mar-0020 | '2.5-100' | 2500 | 100 | 50 | 7854 | '' | 756 |
---|
48 | 26773 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Baileux' | 'Baileux' | 'Chimay II' | 50.0470 | 4.3550 | 'NA' | 'Yes' | 'No' | 'GE Energy' | '2.75-100' | 100 | 3 | 8250 | 'NA' | 'Ventient Energy' | 'Ventient Energy' | 2014 | 'Production' | '' | 'Link' | 11-Mar-0020 | '2.75-100' | 2750 | 100 | 50 | 7854 | '' | 756 |
---|
49 | 19973 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Leuze-en-Hainaut, Beloeil' | 'Beloeil' | 'Tourpes/Thumaide' | 50.5550 | 3.6380 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | 98 | 9 | 20700 | 'Windvision' | 'Windvision' | 'NA' | NaN | 'Production' | '' | 'Link' | 21-Jan-0020 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 691 |
---|
50 | 167 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Dour, Quiévrain' | 'Dour-Quiévrain' | 'Partie 1' | 50.4030 | 3.7210 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 98 | 4 | 8000 | 'Energie Hainaut' | 'NA' | 'Engie' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 691 |
---|
51 | 4030 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Dour, Quiévrain' | 'Dour-Quiévrain' | 'Partie 2' | 50.4100 | 3.7310 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 98 | 3 | 6000 | 'Energie Hainaut' | 'Engie' | 'Engie' | 2008 | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 691 |
---|
52 | 4032 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Dour, Quiévrain' | 'Dour-Quiévrain' | 'Partie 3' | 50.4080 | 3.7280 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 98 | 2 | 4000 | 'Ventis' | 'Ventis' | 'Engie' | 2009 | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 691 |
---|
53 | 15233 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Dour, Quiévrain' | 'Dour-Quiévrain' | 'Partie 4' | 50.4130 | 3.7370 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 98 | 2 | 4000 | 'Ventis' | 'Ventis' | 'Ventis' | 2009 | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 691 |
---|
54 | 15234 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Dour, Quiévrain' | 'Dour-Quiévrain' | 'Partie 5' | 50.4160 | 3.7130 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | 98 | 1 | 2300 | 'Ventis' | 'Ventis' | 'Ventis' | 2010 | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 691 |
---|
55 | 15235 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Dour, Quiévrain' | 'Dour-Quiévrain' | 'Partie 6' | 50.4000 | 3.7240 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | 98 | 2 | 4600 | 'Ventis' | 'SCRL Les Moulins du Haut Pays' | 'Ventis' | 2010 | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 691 |
---|
56 | 22392 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Hensies' | 'Dour-Quiévrain' | 'Partie 7a' | 50.4150 | 3.7210 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E92/2350' | 104 | 2 | 4700 | 'Ventis' | 'Ventis' | 'NA' | NaN | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Enercon' | 2350 | 92 | 46 | 6.6476e+03 | '' | 691 |
---|
57 | 22718 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Hensies' | 'Dour-Quiévrain' | 'Partie 7b' | 50.4170 | 3.7290 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E92/2350' | 104 | 2 | 4700 | 'Electrabel' | 'Engie' | 'Ventis' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Enercon' | 2350 | 92 | 46 | 6.6476e+03 | '' | 691 |
---|
58 | 27441 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Ecaussinnes' | 'Ecaussinnes' | 'NA' | 50.5310 | 4.1770 | 'NA' | 'Yes' | 'No' | 'Siemens' | 'SWT-3.2-113' | 92.5000 | 3 | 9600 | 'Electrabel' | 'Engie' | 'Engie' | 2019 | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Siemens' | 3200 | 113 | 56.5000 | 1.0029e+04 | '' | 758 |
---|
59 | 16381 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Estaimpuis' | 'Estaimpuis' | 'La Royère' | 50.6780 | 3.2850 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V100/2200' | NaN | 2 | 4400 | 'EDF Luminus' | 'IPALLE' | 'IPALLE' | NaN | 'Production' | '' | 'Link' | 08-Apr-0020 | 'Vestas' | 2200 | 100 | 50 | 7854 | '' | 627 |
---|
60 | 25210 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Estaimpuis' | 'Estaimpuis' | 'La Royère' | 50.6580 | 3.2980 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V100/2200' | NaN | 3 | 6600 | 'EDF Luminus' | 'EDF Luminus' | 'EDF Luminus' | NaN | 'Production' | '' | 'Link' | 08-Apr-0020 | 'Vestas' | 2200 | 100 | 50 | 7854 | '' | 627 |
---|
61 | 2701 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Estinnes-au-Mont' | 'Estinnes' | 'Levant de Mons - Estinnes 1' | 50.4140 | 4.0740 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E126/6000' | 135 | 1 | 6000 | 'Windvision' | 'CGN EE/Enercon' | 'CGN EE' | 2008 | 'Production' | '' | 'Link' | 21-Jan-0020 | 'Enercon' | 6000 | 126 | 63 | 12469 | '' | 724 |
---|
62 | 11213 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Estinnes-au-Mont' | 'Estinnes' | 'Levant de Mons - Estinnes 2' | 50.4140 | 4.0740 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E126/7500' | 135 | 6 | 45000 | 'Windvision' | 'CGN EE/Enercon' | 'CGN EE' | 2010 | 'Production' | '' | 'Link' | 21-Jan-0020 | 'Enercon' | 7500 | 127 | 63.5000 | 1.2668e+04 | '' | 724 |
---|
63 | 20640 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Estinnes-au-Mont' | 'Estinnes' | 'Levant de Mons - Estinnes 1' | 50.4140 | 4.0740 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E126/7500' | 135 | 4 | 30000 | 'Windvision' | 'CGN EE/Enercon' | 'CGN EE' | 2008 | 'Production' | '' | 'Link' | 21-Jan-0020 | 'Enercon' | 7500 | 127 | 63.5000 | 1.2668e+04 | '' | 724 |
---|
64 | 22346 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Seneffe' | 'Feluy' | 'NA' | 50.5580 | 4.2290 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM92/2050' | 94 | 7 | 14350 | 'Elawan' | 'Elawan' | 'Elawan/CLEF' | NaN | 'Production' | '' | 'Link' | 11-Sep-0019 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 758 |
---|
65 | 29297 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Seneffe' | 'Feluy - Zone Industrielle' | 'Partie 1 - LEF Colas' | 50.5330 | 4.2000 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V110/2200' | NaN | 1 | 2200 | 'EDF Luminus' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 22-Feb-0019 | 'Vestas' | 2200 | 110 | 55 | 9.5033e+03 | '' | 758 |
---|
66 | 19962 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Frasnes-Lez-Anvaing' | 'Frasnes-Lez-Anvaing' | 'NA' | 50.6560 | 3.6450 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM92/2050' | 100 | 1 | 2050 | 'Ventis' | 'Ventis/Engie' | 'Ventis/Engie/CLEF' | NaN | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 692 |
---|
67 | 21755 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Frasnes-Lez-Anvaing' | 'Frasnes-Lez-Anvaing' | 'NA' | 50.6560 | 3.6450 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM100' | 100 | 1 | 2000 | 'Ventis' | 'Ventis/Engie' | 'Ventis/Engie/CLEF' | 2014 | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Senvion' | 2000 | 100 | 50 | 7854 | '' | 692 |
---|
68 | 24706 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Frasnes-Lez-Anvaing' | 'Frasnes-Lez-Anvaing' | 'NA' | 50.6560 | 3.6450 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM92/2050' | 100 | 1 | 2050 | 'NA' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 692 |
---|
69 | 24707 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Frasnes-Lez-Anvaing' | 'Frasnes-Lez-Anvaing' | 'NA' | 50.6560 | 3.6450 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM100' | 100 | 1 | 2000 | 'NA' | 'NA' | 'NA' | 2014 | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Senvion' | 2000 | 100 | 50 | 7854 | '' | 692 |
---|
70 | 3806 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Beaumont, Froidchapelle' | 'Froidchapelle' | 'NA' | 50.2160 | 4.3290 | 'NA' | 'Yes' | 'No' | 'GE Energy' | '2.5xl' | 100 | 10 | 25000 | 'Greenwind' | 'Ventient Energy' | 'Ventient Energy' | 2008 | 'Production' | '' | 'Link' | 11-Mar-0020 | 'GE Energy' | 2500 | 100 | 50 | 7854 | '' | 757 |
---|
71 | 23514 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Beaumont, Froidchapelle' | 'Froidchapelle' | 'NA' | 50.2110 | 4.3110 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V100/2000' | NaN | 6 | 12000 | 'Elawan' | 'Elawan' | 'EDP Renovaveis' | 2016 | 'Production' | '' | 'Link' | 11-Sep-0019 | 'Vestas' | 2000 | 100 | 50 | 7854 | '' | 757 |
---|
72 | 255 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Ath' | 'Ghislenghien' | 'NA' | 50.6530 | 3.8650 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 98 | 1 | 2000 | 'Colruyt' | 'NA' | 'NA' | 2006 | 'Production' | '' | 'Link' | 15-Jan-0018 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 692 |
---|
73 | 30671 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Mons' | 'Ghlin' | 'NA' | 50.4820 | 3.8720 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V110/2000' | NaN | 1 | 2000 | 'EDF Luminus' | 'NA' | 'Hydro Extrusion Ghlin' | NaN | 'Production' | '' | 'Link' | 16-Mar-0020 | 'Vestas' | 2000 | 110 | 55 | 9.5033e+03 | '' | 691 |
---|
74 | 22693 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'La Louvière' | 'La Louvière Garocentre' | 'NA' | 50.5000 | 4.1850 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E92/2350' | 104 | 4 | 9400 | 'Ventis' | 'NA' | 'Ventis/IDEA' | NaN | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Enercon' | 2350 | 92 | 46 | 6.6476e+03 | '' | 758 |
---|
75 | 15854 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Leuze-en-Hainaut' | 'Leuze-en-Hainaut' | 'NA' | 50.5990 | 3.6390 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM92/2050' | 100 | 7 | 14350 | 'Electrabel/ELSA/CLEF' | 'Engie' | 'Engie' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 691 |
---|
76 | 19971 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Leuze-en-Hainaut' | 'Leuze-en-Hainaut' | 'NA' | 50.5990 | 3.6390 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM92/2050' | 100 | 2 | 4100 | 'Electrabel/ELSA/CLEF' | 'ELSA' | 'ELSA' | NaN | 'Production' | '' | 'Link' | 24-Oct-0018 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 691 |
---|
77 | 19972 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Leuze-en-Hainaut' | 'Leuze-en-Hainaut' | 'NA' | 50.5990 | 3.6390 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM92/2050' | 100 | 1 | 2050 | 'Electrabel/ELSA/CLEF' | 'CLEF' | 'CLEF' | NaN | 'Production' | '' | 'Link' | 26-Nov-0018 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 691 |
---|
78 | 27600 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Leuze-en-Hainaut' | 'Leuze-en-Hainaut' | 'NA' | 50.5990 | 3.6390 | 'NA' | 'No' | 'No' | 'Senvion' | 'MM100' | NaN | 1 | 2000 | 'Electrabel' | 'NA' | 'Engie/#ND' | 2018 | 'Production' | '' | 'Link' | 24-Oct-0018 | 'Senvion' | 2000 | 100 | 50 | 7854 | '' | 691 |
---|
79 | 10783 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Celles-en-Hainaut, Pecq' | 'Molenbaix' | 'NA' | 50.7020 | 3.3950 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM100' | 100 | 1 | 2000 | 'Eneco' | 'NA' | 'CLEF' | NaN | 'Production' | '' | 'Link' | 27-Jan-0020 | 'Senvion' | 2000 | 100 | 50 | 7854 | '' | 660 |
---|
80 | 10784 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Celles-en-Hainaut, Pecq' | 'Molenbaix' | 'NA' | 50.7020 | 3.3950 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM100' | 100 | 4 | 8000 | 'Eneco' | 'NA' | 'Eneco' | NaN | 'Production' | '' | 'Link' | 27-Jan-0020 | 'Senvion' | 2000 | 100 | 50 | 7854 | '' | 660 |
---|
81 | 1782 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Beloeil' | 'Moulins Saint-Roch' | 'Bury' | 50.5320 | 3.6170 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM100' | 100 | 1 | 2000 | 'IPALLE' | 'TTR Energy' | 'TTR Energy' | 2018 | 'Production' | '' | 'Link' | 06-May-0019 | 'Senvion' | 2000 | 100 | 50 | 7854 | '' | 659 |
---|
82 | 25319 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Péruwelz' | 'Moulins Saint-Roch' | 'Bury' | 50.5320 | 3.6170 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM100' | 100 | 3 | 6000 | 'IPALLE' | 'TTR Energy' | 'TTR Energy' | 2018 | 'Production' | '' | 'Link' | 06-May-0019 | 'Senvion' | 2000 | 100 | 50 | 7854 | '' | 659 |
---|
83 | 439 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Pont-à-Celles' | 'Pont-à-Celles' | 'NA' | 50.5440 | 4.3460 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 98 | 8 | 16000 | 'Eneco' | 'Sky Sweeper SA' | 'NA' | NaN | 'Production' | '' | 'Link' | 23-Oct-0017 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 758 |
---|
84 | 7140 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Quévy' | 'Quévy' | 'NA' | 50.3800 | 3.9550 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | 108 | 9 | 20700 | 'Ventis' | 'Ventis/#ND' | 'Ventis/Engie' | NaN | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 724 |
---|
85 | 15232 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Seneffe' | 'Seneffe ZI' | 'Dow Corning 1' | 50.5130 | 4.2630 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | 108 | 1 | 2300 | 'Energie 2030' | 'Energie 2030' | 'Energie 2030' | NaN | 'Production' | '' | 'Link' | 24-Oct-0019 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 758 |
---|
86 | 27440 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Seneffe' | 'Seneffe ZI' | 'Dow Corning 2' | 50.5130 | 4.2560 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E92/2350' | 104 | 1 | 2350 | 'Dow Chemicals Belgium' | 'Dow Chemicals Belgium' | 'Dow Chemicals Belgium' | NaN | 'Production' | '' | 'Link' | 28-Jan-0019 | 'Enercon' | 2350 | 92 | 46 | 6.6476e+03 | '' | 758 |
---|
87 | 30378 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Soignies' | 'Soignies' | 'NA' | 50.5950 | 4.0730 | 'NA' | 'Yes' | 'No' | 'Senvion' | 'MM92/2050' | 76 | 2 | 4100 | 'Electrabel' | 'NA' | 'Engie/#ND' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Senvion' | 2050 | 92.5000 | 46.2000 | 6.7056e+03 | '' | 724 |
---|
88 | 15337 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Hainaut (Wallonie)' | 'Tournai, Antoing, Brunehaut' | 'TGV-TAB' | 'Tournai' | 50.5690 | 3.4050 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2300' | 108 | 7 | 16100 | 'Ventis' | 'Ventis' | 'Ventis/#ND' | NaN | 'Production' | '' | 'Link' | 03-Apr-0020 | 'Enercon' | 2300 | 82 | 41 | 5281 | '' | 659 |
---|
89 | 423 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Amblève' | 'Amel' | 'Amblève' | 50.3470 | 6.2230 | 'NA' | 'Yes' | 'No' | 'Enercon' | 'E82/2000' | 98 | 5 | 10000 | 'Aspiravi' | 'Aspiravi' | 'Aspiravi' | 2008 | 'Production' | '' | 'Link' | 10-Apr-0019 | 'Enercon' | 2000 | 82 | 41 | 5281 | '' | 1018 |
---|
90 | 6785 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Berloz' | 'Berloz' | 'NA' | 50.6970 | 5.1870 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V90/2000' | 105 | 3 | 6000 | 'EDF renewables' | 'EDF Luminus' | 'EDF Luminus' | NaN | 'Production' | '' | 'Link' | 23-Oct-0017 | 'Vestas' | 2000 | 90 | 45 | 6.3617e+03 | '' | 892 |
---|
91 | 7212 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Berloz' | 'Berloz II' | 'NA' | 50.6920 | 5.1890 | 'NA' | 'Yes' | 'No' | 'Gamesa' | 'G114/2500' | 93 | 3 | 7500 | 'NA' | 'Eneco' | 'Eneco' | 2016 | 'Production' | '' | 'Link' | 15-Jan-0018 | 'Gamesa' | 2500 | 114 | 57 | 1.0207e+04 | '' | 892 |
---|
92 | 7215 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Berloz, Geer' | 'Berloz II' | 'NA' | 50.6870 | 5.2010 | 'NA' | 'Yes' | 'No' | 'Gamesa' | 'G114/2500' | 93 | 4 | 10000 | 'NA' | 'EDF Luminus' | 'EDF Luminus' | 2016 | 'Production' | '' | 'Link' | 15-Jan-0018 | 'Gamesa' | 2500 | 114 | 57 | 1.0207e+04 | '' | 892 |
---|
93 | 166 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Butgenbach' | 'Bullange - Butgenbach' | 'NA' | 50.4450 | 6.2420 | '600' | 'Yes' | 'No' | 'Vestas' | 'V80/2000' | 78 | 4 | 8000 | 'Electrabel' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 28-Aug-0018 | 'Vestas' | 2000 | 80 | 40 | 5.0266e+03 | '' | 1019 |
---|
94 | 3856 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Bullange' | 'Bullange - Butgenbach II' | 'NA' | 50.3940 | 6.3200 | 'NA' | 'Yes' | 'No' | 'Vestas' | 'V80/2000' | NaN | 6 | 12000 | 'Electrabel' | 'Engie' | 'Engie' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Vestas' | 2000 | 80 | 40 | 5.0266e+03 | '' | 1019 |
---|
95 | 26770 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Lincent' | 'Greensky - E40 (Liège)' | 'Part 2' | 50.7160 | 5.0440 | 'NA' | 'No' | 'No' | 'Vestas' | 'V100/2000' | NaN | 2 | 4000 | 'Engie' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 26-Apr-0019 | 'Vestas' | 2000 | 100 | 50 | 7854 | '' | 859 |
---|
96 | 26771 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Lincent' | 'Greensky - E40 (Liège)' | 'Part 3' | 50.7160 | 5.0440 | 'NA' | 'No' | 'No' | 'Vestas' | 'V100/2000' | NaN | 3 | 6000 | 'Engie' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 26-Apr-0019 | 'Vestas' | 2000 | 100 | 50 | 7854 | '' | 859 |
---|
97 | 26772 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Hannut' | 'Greensky - E40 (Liège)' | 'Part 4' | 50.7160 | 5.0440 | 'NA' | 'No' | 'No' | 'Vestas' | 'V100/2000' | NaN | 2 | 4000 | 'Engie' | 'NA' | 'NA' | NaN | 'Production' | '' | 'Link' | 26-Apr-0019 | 'Vestas' | 2000 | 100 | 50 | 7854 | '' | 859 |
---|
98 | 345 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Héron' | 'Héron' | 'NA' | 50.5340 | 5.1050 | 'NA' | 'Yes' | 'No' | 'Gamesa' | 'G114/2500' | 93 | 3 | 7500 | 'EDF Luminus' | 'EDF Luminus' | 'EDF Luminus' | NaN | 'Production' | '' | 'Link' | 29-Jan-0018 | 'Gamesa' | 2500 | 114 | 57 | 1.0207e+04 | '' | 858 |
---|
99 | 30351 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'Lierneux' | 'Lambiester' | 'NA' | 50.3270 | 5.8270 | 'NA' | 'No' | 'No' | 'Siemens' | 'SWT-3.2-113' | NaN | 6 | 19200 | 'EDF Luminus' | 'EDF Luminus' | 'EDF Luminus' | NaN | 'Production' | '' | 'Link' | 24-Oct-0019 | 'Siemens' | 3200 | 113 | 56.5000 | 1.0029e+04 | '' | 955 |
---|
100 | 29699 | 'Europe' | 'BE' | 'Belgium' | 'NA' | 'Liège (Wallonie)' | 'NA' | 'Modave' | 'NA' | 50.4950 | 5.2660 | 'NA' | 'Yes' | 'No' | 'Senvion' | '3.2M114' | NaN | 4 | 12800 | 'Electrabel' | 'NA' | 'Wind4Wallonia' | NaN | 'Production' | '' | 'Link' | 23-Mar-0020 | 'Senvion' | 3200 | 114 | 57 | 1.0207e+04 | '' | 891 |
---|
⋮ |
---|
disp("Number of Windfarm: "+ height(unique([t.Latitude t.Longitude], "row")))
disp("Number of wind turbines: "+ sum(t.Number_of_turbines,"omitnan"))
Number of wind turbines: 42231
Load Power Curve data
Power curve data provide the relationship to convert windspeed into power production. This data is downloaded from ...
filename = "data/WT_data/Power_curves_20210319.xls";
opts = detectImportOptions(filename,'Sheet','Power_curves');
tp=readtable(filename,opts);
Warning: Column headers from the file were modified to make them valid MATLAB identifiers before creating variable names for the table. The original column headers are saved in the VariableDescriptions property.
Set 'VariableNamingRule' to 'preserve' to use the original column headers as table variable names.
powerCurve.ws = table2array(tp(1,6:end-2));
powerCurve.ManufucturerName = tp.ManufucturerName(2:end);
powerCurve.TurbineName = tp.TurbineName(2:end);
powerCurve.Power = table2array(tp(2:end,6:end-2));
Smoothing Power-curve
Because windspeed is more heterogenous (in time) than the reanalysis data, it is standard procedure to smooth the powercurve with a Gaussian of mean 0 and standard deviation proportionaly to the windspeed. Here are some equation used in the litterature
-
(Jourdier, 2020 ; 10.5194/asr-17-63-2020): 30 min -
(Staffell & Pfenninger 2016 ; 10.1016/j.energy.2016.08.068) : 1hr MERRA -
(Olauson & Bergkvist, 2015) 1hr MERRA -
(Olauson, 2018)
As our wind databse has a 1hour resolution, we follow Staffell & Pfenninger (2016)
powerCurve.ws_smooth=powerCurve.ws(1):0.1:powerCurve.ws(end);
powerCurve.Power_smooth = nan(size(powerCurve.Power,1),numel(powerCurve.ws_smooth));
for i_p=1:size(powerCurve.Power,1)
p = interp1(powerCurve.ws,powerCurve.Power(i_p,:),powerCurve.ws_smooth);
% figure; plot(powerCurve.ws,powerCurve.Power(i_p,:),'or',powerCurve.ws_smooth,p,'-k')
for i_w=1:numel(powerCurve.ws_smooth)
s = 0.6+0.2*powerCurve.ws_smooth(i_w);
weight = normpdf(powerCurve.ws_smooth,powerCurve.ws_smooth(i_w),s);
weight = weight ./sum(weight);
powerCurve.Power_smooth(i_p,i_w)=weight*p';
% figure; hold on; plot(powerCurve.ws,powerCurve.Power(i_p,:)); plot(powerCurve.ws_smooth,powerCurve.Power_smooth(i_p,:));
Add Powercurve to windturbine
We assign the power curve to each windfarm
[~,Locb] = ismember(string([t.Turbine t.Manufacturer]) , string([powerCurve.TurbineName powerCurve.ManufucturerName]),'rows');
t.powerCurve = nan(size(t,1),numel(powerCurve.ws_smooth));
t.powerCurve(Locb~=0,:) = powerCurve.Power_smooth(Locb(Locb~=0),:);
It would be nicer to do use the join function, but thes function requires that all windfarms have a matching powercurve. Hence, we use ismemeber()
%t2=join(t,tp,'LeftKeys','ID','RightKeys','Turb_ID');
Analysis of cut-in and cut-off
Compute the cut-in and cut-off value for each powercurve
Cutin = powerCurve.ws(sum(cumprod(powerCurve.Power==0,2),2));
Cutoff = powerCurve.ws(length(powerCurve.ws)-sum(cumprod(fliplr(powerCurve.Power)==0,2),2));
To plot the histogram of cut-in and cut-off, we need to accounts for each windfarm size (number of windturbines).
Cutin_h = repelem(Cutin(Locb(Locb~=0)),t.Number_of_turbines(Locb~=0));
Cutoff_h = repelem(Cutoff(Locb(Locb~=0)),t.Number_of_turbines(Locb~=0));
figure('position',[0 0 1000 300]);
histogram(Cutin_h); xlabel('windspeed'); ylabel('Number of windturbine'); title('cut-in'); legend(['M=' num2str(mean(Cutin_h))])
histogram(Cutoff_h); xlabel('windspeed'); title('cut-off'); legend(['M=' num2str(mean(Cutoff_h))])
%Cutin(Locb(Locb~=0)).*t.Number_of_turbines(Locb~=0).*t.turbine_sweptArea(Locb~=0))
Data Imputation
Several method exist for missing data: median, GLM or kNN (or more sofisticated like MICE).
Illustration of available data
var_test = {'turbine_sweptArea','turbine_capacity','Hub_height','Number_of_turbines','Total_power','powerCurve'};
figure('position',[0 0 1000 1000]);
subplot(6,1,1); histogram(t.Number_of_turbines); xlabel('Number of turbines'); ylim([0.5 10000]);set(gca, 'YScale', 'log')
subplot(6,1,2); histogram(t.turbine_sweptArea); xlabel('Swept Area (m^2)'); ylim([0.5 10000]); xlim([0 40000]); set(gca, 'YScale', 'log')
subplot(6,1,3); histogram(t.Hub_height); xlabel('Hub height (m)'); axis tight;set(gca, 'YScale', 'log'); xlim([0 170]);
subplot(6,1,4); histogram(t.turbine_capacity); xlabel('Turbine Capacity (kW)'); axis tight;set(gca, 'YScale', 'log')
subplot(6,1,[5 6]); hold on;
plot(powerCurve.ws_smooth, nanmean(t.powerCurve/1000),'k');
plot(powerCurve.ws_smooth, nanmedian(t.powerCurve/1000),'-.k');
plot(powerCurve.ws_smooth, quantile(t.powerCurve/1000,0.1),'--k');
plot(powerCurve.ws_smooth, quantile(t.powerCurve/1000,.9),'--k');
ax=gca; ylabel('Power (MW)'); xlabel('Windspeed (km/h)')
var_test = {'turbine_sweptArea','turbine_capacity','Hub_height','Number_of_turbines','Total_power','powerCurve'};
a=sprintf([num2str(nansum(t.Number_of_turbines)) '\t windfarms\n']);
tmp = nansum(t.Number_of_turbines(all(isnan(t.(var_test{i})),2)));
a=[a sprintf([num2str(tmp) '(' num2str(100*tmp/nansum(t.Number_of_turbines)) 'perc)\t windfarms without ' var_test{i} '\n' ])];
disp(a)
42231 windfarms
65(0.15392perc) windfarms without turbine_sweptArea
65(0.15392perc) windfarms without turbine_capacity
13532(32.0428perc) windfarms without Hub_height
0(0perc) windfarms without Number_of_turbines
65(0.15392perc) windfarms without Total_power
9325(22.0809perc) windfarms without powerCurve
Old Illustration
% var_test = {'turbine_sweptArea','turbine_capacity','Hub_height','Number_of_turbines','Total_power'};
% figure('position',[0 0 1000 1000]);
% for i1=1:numel(var_test)
% for i2=(i1+1):numel(var_test)
% subplot(numel(var_test),numel(var_test),i2+(i1-1)*numel(var_test)); hold on
% plot(t.(var_test{i2}),t.(var_test{i1}),'.k');
% if i2==i1+1, xlabel(strrep(var_test{i2},'_',' ')); ylabel(strrep(var_test{i1},'_',' ')); end
Create new variable for imputated value
Windfarm level: Number_of_turbines Turbine_capacity and Total_power
First, we deal with value at the windfarm level. Three variables are linked, with total power = number_of_turbine x turbine_capacity.
Check occurane of nan with either/or these two variable.
X=[tim.Number_of_turbines tim.Total_power tim.turbine_capacity];
[a1,~,c] = unique(isnan(X),'rows');
table(~a1(:,1), ~a1(:,2), ~a1(:,3) ,histcounts(c)','variableNames',{'Number of turbine','Total power','Turbine capacity','Number'})
ans = 1×4 table
| Number of turbine | Total power | Turbine capacity | Number |
---|
1 | 1 | 1 | 1 | 12518 |
---|
For all the missing windfarm, we missing two variables, so we can't fill them up easily.
We first fill-up Number_of_turbines and Total_power at the same time.We perform the prediction for both variable with a fglm
mdl = fitglm(tim.Number_of_turbines, tim.Total_power)
mdl =
Generalized linear regression model:
y ~ 1 + x1
Distribution = Normal
Estimated Coefficients:
Estimate SE tStat pValue
________ ______ ______ __________
(Intercept) 364.57 53.021 6.876 6.4498e-12
x1 1698.6 10.641 159.63 0
12518 observations, 12516 error degrees of freedom
Estimated Dispersion: 1.87e+07
F-statistic vs. constant model: 2.55e+04, p-value = 0
[ypred,yci] = predict(mdl,tim.Number_of_turbines(isnan(tim.Total_power),:));
tim.Total_power(isnan(tim.Total_power)) = ypred;
mdl2 = fitglm(tim.Total_power,tim.Number_of_turbines)
mdl2 =
Generalized linear regression model:
y ~ 1 + x1
Distribution = Normal
Estimated Coefficients:
Estimate SE tStat pValue
_________ __________ ______ ______
(Intercept) 0.97952 0.024067 40.7 0
x1 0.0003948 2.4732e-06 159.63 0
12518 observations, 12516 error degrees of freedom
Estimated Dispersion: 4.35
F-statistic vs. constant model: 2.55e+04, p-value = 0
[ypred,yci] = predict(mdl2,tim.Total_power(isnan(tim.Number_of_turbines),:));
tim.Number_of_turbines(isnan(tim.Number_of_turbines)) = round(ypred);
Ilustration
figure('position',[0 0 1000 300]);
subplot(1,2,1); hold on; box on;
plot(t.Total_power,t.Number_of_turbines,'.k'); l=lsline; l.Color='r';
plot(tim.Total_power(isnan(t.Total_power)|isnan(t.Number_of_turbines)),tim.Number_of_turbines(isnan(t.Total_power)|isnan(t.Number_of_turbines)),'.r');
xlabel('Total power (kW)'); ylabel('Number of turbines');
Then, we fill-up turbine capacity
Wind turbine capacity is directly related to total power and number of windturbine
tim.turbine_capacity(isnan(tim.turbine_capacity)) = tim.Total_power(isnan(tim.turbine_capacity)) ./ tim.Number_of_turbines(isnan(tim.turbine_capacity));
Illustration
figure('position',[0 0 1000 300]);
plot(t.Total_power ./ t.Number_of_turbines , t.turbine_capacity , '.k' ); l=lsline; l.Color='r';
plot(tim.Total_power(isnan(t.turbine_capacity)) ./ tim.Number_of_turbines(isnan(t.turbine_capacity)) , tim.turbine_capacity(isnan(t.turbine_capacity)) , '.r' );
xlabel('Total power / Number of turbines (kW)'); ylabel('Turbine capacity (kW)'); box on;
Windturbine level: Hub_height and turbine_sweptArea
At the windturbine level, we are missing a lot of hub height. Hub height is well related to turbine capacity and swept area.
Check occurane of nan for the three variable
X=[tim.turbine_sweptArea tim.turbine_capacity tim.Hub_height];
[a1,~,c] = unique(isnan(X),'rows');
table(~a1(:,1), ~a1(:,2), ~a1(:,3) ,histcounts(c)','variableNames',{'Swept area','Turbine capacity','hub height','Number'})
ans = 4×4 table
| Swept area | Turbine capacity | hub height | Number |
---|
1 | 1 | 1 | 1 | 8167 |
---|
2 | 1 | 1 | 0 | 4185 |
---|
3 | 0 | 1 | 0 | 165 |
---|
4 | 0 | 0 | 0 | 1 |
---|
Hub height can be determined from swept area and/or turbine capacity for 4K cases.
First, we build a glm with turbine_capacity and turbine_sweptArea and predict only for nan value in Hub_height:
mdl = fitglm([tim.turbine_sweptArea tim.turbine_capacity],tim.Hub_height)
mdl =
Generalized linear regression model:
y ~ 1 + x1 + x2
Distribution = Normal
Estimated Coefficients:
Estimate SE tStat pValue
_________ __________ ______ ___________
(Intercept) 49.763 0.46652 106.67 0
x1 0.0052245 0.00013783 37.905 9.2783e-290
x2 0.0073252 0.00048016 15.256 7.805e-52
8167 observations, 8164 error degrees of freedom
Estimated Dispersion: 330
F-statistic vs. constant model: 6.34e+03, p-value = 0
[ypred,yci] = predict(mdl,[tim.turbine_sweptArea(isnan(tim.Hub_height),:) tim.turbine_capacity(isnan(tim.Hub_height),:)]);
ypred(ypred>max(tim.Hub_height))=max(tim.Hub_height); % Avoid missleading value of hubheight
tim.Hub_height(isnan(tim.Hub_height)) = ypred;
Then, we build a glm with turbine_capacity and predict only for nan value in Hub_height:
mdl = fitglm(tim.turbine_capacity,tim.Hub_height)
mdl =
Generalized linear regression model:
y ~ 1 + x1
Distribution = Normal
Estimated Coefficients:
Estimate SE tStat pValue
________ __________ ______ ______
(Intercept) 47.962 0.30583 156.83 0
x1 0.023158 0.00015658 147.9 0
12352 observations, 12350 error degrees of freedom
Estimated Dispersion: 270
F-statistic vs. constant model: 2.19e+04, p-value = 0
[ypred,yci] = predict(mdl,tim.turbine_capacity(isnan(tim.Hub_height),:));
% ypred(ypred>max(tim.Hub_height))=max(tim.Hub_height); % Avoid missleading value of hubheight
tim.Hub_height(isnan(tim.Hub_height)) = ypred;
Finally, we build a glm with turbine_capacity and predict only for nan value in turbine_sweptArea:
mdl = fitglm(tim.turbine_capacity,tim.turbine_sweptArea);
[ypred,yci] = predict(mdl,tim.turbine_capacity(isnan(tim.turbine_sweptArea),:));
% ypred(ypred>max(tim.Hub_height))=max(tim.Hub_height); % Avoid missleading value of hubheight
tim.turbine_sweptArea(isnan(tim.turbine_sweptArea)) = ypred;
Ilustration
figure('position',[0 0 1000 300]);
plot(t.turbine_sweptArea,t.Hub_height,'.k'); l=lsline; l.Color='r';
plot(tim.turbine_sweptArea(isnan(t.Hub_height)),tim.Hub_height(isnan(t.Hub_height)),'.r');
xlabel('Turbine swept area (m^2)'); ylabel('Hub height (m)'); ylim([0 180]); xlim([0 20000])
plot(t.turbine_capacity,t.Hub_height,'.k'); l=lsline; l.Color='r';
plot(tim.turbine_capacity(isnan(t.Hub_height)),tim.Hub_height(isnan(t.Hub_height)),'.r'); ylim([0 180]); xlim([0 8000])
xlabel('Turbine capacity (kW)'); ylabel('Hub height (m)');
figure('position',[0 0 700 700]); hold on;
h = worldmap([min(tim.Latitude)-2 max(tim.Latitude)+2], [min(tim.Longitude)-2 max(tim.Longitude)+2]);
setm(h,'frame','on','grid','off'); set(findall(h,'Tag','MLabel'),'visible','off'); set(findall(h,'Tag','PLabel'),'visible','off')
bordersm('countries','facecolor',[228 238 243]./255);
% surfm(g.lat,g.lon,turbineSweptAreaMap)
scatterm(t.Latitude, t.Longitude, [], t.Hub_height,'.');
c=colorbar; c.Label.String='Hub_height (m)';
We can then assess the missing value in the new imputated table
var_test = {'turbine_sweptArea','turbine_capacity','Hub_height','Number_of_turbines','Total_power'};
a=sprintf([num2str(size(tim,1)) '\t windfarms\n' ]);
a=[a sprintf([num2str(sum(all(isnan(tim.(var_test{i})),2))) '\t windfarms without ' var_test{i} '\n' ])];
disp(a)
12518 windfarms
1 windfarms without turbine_sweptArea
1 windfarms without turbine_capacity
1 windfarms without Hub_height
1 windfarms without Number_of_turbines
1 windfarms without Total_power
The remaining missing data (if any) can be filled with the median value.
tim.(var_test{i})(isnan(tim.(var_test{i})))=nanmedian(tim.(var_test{i}));
Power Curve
To input the power curve, we parametrize the power curve function based on its max value which corresponds to the windturbine capacity.
We first build a power curve template based on the median value of all windfarm (note that we use tim here)
powerCurve_template = nanmedian(tim.powerCurve'./max(tim.powerCurve,[],2)',2);
figure('position',[0 0 900 300]); hold on
plot(powerCurve.ws_smooth,(powerCurve.Power_smooth'./max(powerCurve.Power_smooth,[],2)'),'color',[.8 .8 .8])
plot(powerCurve.ws_smooth, powerCurve_template,'k','linewidth',2)
xlabel('windspeed (m/s)'); ylabel('Power'); title('Power curve normalized by its max value')
The maximum value of the powercurve is well related to the turbine capacity
Use GLM to impute max powercurve based on turbine capacity
mdl = fitglm(tim.turbine_capacity,max(tim.powerCurve,[],2) );
[ypred,yci] = predict(mdl,tim.turbine_capacity(isnan(max(tim.powerCurve,[],2)),:));
% ypred(ypred>max(tim.powerCurve(:)))=max(tim.powerCurve(:));
tim.powerCurve(isnan(max(tim.powerCurve,[],2)),:) = powerCurve_template' .* ypred;
plot(max(t.powerCurve,[],2),t.turbine_capacity,'.k');l=lsline; l.Color='r';
plot(max(tim.powerCurve(isnan(max(t.powerCurve,[],2)),:),[],2),t.turbine_capacity(isnan(max(t.powerCurve,[],2))),'.r');
xlabel('Max Power Curve (kW)'); ylabel('Turbine Capacity (kW)')
Windfarm database characteristics
disp(['Number of Windfarms: ' num2str(height(tim))])
Number of Windfarms: 12518
disp(['Number of Windturbines: ' num2str(nansum(tim.Number_of_turbines))])
Number of Windturbines: 42696
disp(['Total power: ' num2str(nansum(tim.Total_power*1000/1e9))])
Group by country
tim.Total_sweptArea = tim.turbine_sweptArea.*tim.Number_of_turbines;
groupsummary(tim,'Country','sum',{'Number_of_turbines' 'Total_power','Total_sweptArea'})
ans = 11×5 table
| Country | GroupCount | sum_Number_of_turbines | sum_Total_power | sum_Total_sweptArea |
---|
1 | 'Austria' | 13 | 31 | 47920 | 1.4496e+05 |
---|
2 | 'Belgium' | 260 | 811 | 1839050 | 5.2464e+06 |
---|
3 | 'Czech Republic' | 45 | 124 | 222890 | 6.5768e+05 |
---|
4 | 'Denmark' | 310 | 495 | 383840 | 9.3967e+05 |
---|
5 | 'France' | 1421 | 7614 | 1.6036e+07 | 4.7636e+07 |
---|
6 | 'Germany' | 9703 | 30472 | 5.3427e+07 | 1.5217e+08 |
---|
7 | 'Luxembourg' | 26 | 74 | 153500 | 4.4892e+05 |
---|
8 | 'Netherlands' | 624 | 1755 | 3157710 | 8.3218e+06 |
---|
9 | 'Poland' | 50 | 509 | 1106855 | 3.6533e+06 |
---|
10 | 'Spain' | 47 | 774 | 639410 | 1.7896e+06 |
---|
11 | 'Switzerland' | 19 | 37 | 75050 | 2.0912e+05 |
---|
*GroupCount=number of windfarm
Distance to cast
tmp = pdist2([tim.Latitude tim.Longitude],[coastlat coastlon], @lldistkm);
tim.distCoast = min(tmp,[],2);
hh = repelem(tim.Hub_height,tim.Number_of_turbines);
figure('position',[0 0 800 400]);
histogram(hh); ylabel('Number of windturbines'); xlabel('Hub Height (m)');
legend(['M=' num2str(mean(hh)) ' ; SD=' num2str(std(hh)) ])
rr = repelem(tim.turbine_rotorRadius,tim.Number_of_turbines);
hhhh = repelem(tim.Hub_height,tim.Number_of_turbines);
tmp = real(2*sqrt(rr.^2 - (h-hhhh).^2));
tmp = tmp ./ sum(tmp,2) .* rr.^2*pi;
figure('position',[0 0 800 400]);
subplot(1,2,1); barh(h,nansum(tmp))
ylabel('Height above ground level (m)'); xlabel('Sum of area (m^2)');
subplot(1,2,2); plot(h,cumsum(nansum(tmp))./sum(tmp(:),'omitnan'))
xlabel('Height above ground level (m)'); grid on; axis tight; xline([60 150])
dd = repelem(sqrt(tim.turbine_sweptArea/pi)*2,tim.Number_of_turbines);
figure('position',[0 0 800 400]);
histogram(dd); ylabel('Number of windturbines'); xlabel('Swept diameter (m)');
legend(['M=' num2str(mean(dd)) ' ; SD=' num2str(std(dd)) ])
Save
save('data/windfarms_processed.mat', 'tim')