Você está na página 1de 54

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness

from land use maps


Andrew Stepek and Ine L. Wijnant
De Bilt, 2011 | Technical report; TR-321

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Pagina 2 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.

Datum

20 juni 2011

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Inhoud

Colofon2

Summary9

Introduction11

2 2.1 2.2

Description of data12 Roughness maps12 Wind data12

3 3.1 3.2 3.3

Method15 The two layer model of the Planetary Boundary Layer (PBL)15 Validation18 Inverse distance weighted interpolation (IDW)19

Results20

Discussion26

Conclusions29

Acknowledgements30

References31 Appendices33 A. B. C. D. E. F. G. The 12 maps of the monthly normals of surface wind speed Surface wind speed (m/s) validation per station for methods 1-6 Maps of interpolated Vmacro for methods 1-6 Maps of local and regional surface roughness Map of maximum macrowind speed (m/s) at station Rotterdam Geulhaven Abstract of Prof. Wieringas wind map report R script

Pagina 7 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Colofon

Titel

Auteurs

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps. Andrew Stepek T 030 220 64 11 Ine L. Wijnant T 030 220 64 11

Pagina 5 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Pagina 8 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Summary

There are different ways of creating gridded maps from observations. The aim of this study was to find an adequate method of producing interpolated maps of the yearly and monthly climate normals of the surface wind speed at all grid points in The Netherlands. Documenting the chosen interpolation method and providing the scientific foundation for this choice are the other goals. The study is part of a larger project within the KNMI to improve the interpolation of meteorological measurements. For 31 stations in the Netherlands, we had potential wind speed time series with 30 years of data (with at least 20 yearly and monthly averages) available as input for our method. Using Wieringas two layer model of the planetary boundary layer (Wieringa, 1986) the wind speed at the top of the boundary layer was calculated for each location. At this height above the relatively flat Dutch landscape, the (macro) wind flows freely, undisturbed by variations in the underlying surface roughness. This makes it an ideal height for interpolating the wind speed. After interpolation, surface wind speeds were calculated for all the grid values of the macrowind using the two layer model and a map of the surface roughness of The Netherlands. The method was refined by Verkaik (Verkaik, 2001). The method is a five-step procedure: 1 Use series of (potential) wind to calculate (potential) normals at measuring sites 2 Calculate wind speed normals at the top of the surface layer and the planetary boundary layer (Ekman layer) at measuring sites using roughness information from land use maps. 3 Interpolate the spatial pattern of wind speed at the top of the boundary layer 4 Calculate wind speed normals at 10 meters above the ground at all grid cells (inverse of step 2) and compare to the measured normals at measuring sites 5 Find the best method by objective verification and give a measure of the accuracy of the gridded information.

Many aspects of the method were varied to improve the output map. For example which stations to use and which not, the interpolation method, the size of the spatial footprint used to determine the values of the terrain roughness and whether or not to include roughness due to local differences in orographic height. In order to choose the most adequate version of the method, we looked at two aspects: how well the output compared to model and measured winds and how well the pattern of wind speeds met the expectations of wind experts. Our most adequate method makes use of the input data from all but one station: the quality of the measurements at Geulhaven are too poor due to its unique location in a built-up international port area. We used the inverse distance weighting interpolation method with an IDP of 2. The local surface roughness was represented by 2.5 km pixels and the meso- or regional roughness by 10 km pixels. Additional regional roughness due to orography was not used.

Pagina 9 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Introduction

Knowledge of the spatial distribution of the long-term average wind speed is essential for many activities e.g. the siting of wind turbines, aviation operations (e.g. runway planning and ballooning), ensuring airborne pollutants disperse quickly and safely and quantifying evaporation for agricultural purposes. However, wind energy resource and other models require gridded maps which include estimates of the wind speed at locations where no measurements are available. Generating gridded maps from point data, e.g. the meteorological observation stations, is commonly referred to as interpolation. Many interpolation methods are available and were previously used for meteorological data, e.g. multiple linear regression (Gurtz et al., 1999), inverse distance weighted (IDW) interpolation (Ni et al., 2006; Menzel, 1999), two dimensional linear regression (Wieringa, 1986 and 1998), splines (McVicar et al., 2007; Jeffrey et al., 2001) or kriging (Jeffrey et al., 2001). Each of these interpolation methods has its strong and weak points. The purpose of this study was to find an adequate method of producing interpolated maps of the yearly and monthly climate normals of the surface wind speed in The Netherlands for the period 1981-2010. We determined the quality of each map generated by a given method in three ways. We compared the calculated surface wind speeds to the "as measured" speeds (not corrected for surface roughness). We also compared the interpolated macrowind field to numerical weather prediction model analysis speeds at 2 km above ground level. Finally we used our expert judgement to decide whether the wind pattern was plausible. Expert judgments are to some extent subjective, but we tried to make them as objective as possible by recording the patterns that we expected to find in the interpolated maps. This report is divided into a number of chapters. Chapter 3 describes the two layer model of the planetary boundary layer (Wieringa, 1986) which we use to transform the surface wind speed into the macrowind speed which can be interpolated more successfully. The interpolation methods assessed in this study are also described. The results are shown in chapter 4. In addition, we go into detail on how we judge the quality of the maps, which is paramount for correctly choosing the most adequate method. More results can be found in appendixes at the end of this report. Chapter 5 provides a discussion of the methods and the results and indicates areas for future research. In the last chapter we present our conclusions.

Pagina 11 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Description of data

2.1 Roughness maps We have made roughness maps with the "rough_map program that we describe in method section 3.1. The roughness lengths in this program are based on the land use database LGN3+. LGN datasets are provided by Geodesk, a service unit within the Geo-information Centre of Wageningen University/Alterra and give information on land use in The Netherlands. The data are stored in 25 by 25 m grid cells. The information is mainly based on satellite data and is updated every 3-5 years since 1986. The first two versions of LGN were experimental databases with limited accuracy and clear shortcomings, but these limitations were overcome in version LGN3. Version LGN3+ (in which the number of land use classes was increased from 25 to 39) is used in this study because we decided to use a single LGN-dataset for the whole period and LGN3+ is the most adequate one as it is based on satellite images from 1995-1997 in the middle of the climate period (1981-2010). Version LGN3+ was also used in the Hydra project, in the course of which rough_map was written. The number of land use types was increased to 47 and of special importance were the types runways and parking lots which previously were grouped in the built-up area type with a far too high surface roughness (Verkaik, 2001). More improvements have been made to the LGN database since (see http://www.alterra.wur.nl/NL/Producten/GIS-bestanden/Landgebruik/ and http://www.alterra.wur.nl/UK/research/Specialisation+Geoinformation/Products_Services/LGN/) and these are based on satellite images from 1999 and 2000 (LGN4), 2003 and 2004 (LGN5) and 2007 and 2008 (LGN6).

