• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

MSFS MSFS Toolkit by Nool Aerosystems

I am developing KTVL, Lake Tahoe Airport. In the default scenario the area is completely flat and there are characteristic elevations there, mainly in the terminal area, which has one floor on one elevation level and the floor below on another elevation level and it is difficult to reach something viable.


  • IMG_2156.JPG
    3 MB · Views: 95


Resource contributor
I am developing KTVL, Lake Tahoe Airport. In the default scenario the area is completely flat and there are characteristic elevations there, mainly in the terminal area, which has one floor on one elevation level and the floor below on another elevation level and it is difficult to reach something viable.
Such very small and precise hills are best done manually. Place a rectangle with the in-game scenery editor and use terraforming brushes to raise terrain.

I'm extremely impressed by the speed of development, the quality of the tool and how easy it is to use. Since 0.41 came, I released one airport and one scenery on flightsim.to using mapheight from Norwegian authorities converted to MSFS rectangles using the toolkit.
Vaeroy, one of the Lofoten islands - in DEM3
Bringeland airport, a small STOL regional airport in Norwegian mountains, in DEM1 - around 14 sq km mesh
I haven't done any kind of editing after generating - no removal of excess rectangles (like rects in the sea) yet.

Next project is to create a DEM10 or DEM20 of a much larger area.

Thanks a lot!
I downloaded ENBL and noticed that the stock aerial imagery was really poor there, so I put together a small example that automatically sets up a project, produces aerial imagery tiles, color-corrects them and compiles into a MSFS package.

Available from here, requires toolkit v0.45 and ImageMagick.


I can't install the program because it asks me to install OSgeo4W. This program is already installed on my pc and I can't download it again. Solutions?
Finally, I have been waiting for this moment from the first day of the launch of MSFS2020. Thanks @Paavo for this fantastic tool.

I made my first terrain mesh for MSFS2020 and it works beautifully. I used your version msfs-toolkit-0.44 an ALOS PALSAR DEM 12.50 meter (1°x1°) source .tif file.
From the result that can be seen in the attached photos ... I would like some advice on how to work on airport flatten.
Finally I would like to suggest a possibility during the installation phase to be able to choose if the GDAL libraries (C: \ OSGeo4W64) are already present in order not to install a duplicate. However, I didn't have any problems installing.

In the first photo you can see the altitude on the simulator and the altitude of the DEM

Immagine 2021-05-08 220904.jpg

Heights Apron.

Immagine 2021-05-08 222909.jpg
Immagine 2021-05-08 223903.jpg
Immagine 2021-05-08 224826.jpg
Immagine 2021-05-08 143518.jpg
Last edited:


Resource contributor
The next update will have support for external installations of OSGeo4W. It will introduce a configuration file. If you put a path to OSGeo4W root folder there, the external copy is used instead of downloading a local copy.

To flatten aprons etc, draw a polygon, enable terraforming and set priority higher than heightmaps. Flattening altitude is taken from the first point when creating the poly, and you can later adjust the polygon further by moving it up or down using the gizmo. By combining several polygons and falloff distances, you can have different polys at different elevations, with smooth transitions between them.


Last edited:
Many, many thanks for this tool. I was able to succesfully and easily import some SRTM 1" data to patch the Panzihua (ZUZH) area that got screwed by Asobo on the latest world update (they flattened wayyyy too much that hilltop airport area):


I still need to finetune once again terraforming around runway and the shitload of ponds all around, but your tool saved the project.

Kelvin Richardson

Resource contributor
Hi @Paavo

I get an error when trying to process my tif files. I assuming this is the problem, Access window out of range .

D:\Data\fsdata\tools\developer\msfs-toolkit-0.46>msfs shpelev -imagery "C:\Imagery\DEM\AH.bil" -shp "D:\Data\fsdata\projects\spritelynzstudio-nz-dem\dem-extent\spritelynzstudio-nz-dem.shp" "D:\Data\fsdata\projects\spritelynzstudio-nz-dem\8m-nz-dem\output\terrain_updated.shp"
Personal license - for non-commercial use only https://www.nool.ee/

