Use#
WindMapper may be run in one of two modes:
download a SRTM tile that corresponds to a lat/long bounding box defined by the user or;
use a user-supplied DEM
Two examples are given, one for each use case. These are available in the source tree under examples.
Download#
The example given in examples/download_DEM can be run as
wind_mapper_generic.py examples/download_DEM/param_download_DEM.py
Existing#
The example given in examples/existing_DEM can be run as
wind_mapper_generic.py examples/download_DEM/param_existing_DEM.py
Output#
Once Windmapper has run, the output folder will have a set of files:
- ref-DEM-utm.tif#
The entire domain to be run on
- tmp_X_Y.tif#
Windmapper tiles the domain to ensure a tractable solution. Each tile will be named tmp_X_Y.tif for example tmp_0_0.
- ref-DEM-utm-*.vrt#
A VRT file is an xml meta-file that is a collection of underlying rasters that make up a larger raster. These underlying rasters are in the
tmp_dir_X_Ydirectories. The number in the vrt name, e.g., 180 inref-DEM-utm_180_V.vrtis the direction the wind comes from. The U/V refer to either the U or V component speedup. And the_spd_up_Xsuffix, e.g.,_spd_up_1000, is the wind speed (\(W=sqrt(U^2+V^2)\)) with the given averaging distanced as specified in the configuration (1000 m default).
Troubleshooting#
MPI slots#
If an error about MPI slots is raised, set the MPI_nworkers configuration parameter to a smaller number. If it hasn’t been set, set it to 1 or 2 less than the slots reported in the error. On single-core machines you will need to enable oversubscription. This can be done for OpenMPI
export OMPI_MCA_rmaps_base_oversubscribe=true; windmapper.py my-config.py
or by pernamentally enabling it
echo rmaps_base_oversubscribe=true >> $HOME/.openmpi/mca-params.conf
More details can be found here mpi4py/mpi4py#441
GDAL#
If you recieve an error about GDAL _gdal_array, like:
Traceback (most recent call last):
File "/Users/runner/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/windmapper_utls/MPI_call_WN_1dir.py", line 190, in <module>
main(*sys.argv[1:])
File "/Users/runner/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/windmapper_utls/MPI_call_WN_1dir.py", line 178, in main
call_WN_1dir(WINDNINJA_DATA, gdal_prefix, user_output_dir, fic_config_WN, list_tif_2_vrt, nopt_x, nopt_y, nx,
File "/Users/runner/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/windmapper_utls/MPI_call_WN_1dir.py", line 105, in call_WN_1dir
ang = gtif.GetRasterBand(1).ReadAsArray()
File "/Users/runner/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/osgeo/gdal.py", line 5278, in ReadAsArray
from osgeo import gdal_array
File "/Users/runner/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/osgeo/gdal_array.py", line 10, in <module>
from . import _gdal_array
ImportError: cannot import name '_gdal_array' from 'osgeo' (/Users/runner/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/osgeo/__init__.py)
Then force the reinstall of gdal via
python -m pip install --no-cache-dir --force-reinstall gdal[numpy]
This error results from gdal being install after numpy.