2.2 Wind data Table 1 shows the wind and station data used to generate the interpolated maps of wind speed. There are two sets of station locations: KIS (Climate information system of KNMI), which is our standard set, and WMO which is a more recent set which is used in a sensitivity analysis for station location. The table also shows which stations provided normals of yearly and monthly average potential wind speed that were used as input for our calculation methods and which stations provided normals of the as measured wind speed (not corrected for surface roughness and for only very few stations corrected for non-standard measurement height) for the validation of the methods at surface level. The latter set of stations is a subset of the former set because in the past there were problems that affected the calculation of the "as measured" normals but not of the potential wind normals. In principle, as many stations as possible should be used and only those with sub-standard data quality should be excluded.

Pagina 12 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Table 1: Overview of the year normals of potential wind speed and as measured wind speed. In column "Station type", C stands for coastal stations within 3 km of open sea, S for stations with other large changes in surface roughness within 3 km of the station, O for no large changes and x for not used. X,Y coordinates in the Dutch Rijksdriehoekstelsel are used to specify the locations according to KIS (Climate information system of KNMI) and WMO (the 2010 list sent to the World Meteorological Organisation by KNMI). Of all the stations with as measured wind speed normals, only De Bilt was not used for validating our results. This was because the correction for the height of the anemometer at 20 m to the standard height of 10 m was inappropriate (Wever and Groen, 2009). This correction for height, which is called the Benschop correction, is since May 2011 no longer applied to land and coastal stations. The measurement height of 20 m in De Bilt was chosen because the wind speed measurements are strongly affected by nearby buildings and a forest and measuring at 20 m gives wind speeds that are approximately the same as those at 10 m above open terrain. The Benschop correction was designed for sea stations (Benschop, 1996) and for coastal stations the method worked correctly only for wind directions where the wind blew from the sea towards land. The fact that we base our calculations on normals of the speed, in which most of the wind direction information is lost, means that our method has difficulty with coastal locations anyway. So the fact that the validation data for coastal locations are not entirely perfect is less of a problem than for inland stations with uniform surroundings where our method should work well. In any case, for coastal stations, there are no better validation speeds available so the choice is between no validation and a slightly imperfect validation.

Pagina 13 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Furthermore, both the local and regional roughness values (see section 3.1) > 0.0012 and < 0.029 m were set to 0.03 m (a low land roughness associated with open fields of grass). We did this to avoid coastal pixels, with a lot of water, giving unrealistically high wind speeds for the land part of the pixels. The aim was, after all, to make a map of wind speeds above land. By changing the pixels in this way we ensured that water pixels (roughness < 0.0012 m) and land pixels were not altered unnecessarily. The choice of which stations to use as input for our map generation method is based on extensive testing with different sets of input stations. The calculation method, which is described in section 3.1, is expected to give better results when the input stations are surrounded by similar terrain in all directions. This is because normals are being interpolated so direction dependent terrain differences cannot be fully taken into account by the method and not because the method itself can not cope with terrain differences. First, coastal stations were excluded because they have sea on one side and land on the other. Then the "sheltered" stations (described in section 3.2) were left out because of the towns or forests within 3 km of the stations. However, as can be seen in chapter 4, the validation results were best when only the following four stations were excluded: Hupsel, Nieuw Beerta, Arcen and Rotterdam Geulhaven. For stations Hupsel, Nieuw Beerta and Arcen the 10 km pixels extend over the border into Germany where LGN3+ provides no surface roughness information (see section 2.1). The potential wind speed from these stations is not used as input but the as measured speed is used in the verification to show how large the errors can be very close to the Dutch border. All the border pixels of regional roughness were improved by substituting the value obtained from Agterberg and Wieringa's older map (1989). The only station excluded from both the calculation and the verification is Rotterdam Geulhaven. This station is used primarily for operational purposes in the very large harbour of Rotterdam and is not normally used in climatological research. The surrounding area makes representative wind measurement fairly impossible with a mix of large buildings and large stretches of open water. In Appendix E a map of the macrowind, Smacro shows the extremely high value from Rotterdam Geulhaven (14 m/s).

Pagina 14 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Method

3.1 The two layer model of the Planetary Boundary Layer (PBL) The description of the two layer model in this section is mainly based on the research carried out by Wieringa in the 1970s and 1980s and further developed by Verkaik around the turn of the century and more recently by Wever and Groen (2009). For additional detail, the reader is referred to these publications. Horizontal spatial wind speed variations on spatial scales less than the order of 100 km are caused mainly by differences in surface roughness and atmospheric stability. Stability is assumed to be neutral but this simplification does not limit the applicability of the model very much, as will be shown in the last paragraph of this section. The variations compared to the spatial average of the wind speed decrease with height because the varying levels of turbulence caused by various roughnesses all dissipate with increasing height because the higher one goes the more time the turbulence has had to dissipate. At a certain height the variations become small compared to the average speed. Such a height is referred to as a blending height and the wind speed there is spatially, in a horizontal sense, more homogenous than at lower heights and is therefore more suitable for interpolating. In this model two blending heights are used. It has been shown that in the surface layer most of the local, small-scale variations in roughness (e.g. small groups of trees), within about 3 km of the site of interest (Caton, 1977), have little effect on the wind at 60 m above the ground (Munn and Reimer, 1968). In the upper layer more time and height is needed before the regional, large-scale roughness variations (e.g. a forest) no longer disturb the flow. This occurs at the top of the PBL which is between 0.2 and 2 km deep most of the time. The first blending height is referred to as the mesolevel and the second as the macrolevel. In the lower or surface layer, Monin Obukhov theory is used (Obukhov, 1971; Businger and Yaglom, 1971). The first step in our method is to transform the normals of the potential wind speed into speeds at the mesolevel (see next paragraph). These normals are averages of at least 20 yearly or monthly mean speeds from the period 1981-2010 which are calculated conform the World Meteorological Organisation guidelines. This is done for each site:

Umeso/Us = ln(zm/z0l)/ln(zs/zol)

(3.1)

Where: Umeso is the mesowind speed at the blending height Us is the surface wind speed (in this case the potential wind speed) Zm is the blending height of 60 m. Zs is the surface wind measurement height (10m above the ground in accordance with the definition of potential wind speed) Z0l is the standard local roughness (in this case 0.03 m for land and coastal stations and 0.002 m for sea stations in accordance with Verkaiks definition of potential wind speed)

As illustrated in figure 1, the potential wind speed is calculated by using equation 3.1 to convert the "as measured" speeds into the higher level mesowind speeds and
Pagina 15 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

then transform these back down to surface level potential speeds. In the first step the station specific, wind direction dependent local roughness is used and in the second case the standard local roughness. In figure 1 the measuring height and the standard (or reference) height are both 10 m, the blending height is 60 m, the local roughness length is 0.5 m, and the standard roughness length is 0.03 m. The height transformations are done using the logarithmic wind speed profile (Tennekes, 1973).

Figure 1: Schematic diagram explaining the concept of potential wind speed The local roughness lengths used above, in the first step, are calculated for each meteorological observation station by regularly analysing the wind gust ratio (maximum hourly gust divided by hourly average wind speed) for 18 sectors (20 degrees wide) of wind direction (Verkaik, 2000). The wind gust ratio is a measure of local surface roughness and increases with increasing roughness because the average wind speed decreases (obviously) while the maximum gust is less affected because the flow of the wind becomes more turbulent. To make the transformation to the top of the second layer, we also need to calculate the friction velocity,