Traceback (most recent call last):
File "D:\Data\fsdata\tools\developer\msfs-toolkit-0.46\msfs_shpelev.py", line 112, in <module>
File "D:\Data\fsdata\tools\developer\msfs-toolkit-0.46\msfs_shpelev.py", line 74, in main
z = dem.Sample(x, y, srs)
File "D:\Data\fsdata\tools\developer\msfs-toolkit-0.46\noolaero\imagery.py", line 177, in Sample
value = self.bands.ReadAsArray(px, py, 1, 1)[0][0]
File "D:\Data\fsdata\tools\developer\msfs-toolkit-0.46\OSGeo4W\Apps\Python37\lib\site-packages\osgeo\gdal.py", line 3563, in ReadAsArray
File "D:\Data\fsdata\tools\developer\msfs-toolkit-0.46\OSGeo4W\Apps\Python37\lib\site-packages\osgeo\gdal_array.py", line 406, in BandReadAsArray
File "D:\Data\fsdata\tools\developer\msfs-toolkit-0.46\OSGeo4W\Apps\Python37\lib\site-packages\osgeo\gdal_array.py", line 244, in _RaiseException
raise RuntimeError(gdal.GetLastErrorMsg())
RuntimeError: C:\Users\K\AppData\Local\Temp\tmpbdfosw4q.vrt, band 1: Access window out of range in RasterIO(). Requested
(8192,0) of size 1x1 on raster of 8192x8192.

Kelvin Richardson

Resource contributor
I think the file I used was corrupted so I tried again on a new copy (original) and now get the following error...i'll pm you my project
Traceback (most recent call last):
File "D:\Data\fsdata\tools\developer\msfs-toolkit-0.46\msfs_shpelev.py", line 112, in <module>
File "D:\Data\fsdata\tools\developer\msfs-toolkit-0.46\msfs_shpelev.py", line 74, in main
z = dem.Sample(x, y, srs)
File "D:\Data\fsdata\tools\developer\msfs-toolkit-0.46\noolaero\imagery.py", line 159, in Sample
px = int((rx - self.gt[0]) / self.gt[1])
OverflowError: cannot convert float infinity to integer
Share some recent experience with heightmaps. I use several shape files to split one single large TIFF file. Then the final package will contain several overlap bgls. It does work and looks pretty well. I also try to define priority to negative value to see what happened. It does shows terrain, but Asobo created some hidden polygon will ruin the results. So set pirority at least “0” will be the safest way to override original data. So far the program works pretty well, just looks like under Asobo’s architecture too large detailed heightmap will cost some frame rates when slewing too fast. (10m spacing for 36000sq km area)
Thanks you @Paavo, :wave:
with the -exclude option in MSFS Toolkit version 0.47 add another piece for this great tool.

Excluded Areas​

When developing a regional terrain that covers multiple airports (without including them), you may want to cut out holes around airports to avoid conflicts with third party airport packages.

You can use -exclude option to assign a vector file with polygons that define excluded areas. All heightmap rectangles overlapping with those polygons will be skipped.

Border (red) + exclusion (yellow) = grid (green) Border (red) + exclusion (yellow) = grid (green)
I have succesfully implemented the DEM file for Turkey, but I found some problem. Some of the Tiles are not showing the heights, as you can see one is with border and the other one is missing border. What could be the problem?


  • data.PNG
    43.3 KB · Views: 59
  • noedge.jpg
    1.1 MB · Views: 56
  • edge.jpg
    1.2 MB · Views: 55


Resource contributor
Run the process again with v0.48 and use -fillnodata 0:

If anything is still missing, ZIP and PM me the project (without the EU-DEM tif file, I already have it).
0.48 is not working it gives error while this error does not appear in 0.47:

msfs elev -imagery "C:\Projects\LTBJ\Source\height.tif" -border "C:\Projects\LTBJ\Source\border.shp" -airport "C:\Projects\LTBJ\PackageSources\scene\LTBJ.xml" -res 24.50 "C:\Projects\LTBJ\PackageSources\scene\LTBJ.xml"



Resource contributor
Fixed. A config file was missing. Redownload the release.
Last edited:


Resource contributor
Version 0.49 is now out:

It fixes many smaller issues. Grids (green) are now optimized to follow border shapes (yellow) more closely and excluded areas (red) will remain completely as they were before, untouched by elevation modifications.


Runway deformations still need some work. They were initially designed for high resolution sources like 1m LIDAR products, but since people seem to be using them with medium resolution sources too (30m+), it needs a proper interpolation algorithm, so that's on the TODO list for the next week.
Last edited: