Note
Go to the end to download the full example code.
Vertical extrapolation#
Example of using PyWAsP to perform vertical extrapolation.
Prepare TopographyMap#
First, we need to prepare the topography map. This is done by reading the elevation and roughness maps and creating a TopographyMap object.
import numpy as np
import windkit as wk
import pywasp as pw
ssl = wk.load_tutorial_data("serra_santa_luzia")
# The wind directions are relative to the grid north of the UTM 29N maps
bwc = ssl.bwc.assign_attrs(wind_dir_crs="EPSG:32629")
topo_map = pw.wasp.TopographyMap(ssl.elev, ssl.rgh)
Define output locations#
Second, we need to define the output locations. This is done by creating a dataset with the coordinates of the output locations.
output_locs = wk.spatial.create_dataset(
west_east=bwc.west_east.values,
south_north=bwc.south_north.values,
height=np.linspace(10.0, 100.0, 10),
crs="EPSG:32629",
struct="stacked_point",
)
print(output_locs)
<xarray.Dataset> Size: 177B
Dimensions: (height: 10, stacked_point: 1)
Coordinates:
* height (height) float64 80B 10.0 20.0 30.0 40.0 ... 80.0 90.0 100.0
south_north (stacked_point) float64 8B 4.621e+06
west_east (stacked_point) float64 8B 5.147e+05
crs int8 1B 0
Dimensions without coordinates: stacked_point
Data variables:
output (height, stacked_point) float64 80B 0.0 0.0 0.0 ... 0.0 0.0 0.0
Attributes:
Conventions: CF-1.8
history: 2026-10-01T12:45:43+00:00:\twindkit==0.1.0.dev1+g565f937b5\...
Calculate resource grid#
Finally, we can calculate the resource grid. This is done by calling the predict_wwc function. This function takes the output locations, the boundary conditions, and the topography map as input. The output is a weibull wind climate dataset at the output locations.
wwc = pw.wasp.predict_wwc(bwc, topo_map, output_locs)
Plot the mean wind speed#
We can plot the mean wind speed to see the result.
wwc["wspd"].plot.line(y="height")
![crs = 0, south_north = [4620969.95467126] [m], ...](../_images/sphx_glr_vertical_extrapolation_001.png)
[<matplotlib.lines.Line2D object at 0x7c8a8baea710>]
Total running time of the script: (0 minutes 4.032 seconds)