U*= Umeso /ln(zm/z0r)

(3.2)

Where is the Von Krman constant (0.4) and z0r is the regional or meso roughness length at the station location according to a 10 km resolution map based on a land use map of The Netherlands (LGN3+).

Pagina 16 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

In the second layer the laws of geostrophic resistance are used to calculate the two components of the macrowind speed at the top of the PBL:

Umacro = Umeso (u*/)[ln(fzm /u*)+A] Vmacro = Bu*/

(3.3) (3.4)

Where: Umacro is the component parallel to the surface wind Vmacro is the component perpendicular and veered with respect to the surface wind A and B are stability parameters which for neutral stability are respectively 1.9 and 4.5 (Arya, 1977) [Hz] is the Coriolis parameter, which is 1.1 x 10-4 Hz in The Netherlands These two components and the root of their squared sum (the macrowind speed, Smacro) are each interpolated using inverse distance weighting (IDW, see section 3.3) separately onto the 10 km resolution grid of the regional surface roughness map. These directly interpolated Smacro values are compared to the values calculated from the interpolated Umacro and Vmacro as a check: the differences are negligibly small. Moving down again through the upper layer, the interpolated Vmacro is used to calculate:

Umeso = (Vmacro /B x ln(zm/z0r)


Where equation (3.5) can be derived from (3.2) and (3.4).

(3.5)

These 10 km grid values are IDW interpolated onto a 2.5 km grid to facilitate the step back through the lower layer using the local roughness length to calculate the surface wind speed at 10 m above ground level:

U10m = Umeso x [ln(10/z0l) /ln (zm/z0l)]

(3.6)

This is another version of equation (3.1) but now we want to transform down to the surface (10 m above the ground) using local roughness lengths representative for each 2.5 km pixel. To estimate these local, but also the regional roughness lengths, we used the program roughn_map which produces raster maps of average surface roughness with a resolution of 100 m or more. The averaging process performed by "roughn_map" is conform Verkaik and Smits (2001) and is used to make the 2.5 and 10 km resolution roughness maps used in this study (see Appendix D). The roughness lengths are based on the land use database LGN3+ (which is on a 25 m grid, see section 2.1) but new land use types with associated roughness lengths were created for airport runways and car parks which were previously designated as built-up area's. Orographic roughness can be included in the averaging process and is based on the GTOPO30 global digital elevation model. Roughn_map (together with more relevant information) is available from the site of the HYDRA project (http://www.knmi.nl/samenw/hydra/index.html) in which Verkaik implemented the 2 layer model. One of the input parameters for this program is evaluation height, which plays a role in the averaging process. It was set at 60 m when making the map of local roughness and 250 m for the regional roughness. The evaluation height of 60 m comes from the blending height at the top of the lower layer but the choice of 250 m is less obvious. Using the same ratio between evaluation height and the pixel size
Pagina 17 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

for the regional roughness as for the local roughness gives the 250 m. However, the regional roughness is insensitive to the choice of evaluation height (Verkaik, 2006). The coordinates produced by roughn_map specified the lower left corner of the pixel so half a pixel width was added for correct interpretation by our program. The pixel roughness is averaged over all directions around the centre of the pixel which means that for all but the first step the wind direction is not accounted for in the method. This is an unavoidable consequence of the choice of normals as the input for our method because normals of wind speed no longer contain information about the wind direction. In chapter 4 the results of six variations of the method described above are presented. The first three vary only in the interpolation method used at the macrolevel. The fourth has additional orographic roughness. The fifth has the most limited set of input stations that was tried: only stations with homogenous surface roughness up to 3 km from the station (including obviously the two sea stations). The sixth and final variation is a sensitivity analysis for station location and uses a different set of station locations (WMO from Table 1) compared to the first five methods. In the 2 layer model stability is assumed to be neutral. This may seem to be a severe limitation of the applicability of the model. However, the error caused by assuming neutral stability when going up through the two layers is counterbalanced by the error introduced on the way down (De Rooy and Kok, 2002). For this reason the model can be used for the interpolation of wind speed measurements when, as is often the case, data on the local stability is unavailable.

3.2 Validation At macrolevel several variations of the method described in section 3.1 are validated in two ways. Firstly, a leave one out cross validation (LOOCV) of the interpolated macrowind speed was performed and the root mean square error (RMSE) recorded. Secondly the various methods were compared to long-term average model wind speeds at 2 km above ground level. This height is, for the Dutch situation, above the PBL and is suitable for comparison with macrowind speeds because the speeds above the PBL increase only slowly with height. The model in question is the ECMWF numerical weather prediction model with a horizontal resolution of 60 km near The Netherlands. The model winds are analyses (as opposed to forecasts) based on measured meteorological parameters (such as wind speed and direction, temperature and humidity) from the 20 year period 1989-2008 (Berrisford,2009) and as such are appropriate for validation because the wind at this height is rarely measured directly. Where possible model pixels were chosen for the validation where 2, and in one case 3, input measurement stations were present. The average of the interpolated macrowind speed above these stations was then compared to the model speed. In order to have comparisons in area's covering most of the map the macrowind above a single station was sometimes compared to one or more model values depending on where the station was situated in relation to the model pixels. The average of 2 ECMWF model pixels was used if the station was located between the two or the average of 4 pixels if the station lay at the intersection of the 4 pixels. At the surface level the difference between the calculated surface wind speed at a station location and the "as measured" wind speed there was calculated. All but one of the normals of the "as measured" wind speed that were available were used in the validation. This set of stations is a subset of those providing normals of the
Pagina 18 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

potential wind speed because in the past there were problems that affected the calculation of the "as measured" normals but not of the potential wind normals. The validation stations were divided into 4 groups based on a visual inspection of a 500 m resolution version of the LGN3+ roughness map because surface roughness was considered to have a strong influence on the results. The group of "open" stations has homogenous surroundings within a radius of 3 km and the "sheltered" group does not. With a 5 km radius only 2 open stations were found. The group of coastal stations share a special form of surface roughness inhomogeneity. The fourth and last group of border stations is described near the end of section 2.2. The 10 km pixels of regional roughness associated with these stations extend over the border into Germany where LGN3+ provides no surface roughness information.

3.3 Inverse Distance Weighted Interpolation We investigated how Inverse Distance Weighted Interpolation (IDW) could best be used for interpolating the wind speed normals. During the investigation the input data set changed twice, the second due to the 1981-2010 normals becoming available. IDW gives more stable results than most other interpolation methods when the input dataset undergoes changes, so we chose to try IDW first. Other interpolation methods such as splines, ordinary kriging and kriging with external drift (KED or universal kriging), were not explored in this study. Splines was not considered appropriate because the interpolated values can be lower or higher than the input wind speeds and these extreme values are not based on a scientifically proven relationship. Due to external constraints the potential benefits of using kriging or KED (see section 5) were not explored. In R we used the IDW function of the GSTAT package (Pebesma, 2004). Variables that can be adjusted are the inverse distance weighting power (power function IDP), the block size (the size of the block over which values are smoothed) and the distance over which an input value can exert influence (MAXDIST). As IDP is a more sophisticated smoothing parameter, we decided to set the blocksize to zero (no smoothing). Using a very low power for IDP such as 0.5 means that the influence of the station value decreases so slowly with distance from the station that the interpolated output pixel values are almost the average of the input values while a large value of 8 barely alters the input values because the influence of the one input location does not reach the other. In this situation IDW is equivalent to Nearest Neighbour interpolation. We tried 5 different IPD values (0.5, 1, 2, 4 and 8) for the interpolation of the macrowind speed. MAXDIST was set at 150 km because this was the shortest distance with which every pixel on the map was given an interpolated value.

Pagina 19 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Results

Table 2a/b summarises the results of a selection of the interpolation methods we tested and gives a good impression of the effect of changing the variables we explored. Our results were validated at the macrolevel (table 2a) and the surface or 10m level (table 2b). The validation results per station can be found in appendix B. The last row in table 2b is a measure of how well the method reproduces the as measured wind speed difference between the coast and inland areas. The group of open stations (without the two sea stations in this case) represents the inland area well. Methods 2-6 are variations of the best method (method 1) where only the parameter mentioned in the column title was changed to illustrate its effect on the verification results.

Table 2a: Overview of the validation results at the top of the PBL (macrowind level) for 6 methods showing the effect of varying the amount of averaging (IDP) of the IDW interpolation (1-3), of introducing additional roughness due to orography (4), of selecting input stations based on the homogeneity of the local surface roughness (5) and of station relocations (6).

Pagina 20 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Table 2b: Overview of the validation results at the surface (10 m above the ground) for 6 methods showing the effect of varying the amount of averaging (IDP) of the IDW interpolation (1-3), of introducing additional roughness due to orography (4), of selecting input stations based on the homogeneity of the local surface roughness (5) and of station relocations (6). Methods 2-5 all have worst results which leaves only method 1 and 6 to choose from. Both methods do well on macro and surface level. Method 1 was chosen because the station coordinates used in the official climate database (method 1) are a better representation of the station locations for the period between 1981-2010 than the set including recent relocations which was compiled in 2010 by the INFRAWIS department of KNMI for the WMO (method 6). Furthermore the bias found for the open stations should give the clearest measure of how long the set of station locations matched with the true locations and method 1 has the lower bias. The map of the surface wind speed resulting from method 1 is shown in figure 2: the lowest wind speeds are in extensive forested and built-up areas and as one would expect, the highest on the coast. Method 1 was also used to produce maps of the 12 monthly normals which are presented in appendix A. Table 2b shows that for validation stations in open terrain and with few obstructions ("open" stations) the accuracy is better than 5%. Locations with large changes in surface roughness within 3 km (sheltered stations) have an accuracy better than 10%. Very near the coast and the Dutch border the accuracy is worse but still better than 20%. The accuracy of the maps of the monthly normals is very similar. The only validation stations not used as input stations are the 3 border stations so the above mentioned results may be better than for locations distant from input stations. Comparing the LOOCV error of Vmacro (0.63 m/s or 13%) to the average of the surface wind speed absolute bias over all the validation stations (10%) gives an upper limit to this underestimation of the surface error which is 30% higher than the values in table 2b. This results in a summary slightly different from the one given a few sentences ago, with instead of "better than x %", "about x %" being more appropriate. The 30% is an upper limit because errors made in the upward transformation are largely compensated in the downward transformation of the wind speeds.

Pagina 21 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Figure 2: The 2.5 km resolution map of the 1981-2010 yearly normal of surface wind speed at 10m above ground level made using the best method (method 1). Figures 3-8 show the Smacro wind speeds generated by methods 1-6 with the input station locations shown as blue crosses and figure 9 is the model wind speed map that we compared them to. These model winds are analyses (as opposed to forecasts) based on measured meteorological parameters from the 20 year period 1989-2008.

Pagina 22 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Pagina 23 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Figure 9: 20 year average wind speed at a height of 2 km from reanalyses of the ECMWF numerical weather prediction model (m/s) Notice how the strong spatial averaging with IDP = 0.5 provides a much smoother wind field in figure 4 (method 2). This makes figure 4 look the most like the model version in figure 9. Also, the range of the scale is smaller than for the other methods, which also makes it more like figure 9. Figure 5 contrasts nicely with its very blotchy appearance. The blotches represent the station values in the middle of the blotch because the high IDP concentrates the influence of the station value in the area immediately surrounding the station while other stations have very little influence on this area. What makes method 2 the best at the top of the PBL, makes it one of the worst at the bottom: the strong averaging effect of the low IDP value. High pixel values, as seen near some stations in figure 5, at the macrowind level are pulled down towards the average value (figure 4) and low values are pulled up. The contrast between figure 4 and 5 illustrates this. Consequently, surface wind speeds are respectively too low and too high compared to the as measured station values.

Pagina 24 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Comparing figure 6 (method 4) to figure 3 (method 1) one notices the influence of the hills near stations Maastricht (the station in the far southeast), De Bilt and Soesterberg (the two stations closest to each other in the middle of the country) and Deelen to the east of these two. It is mostly the very high value of Maastricht that makes this map compare so badly to the model results in figure 9. Notice also how the scale of figure 6 has higher values than the other maps because with the added roughness, the decrease in the wind speed from the top of the PBL to the surface has increased and because the input surface wind speed is unaltered, Smacro must increase. Figure 7 (method 5) is different from the others because, as a result of reducing the number of input stations used for interpolation, the low wind speeds normally associated with the inland area are seen in the coastal area too. Method 5 is the end result of many attempts to improve the validation results by progressively removing stations with inhomogeneous surroundings. Unfortunately we are then left with station locations at sea and in rural inland areas that generally have a relatively low surface roughness. The low surface roughness and relatively low potential wind speed of these open inland stations produces a relatively low Vmacro (equations 3.2 and 3.4) which the interpolation spreads out to the coast. Also, the sheltered stations, which are mostly nearer the coast with relatively high potential wind speeds, are left out. With surface roughness and potential wind too low, interpolated surface wind speeds are underestimated in coastal areas . So, the heterogeneous roughness surrounding the sheltered stations might not be ideal, but the higher potential wind speeds in the coastal areas and the higher roughness lengths of the stations in the western industrialised coastal area have to be included to give a realistic picture of the spatial variation of the wind speed. A sensitivity analysis for station location is shown in figure 8 (method 6). In the course of the 30 years considered here meteorological observation stations are sometimes moved. Comparing the station locations used in method 1 and method 6, we see that of the 27 input stations, 19 were moved more than 100 m, 5 more than 1 km and 2 between 2 and 3 km: the last mentioned being Schiphol (just southwest of the large IJssel Lake in the middle of the country) and Eindhoven (the first station north of Maastricht in the southeast of the country). It is near these two stations that the differences between figures 8 and 3 are most noticeable. Looking at the validation of the surface wind (see appendix B) the differences are almost zero for all but four stations: Cabauw (southwest of the De Bilt/Soesterberg cluster), the only open station, and 3 sheltered stations: Schiphol, Eindhoven and Valkenburg (southwest of Schiphol). Valkenburg was moved by 1 km but Cabauw by less than 200m. The change for Schiphol was by far the greatest at 10% of the as measured wind speed and the average of the four was 4%.

Pagina 25 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Discussion

So far, we have only performed a LOOCV of the interpolated Vmacro against the station values, but this should also be done for the calculated surface wind speeds against the "as measured" speeds. Because we mostly validate at input station locations, we get a poor performance for methods where interpolated pixel values at a station location are altered with reference to the station point values (like in method 2 where the macrowind field is strongly averaged). Methods with large departures from station values might however still be overall better if they do well in area's between station locations. This may be the case for method 2 which performs poorly at the surface, but compares very favourably with the ECMWF model wind speeds 2 km above the ground. Using the proposed leave one out statistic would allow us to see how good the pixel values are between input stations. The first time the 2 layer model was used to create a map of the annual surface wind speed in The Netherlands (Wieringa, 1986), the average accuracy was about 0.25 m/s which is about 5%. This result was achieved with 31 validation stations of which 16 had been used to provide the input wind speed data for the interpolation. This error of 5% lies between the average error of open and sheltered stations found for method 1 (see table 1) which implies that if the proposed leave one out validation is worse, it is unlikely to be a lot worse. An upper limit for the error can be found by comparing the LOOCV percentage error of Vmacro to the average percentage error of the calculated surface wind speed for all validation stations. The LOOCV error is 30% higher so by increasing the surface error by 30% an upper limit to the error can be found. For example, a surface error of 4% would then at most increase to 5.6%. Increasing the error by 30% almost certainly is too much because we know that errors made transforming the wind upwards are compensated when transforming back down again and here we miss that compensation. The comparison of the macrowind speed with the ECMWF model analysis could be improved by averaging all the 10 km macrowind pixels in each 60 km model pixel before comparing the two. Not doing this has the advantage of concentrating on the macrowind speed values closest to the input station locations, but then one compares 10 km resolution values with 60 km values. Another difference with respect to the model wind is that Smacro is calculated assuming neutral stability while the ECMWF model takes varying stability into account. In a stable atmosphere there is less mixing between the levels so the difference in wind speed between the macro and surface levels is greater than in a neutral atmosphere. Consequently, the macrowind speed calculated would be too small in stable situations and too big in unstable. These two errors tend to cancel each other out when dealing with long-term averages as we do here but one or the other is still likely to dominate. Another difference between the two wind speeds is their reference height: in the 2 layer model the height of the PBL varies with the friction velocity (h = u*/{eA}) which means that our values of Smacro are not all at the same height and the maximum height is about 1.4 km, far short of 2 km. This should not make the comparison meaningless however, because in theory the wind speed increases gradually and slowly with height above the PBL. The fact that the macrowind level is lower than model height of 2 km does make the Smacro values from table 1 for K13, West and SW suspect because they are equal to or higher than the model values. We expect the macrowind to gradually increase
Pagina 26 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

from southeast to northwest. However, most methods give local maxima in coastal areas (figure 3, 5, 6 and 8). The local maxima are in part caused by using the same roughness irrespective of the wind direction. Along the west coast the wind mostly blows from sea to land and experiences a very low roughness, but the LGN3+ roughnesses used in this study are areal averages so the coastal pixels will in general have higher roughnesses due to the land in the pixel area. Since the roughness is too high, the macrowind speed is too (equations 3.2 and 3.4). A good illustration of this can be seen by comparing figures 10 and 11 where in figure 10 (method 3, but all methods with coastal stations exhibit this problem) the western coastal stations cause unrealistically high surface winds above open water, whereas figure 11 (method 5), with only the open stations (including the sea stations), does not (note that the darker colours in figure 10 represent higher speeds than in figure 11). This is due to the higher Smacro on the west coast which the interpolation extends to areas further off-shore. Transforming down to the surface with the low roughness length of water gives even higher surface wind speeds.

The coastal problem described above can be used to improve the surface wind validation results, because it hints at a way around this problem: regional interpolations. Wieringa (1986) used regional interpolations with some success but in this study we decided against this line of research because we considered it more important to show what could be achieved by applying the 2 layer model objectively. Choosing the regions introduces an element of subjectivity. If regional interpolations were to be explored, the map could be split into 3 regions: the Frisian Isles in the north plus a narrow strip along the west coast and along the eastern shore of the IJssel Lake; the western coastal regions excluding this narrow strip; the inland area up to and including the north coast and all the water area's. The input station wind speeds for the 3 regional interpolations would respectively come from the following 3 area's: the western coastal regions excluding the narrow strip; the entire area including the sea; the sea and the "open" stations of the inland area. Where exactly the regional borders should be is a question of trial and error, especially near the IJssel Lake and in the northern coastal area. Another potential improvement might be to replace the IDW interpolation with kriging with external drift. We suspect that using the regional roughness as external
Pagina 27 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

drift would help to keep the high values of Vmacro above the rougher terrain where they belong. Unless we use IDW with very low values of IDP (very strong averaging of the station values), this method produces problems near stations with surface roughnesses that vary significantly around the station (e.g. the unrealistically high speeds at sea along the west coast in figure 10). Also, when we applied method 4, we saw a similar effect near stations in areas with high orographic variability: unrealistically high surface wind speeds over smoother and lower lying terrain near hills (e.g. Maastricht). The most adequate IDW (with moderate averaging) used in the best method (1) tempers the former problem and avoids the latter. Fitting a plane surface through the Smacro values, as Wieringa (1986) did, would force the interpolation into a pattern very similar to that of the ECMWF model wind speeds and possibly produce more accurate surface wind speeds.

Better results will probably be obtained by interpolating the hourly wind speeds and then calculating the normals for each pixel instead of interpolating the station normals. This method allows the possibility of using roughness lengths from a series of land use maps for successive periods (not only LGN3+, but also LGN4, 5 and 6) and also land use map roughness lengths that vary with the wind direction, and therefore better reflect the roughness experienced by the wind at the time of measurement. It would then also be possible to use the station locations appropriate for any given sub-period (between successive station relocations) instead of a single set of locations for the whole period as in this study.

Pagina 28 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Conclusions

The interpolated map of annual surface wind speed produced using normals of potential wind speed, the two layer model of the PBL and a high resolution surface roughness map provides wind speeds with accuracies as follows. For validation stations in open terrain and with few obstructions ("open" stations) the accuracy was about 5%. Locations with large changes in surface roughness within 3 km (sheltered stations) have an accuracy of about 10%. Very near the coast and the Dutch border the accuracy is worse and is about 20%. The accuracy of the maps of the monthly normals is very similar. The sensitivity analysis for station location (method 6) showed that, for most stations, relocations had no effect on the calculated surface wind speeds. Very locally however, the most extreme change was 10% of the as measured surface wind speed, which is about the same as the "best method" (method 1) average error for sheltered stations. The IDW interpolation method with power factor (IDP) 2 gave the best results. A lower IDP gave too much smoothing, which caused large adjustments of the pixel values of Vmacro at the station locations with respect to the input point values, which in turn produced errors in the surface wind speeds validated at the station locations. A higher IDP gave better surface wind validation results but worsened the comparison of the macrowind speed and the ECMWF numerical weather prediction model wind speeds at 2 km above ground level.

Pagina 29 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Acknowledgements

We are grateful for the help Professor Jon Wieringa gave us (Wieringa, 2011). He originally developed the two layer model of the planetary boundary layer that we use in our method. Thanks also have to go to Job Verkaik who developed this model further and implemented it to produce the time series of potential wind speed that form the starting point of our method. We also had help from some colleagues from our department KS-KA: Rudmer Jilderda provided us with the normals we needed and Geert Groen maintained the time series of potential wind speed and guided us to the wind theory material essential for this project. Paul Hiemstra, Maarten Plieger en Raymond Sluiter helped us with interpolating using the statistical programming language R. Thanks. De Bilt, June 2011 Andrew Stepek and Ine Wijnant

Pagina 30 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

References

Agterberg R, Wieringa J (1989) Mesoscale terrain roughness mapping of The Netherlands. KNMI-TR-115 Arya SPS (1977) Suggested revisions to certain boundary layer parameterisation schemes used in atmospheric circulation models. Mon. Wea. Rev. 105, pp 215227 Benschop H (1996) Windsnelheidsmetingen op zeestations en kuststations: herleiding waarden windsnelheid naar 10-meter niveau. KNMI Technische Rapport TR-188, pp 3. (in Dutch) Berrisford P, Dee D, Fielding K, Fuentes M, P. Kllberg PW, Kobayashi S, Uppala SM (2009) The ERA-Interim archive. Eur. Cent. for Medium Range Weather Forecasts, Reading, U. K. Businger JA, Yaglom AM (1971) Introduction to Obukhovs paper Turbulence in an atmosphere with a non-uniform temperature. Bound.-Layer Meteor. 2, pp 3 6. De Rooy WC, Kok K (2004) A combined physical/statistical approach for the downscaling of model wind speed. Weather and Forecasting 19. pp 485-495 Gurtz J, Baltensweiler A., Lang H (1999) Spatially distributed hydrotope-based modelling of evapotranspiration and runoff in mountainous basins. Hydrological Processes 13 (17), pp 2751-2768 Jeffrey S, Carter J, Moodie K, Beswick A (2001) Using spatial interpolation to construct a comprehensive archive of australian climate data. Environmental Modelling and Software 16 (4), pp 309-330 McVicar T, Van Niel T, Li L, Hutchinson M, Mu X, Liu Z (2007) Spatially distributing monthly reference evapotranspiration and pan evaporation considering topographic influences. Journal of Hydrology 338 (3-4), pp 196-220 Menzel L (1999) Flachenhafte modellierung der evapotranspiration met TRAIN. PIK-report 54, Potsdam-Institut fur Klimafolgenforschung e.V, Potsdam. (in German) Ni G, Li X, Cong Z., Sun F, Liu Y (2006) Temporal and spatial characteristics of reference evapotranspiration in China. Nongye Gongcheng Xuebao/Transactions of the Chinese Society of Agricultural Engineering 22 (5), pp 1-4 Obukhov AM (1971) Turbulence in an atmosphere with a non-uniform temperature. Bound.-Layer Meteor. 2, 729 Pebesma EJ, 2004 Multivariable geostatistics in S: the gstat package. Computers & Geosciences 30: 683-691. Tennekes H (1972) The logarithmic wind profile. Journal of Atmospheric Sciences, 30 pp 234-238 Verkaik JW (2000) Windmodellering in het KNMI-HYDRA project opties en knelpunten (in Dutch) Verkaik JW (2000) Evaluation of two gustiness models for exposure correction calculations. Journal of Applied Meteorology 39(9), pp 1613-1626. Verkaik JW (2001) A method for the geographical interpolation of wind speed over heterogeneous terrain. KNMI-HYDRA project phase report 11 and 12 Verkaik JW and Smits A (2001) Interpretation and estimation of the local wind climate. 3rd European & African Conference on Wind Engineering 2-6 july 2001, TU Eindhoven Verkaik JW (2006) On wind and roughness over land. Ph.D. thesis, University of Wageningen.
Pagina 31 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Wieringa J (1986) Roughness-dependent geographical interpolation of surface wind speed averages. Quart. J. R. Met. Soc., 112 pp 867889 Wieringa J (1998) Representativity problems of wind stations. EU_COST seminar on data spatial distribution in meteorology and climatology, Volterra, Italy, 1997. Office for the official publications of the European Communities. EUR-18472 EN, pp 29-43 Wieringa J (2011) Nieuwe atlaskaart van wind in Nederland. KNMI IR 2011-02 (in Dutch) Wever N and Groen G (2009) Improving potential wind for extreme wind statistics. KNMI WR2009-02, chapter 3

Pagina 32 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Appendices

A. The 12 maps of the monthly normals of surface wind speed

Pagina 33 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Pagina 34 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

B. Annual normal surface wind speed (m/s) validation per station for methods 1-6

Pagina 35 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Pagina 36 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Pagina 37 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Pagina 38 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Pagina 39 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Pagina 40 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

C. Maps of interpolated Vmacro (m/s) for methods 1-6

Pagina 41 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

D. Maps of local and regional surface roughness (metres)1-6

Pagina 42 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

E. Map of maximum macrowind speed (m/s) at station Rotterdam Geulhaven

Pagina 43 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

E. Abstract of Prof. Wieringas wind map report

(April 2011)

Early in 2011 the KNMI got in touch with professor Jon Wieringa regarding the basics of research on wind and of methods to analyse it which had been developed by him and by Job Verkaik. Having consulted the scientists making the present wind map, prof. Wieringa reported to the KNMI management his counsel, from which can be quoted : The present wind map is founded on wind observations made at so-called synoptical stations of the weather service. For such observations the World Meteorological Organisation (WMO) requires since 1950 that measurements of wind for synoptic purposes should refer to a height of 10 m in an unobstructed area. By means of such normalization it becomes very feasible to compare station observations in a region and to use them for weather forecasts, climatology, and requests for wind information. Unfortunately, it is seldom that a wind mast location is available which is unobstructed in all directions, i.e. without vegetative or built obstacles within a distance of a dozen obstacle heights. An objective and operationally applicable method to correct wind observations for errors due to disturbing surroundings was first developed by Wieringa (1976). This was based upon characterization of the surrounding terrain by an azimuth-dependent roughness length parameter, which could be determined from station gustiness data. From the local roughness length and the observation height an exposure correction factor can be determined. A measured wind speed should be multiplied with this factor in order to know which wind speed would have been measured at the station location if the surroundings had been unobstructed. A wind observation which has been modified with such a factor is called potential wind and complies with the WMO requirement. Verkaik updated in 2001 for Dutch stations the descriptions of their surroundings and their exposure corrections, and then re-analyzed the roughness of the Dutch landscape with use of satellite observations. Verkaiks work has been continued by Wever and Groen (2009). The actual wind map is founded on Verkaiks potential wind data series. These have been analyzed by Stepek and Wijnant by means of the two-layer model of Wieringa (1986) in a new version by Verkaik (2006). For wind interpolation at macroscale at the top of the atmospheric boundary layer an Inverse Distance Weighting method has been used. From verifications by Verkaik (2006) it appears that a map thus constructed has an average modelled error in local wind speeds which is less than 0.5 m/s. This is acceptable for an atlas, in which this wind map is presented in classes of 0.5 m/s width. It also makes sense that the pixels of the produced map are not too small, because potential wind is applicable over distances of 2 to 3 km.

Pagina 44 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

G. R script

library(rgdal) setwd("\\\\bens01/home$/stepek/My Documents/R/Voorbeeldcode_Paul") source("eigenfuncties.r") load("\\\\bens01/home$/stepek/My Documents/R/Voorbeeldcode_Paul/nl_simple.rda") nl_grens = list("sp.polygons", nl_simple, first=FALSE) stationwind = read.table("pot_wind_norm_2010_definitief_27stations_zonderArcenGeulhavenNBee rtaHupsel_locaties_KIS.csv", header = TRUE, sep = ";") coordinates(stationwind) = ~x+y proj4string(stationwind) = "+init=epsg:28992" nl_points = list("sp.points", stationwind) stationwind$umeso = upot2umeso(stationwind$upot, stationwind$categorie) spplot(stationwind, c("upot"), sp.layout = list(nl_grens), main= "Pot. wind normalen 1981-2010") locatie_10kmruwheidskaart = "\\\\bens01/home$/stepek/My Documents/Klimaatatlas/Bouwstenen/Landgebruik/HYDRA LGN3+ Roughness Map programma/ruwheid_10x10km_hoogte_250.asc" ruwheid10km.grid = read.table(locatie_10kmruwheidskaart, skip = 2, header = TRUE) names(ruwheid10km.grid) = c("x","y","z0_10km") ruwheid10km.grid$x = ruwheid10km.grid$x + 5000 ruwheid10km.grid$y = ruwheid10km.grid$y + 5000 macro_interp = data.frame(x = ruwheid10km.grid$x, y = ruwheid10km.grid$y, z0_10km = ruwheid10km.grid$z0_10km) gridded(ruwheid10km.grid) = ~x+y macro_interp$z0_10km_kustgras = ifelse(macro_interp$z0_10km > 0.0012 & macro_interp$z0_10km < 0.029, 0.03, macro_interp$z0_10km) macro_interp$diff = macro_interp$z0_10km_kustgras - macro_interp$z0_10km macro_interp$diff_land = ifelse(macro_interp$diff < 0.0001, NA, macro_interp$diff) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 175000 & macro_interp$y == 305000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 175000 & macro_interp$y == 325000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 175000 & macro_interp$y == 335000, 0.6, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 185000 & macro_interp$y == 305000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 195000 & macro_interp$y == 305000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 205000 & macro_interp$y == 325000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 205000 & macro_interp$y == 345000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 205000 & macro_interp$y == 355000, 0.5, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 85000 & macro_interp$y == 375000, 0.3, macro_interp$z0_10km_kustgras)
Pagina 45 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 95000 & macro_interp$y == 385000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 105000 & macro_interp$y == 385000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 115000 & macro_interp$y == 385000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 135000 & macro_interp$y == 385000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 135000 & macro_interp$y == 375000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 145000 & macro_interp$y == 365000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 155000 & macro_interp$y == 365000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 165000 & macro_interp$y == 365000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 175000 & macro_interp$y == 355000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 15000 & macro_interp$y == 365000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 15000 & macro_interp$y == 375000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 25000 & macro_interp$y == 365000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 35000 & macro_interp$y == 365000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 45000 & macro_interp$y == 355000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 55000 & macro_interp$y == 355000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 65000 & macro_interp$y == 365000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 75000 & macro_interp$y == 375000, 0.15, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 195000 & macro_interp$y == 415000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 195000 & macro_interp$y == 425000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 205000 & macro_interp$y == 365000, 0.5, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 205000 & macro_interp$y == 395000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 205000 & macro_interp$y == 405000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 205000 & macro_interp$y == 435000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 215000 & macro_interp$y == 375000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 215000 & macro_interp$y == 385000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 215000 & macro_interp$y == 395000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 215000 & macro_interp$y == 435000, 0.4, macro_interp$z0_10km_kustgras)
Pagina 46 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 225000 & macro_interp$y == 425000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 225000 & macro_interp$y == 435000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 235000 & macro_interp$y == 435000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 245000 & macro_interp$y == 435000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 245000 & macro_interp$y == 455000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 245000 & macro_interp$y == 495000, 0.15, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 245000 & macro_interp$y == 505000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 245000 & macro_interp$y == 515000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 255000 & macro_interp$y == 445000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 255000 & macro_interp$y == 465000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 255000 & macro_interp$y == 495000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 255000 & macro_interp$y == 515000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 265000 & macro_interp$y == 475000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 265000 & macro_interp$y == 485000, 0.5, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 265000 & macro_interp$y == 495000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 265000 & macro_interp$y == 515000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 265000 & macro_interp$y == 525000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 265000 & macro_interp$y == 535000, 0.4, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 275000 & macro_interp$y == 545000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 275000 & macro_interp$y == 555000, 0.3, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 275000 & macro_interp$y == 565000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 275000 & macro_interp$y == 575000, 0.2, macro_interp$z0_10km_kustgras) macro_interp$z0_10km_kustgras = ifelse(macro_interp$x == 275000 & macro_interp$y == 585000, 0.2, macro_interp$z0_10km_kustgras) gridded(macro_interp) = ~x+y windows() spplot(macro_interp, c("z0_10km_kustgras"), sp.layout = list(nl_grens, nl_points), main = "z0_10km with values between sea and grass made equal to grass")

Pagina 47 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

stationwind$z0_10km_kustgras = macro_interp$z0_10km_kustgras[overlay(macro_interp, stationwind)] stationwind$ustar_10km = (0.4 * stationwind$umeso) / log (60/stationwind$z0_10km_kustgras) stationwind$umacro = umeso2umacro(stationwind$umeso, stationwind$ustar_10km) stationwind$vmacro = umeso2vmacro(stationwind$ustar_10km) stationwind$smacro = umeso2smacro(stationwind$umacro, stationwind$vmacro) windows() spplot (stationwind, c("vmacro"), sp.layout = list(nl_grens)) library(gstat) proj4string(ruwheid10km.grid) = proj4string(stationwind) smacro_interp = idw (smacro~1, stationwind, ruwheid10km.grid, maxdist=150000, na.action=na.pass, IDP = 2) windows() spplot (smacro_interp, c("var1.pred"), sp.layout = list(nl_grens, nl_points), main = "smacro") umacro_interp = idw (umacro~1, stationwind, ruwheid10km.grid, maxdist=150000, na.action=na.pass, IDP = 2) vmacro_interp = idw (vmacro~1, stationwind, ruwheid10km.grid, maxdist=150000, na.action=na.pass, IDP = 2) windows() spplot (vmacro_interp, c("var1.pred"), sp.layout = list(nl_grens, nl_points), main = "vmacro") macro_interp$s = smacro_interp$var1.pred macro_interp$u = umacro_interp$var1.pred macro_interp$v = vmacro_interp$var1.pred macro_interp$s_uit_uv = sqrt(macro_interp$u * macro_interp$u + macro_interp$v * macro_interp$v) macro_interp$sbias = sqrt((macro_interp$s - macro_interp$s_uit_uv)^2) idw = idw (vmacro~1, stationwind, ruwheid10km.grid, maxdist=150000, na.action=na.pass, idp = 2) slot(slot(idw, "grid"), "cellsize") <- rep(mean(slot(slot(idw, "grid"), "cellsize")), 2) predicted= idw$var1.pred[overlay (idw,stationwind)] stationwind$predicted = predicted stationwind$difference = (stationwind$predicted - stationwind$vmacro) # if predicted>vamcro difference is positive idw.difmin = min (stationwind$difference,na.rm=TRUE) idw.difmax = max (stationwind$difference,na.rm=TRUE) idw.difmean = mean (stationwind$difference,na.rm=TRUE) idw.difsd = sd (stationwind$difference,na.rm=TRUE) output <- data.frame(idw.difmin,idw.difmax,idw.difmean,idw.difsd) asdar.idw.cv <- function(input, index) { model <- input[-index,] valid <- input[index,] valid.pr <- idw (vmacro~1, model, valid, maxdist=150000, na.action=na.pass, idp = 2) valid.pr$var1.pred }

Pagina 48 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

for(stationIndex in 1:dim(stationwind)[1]) {print (paste("Station: ", stationIndex)) prediction <- asdar.idw.cv(input=stationwind, index=stationIndex) observation <- stationwind$vmacro[stationIndex] stationwind$prediction[stationIndex] <- prediction stationwind$observation[stationIndex] <- observation} stationwind$residue <- stationwind$prediction - stationwind$observation naIndexes <- !is.na(stationwind$residue) residues <- stationwind$residue[naIndexes] prediction <- stationwind$prediction[naIndexes] observation <- stationwind$observation[naIndexes] resid.mean <- observation - mean(observation) idw.r2 <- 1 - sum(residues^2) / sum(resid.mean^2) idw.resmeanrmse <- sqrt(mean(residues^2)) idw.r2 idw.resmeanrmse stationwind macro_interp$umeso = vmacro2umeso(macro_interp$v, macro_interp$z0_10km_kustgras) summary(macro_interp) proj4string(macro_interp) = "+init=epsg:28992" stationwind$smacro_weg_omlaag = macro_interp$s[overlay(macro_interp, stationwind)] windows() spplot (stationwind, c("smacro_weg_omlaag"), sp.layout = list(nl_grens, nl_points), main = "interpolated 10 km pixel value of smacro above station") summary (stationwind) proj4string(macro_interp) = proj4string(stationwind) locatie_2500mruwheidskaart = "\\\\bens01/home$/stepek/My Documents/Klimaatatlas/Bouwstenen/Landgebruik/HYDRA LGN3+ Roughness Map programma/ruwheid_2500x2500m_hoogte_60.asc" ruwheid2500m.grid = read.table(locatie_2500mruwheidskaart, skip = 2, header = TRUE) names(ruwheid2500m.grid) = c("x","y","z0_2500m") ruwheid2500m.grid$x = ruwheid2500m.grid$x + 1250 ruwheid2500m.grid$y = ruwheid2500m.grid$y + 1250 wind_interp = data.frame (x = ruwheid2500m.grid$x, y = ruwheid2500m.grid$y, z0_2500m = ruwheid2500m.grid$z0_2500m) wind_interp$z0_2500m_kustgras = ifelse(wind_interp$z0_2500m > 0.0012 & wind_interp$z0_2500m < 0.0299, 0.03, wind_interp$z0_2500m) gridded(ruwheid2500m.grid) = ~x+y proj4string(ruwheid2500m.grid) = proj4string(macro_interp) gridded(macro_interp) = FALSE umeso_interp = idw (umeso~1, macro_interp, ruwheid2500m.grid, maxdist=7500) wind_interp$umeso = umeso_interp$var1.pred

Pagina 49 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

wind_interp$u10m_2500mgrid = umeso2u10m(wind_interp$umeso, wind_interp$z0_2500m) wind_interp$u10m_2500mgrid_kustgras = umeso2u10m(wind_interp$umeso, wind_interp$z0_2500m_kustgras) wind_interp$U10m_land_kustgras = ifelse(wind_interp$z0_2500m < 0.00121, NA, wind_interp$u10m_2500mgrid_kustgras) summary(wind_interp) gridded(wind_interp) =~x+y windows() spplot(wind_interp, c("z0_2500m_kustgras"), sp.layout = list(nl_grens, nl_points), main = "z0_2500m with values between sea and grass made equal to grass") stationwind_validation = read.table("gemeten_wind_norm_2010_definitief_25stations_zonderDeBilt.csv", header = TRUE, sep = ";") coordinates(stationwind_validation) = ~x+y stationwind_validation$u10m_2500mgrid = wind_interp$u10m_2500mgrid_kustgras[overlay(wind_interp, stationwind_validation)] stationwind_validation$bias_2500m = stationwind_validation$u10m_2500mgrid stationwind_validation$gemeten stationwind_validation$absolute_bias_2500m = sqrt(stationwind_validation$bias_2500m^2) stationwind_validation$a_b_percent_2500m = 100 * stationwind_validation$absolute_bias_2500m / stationwind_validation$gemeten summary(stationwind_validation) library(maptools) library(colorspace) wnh_nederland = readShapePoly("WN_Netherlands.shp") colorscale = read.table("Gemiddelde windsnelheid per jaar legenda-24 RGB_35_60.txt", skip = 2, header = T) colorscale[-1] = colorscale[-1] / 255 RGBcolors = with(colorscale, RGB(R,G,B)) HEXcolors = hex(RGBcolors) windows() spplot(wind_interp, c("u10m_2500mgrid_kustgras"), sp.layout = list("sp.polygons", wnh_nederland, first = FALSE), at = colorscale$Range, col.regions = HEXcolors, cuts = length(colorscale$range), colorkey = FALSE) write.table(wind_interp, file = "wind_jaar_normaal")

Pagina 50 van 51

Interpolating wind speed normals from the sparse Dutch network to a high resolution grid using local roughness from land use maps.| 20 juni 2011

Subroutines, also known as eigenfuncties.r

upot2umeso = function(upot, cat, zee_cat = "zee", zee_ruwheid = 0.002, land_ruwheid = 0.03) { z0 = ifelse(cat == zee_cat, zee_ruwheid, land_ruwheid) return((log(60/z0) / log(10/z0)) * upot)} umeso2umacro = function(umeso, ustar_10km) {return(umeso (ustar_10km/0.4)*(log(0.00011*60/ustar_10km) + 1.9))} umeso2vmacro = function(ustar_10km) {return(ustar_10km * 11.25)} umeso2smacro = function(umacro, vmacro) {return(sqrt(umacro*umacro + vmacro*vmacro))} vmacro2umeso = function(vmacro, z0_10km) {return((vmacro/4.51)*log(60/z0_10km))} umeso2u10m = function(umeso, z0_2500m) {return(umeso *(log(10/z0_2500m)/log(60/z0_2500m)))}

Pagina 51 van 51

A complete list of all KNMI-publications (1854 present) can be found on our website www.knmi.nl/knmi-library/knmipub_en.html

The most recent reports are available as a PDF on this site.

Você também pode gostar