Sloped runway

This tutorial guides you through creating height maps for Viljandi airfield (EEVI) in Viljandi, Estonia.

It is a small club airfield with a 800 m grass runway, one end at an elevation of 76 meters (250 ft) and the other at 68 meters (223 ft). Its slope is particularly pronounced near the lower end.

A view from the west
A view from the west

Stock terrain is very bland at this location and our goal is to update it with high-resolution data to get a sloped runway and realistic surroundings. Terrain features are not overly dramatic at this location, but the airfield will still noticeably benefit from these changes.

Tutorial contents:

Fully assembled project folder with all files mentioned in this tutorial can be found inside eevi-imagery example, which you can download from Examples.

1. Create project

First, let’s create a project folder.

Open a command window and type:

msfs project -name noolaero-airport-eevi-viljandi -id EEVI -title "EEVI Viljandi airfield" -creator "Nool Aerosystems" -type scenery -scene "C:\Dev\EEVI"

This initializes a scenery project at “C:\Dev\EEVI” and adds scene component to hold airport information.

2. Add elevation data

Open “C:\Dev\EEVI” folder and create Source folder. Place your elevation data there.
For EEVI, we have a GeoTIFF elevation tile 53684.tif from land survey authorities.

Project folder
Project folder

Now you need to draw a border for the area you want to cover with new elevation data.
Open the imagery in mapping program like QGIS, draw a polygon and save it into “C:\Dev\EEVI\Source\border.shp”.

Elevation tile in QGIS. Red is border polygon. Blue denotes runway.
Elevation tile in QGIS. Red is border polygon. Blue denotes runway.

Border polygon’s shape does not matter, but it has to be fully within elevation imagery.

3. Load the project

Start Microsoft Flight Simulator. Enable Developer mode in Settings and load yourself to EEVI airfield.

Then open “C:\Dev\EEVI\noolaero-airport-eevi-viljandi.xml” from DevMode menu to open the previously created project.
Select scene component and finally click on Load in Editor.

Opening the project
Selecting the scene component
Loading the component

You can now edit the airfield with Scenery Editor.

4. Add runway

Using Scenery Editor, place the runway. Don’t forget to add runway starts.

Placing the runway

Click Save Scenery once finished. This saves changes to “C:\Dev\EEVI\PackageSources\scene\EEVI.xml” file.

5. Add elevation data

Now it’s time to use elev tool to load elevation data from source imagery, generate heightmaps for the terrain and update elevations of runway elements.

In command window, type the following:

msfs elev -imagery "C:\Dev\EEVI\Source\53684.tif" -border "C:\Dev\EEVI\Source\border.shp" -airport "C:\Dev\EEVI\PackageSources\scene\EEVI.xml" -res 5 "C:\Dev\EEVI\PackageSources\scene\EEVI.xml"

This updates EEVI.xml airfield data file inside the scene folder with custom elevation data, resampled to 5 meter resolution.

6. Reload the project

Return to MSFS. In Project Editor select scene component once again and in Inspector click Load in Editor to reload the changes we made to the airfield.

Switch to Scenery Editor tab and you will see height maps that were generated for the airfield:

A view from the south. Yellow rectangles are height maps that cover the area you previously outlined. Dotted lines show their falloff.
A view from the south. Yellow rectangles are height maps that cover the area you previously outlined. Dotted lines show their falloff.

Move closer to the runway and you will see it split into orange sections. These are runway profile segments, which were also generated in addition to height maps:

Runway with elevation profile
Runway with elevation profile

Elevation profile visible inside the editor matches perfectly with surveyed data:

Runway profile measured directly from elevation imagery
Runway profile measured directly from elevation imagery

And when we take a grassroots level view towards the northeast, we only see treetops at the far end - just like in real life:

Grassroots level view towards the northeast
Grassroots level view towards the northeast

The terrain isn’t anymore an endless flat plane with almost infinite view. In fact, the slope hides a Cessna 152 sitting at the other end.

7. Build the project

You are now free to continue editing the project. At any moment, you can save the scenery in in-game editor and run elev tool again to update the airfield. For example, you can change the border shape and elev will produce new height maps.

elev tool only replaces height maps with the same priority level (default: 0). If you want to add custom tweaking on top of the imported elevation data, set your height maps to a higher priority.

After you have finished, select noolaero-airport-eevi-viljandi in Project Editor and click Build package in Inspector.

Building the package
Building the package

MSFS will build a redistributable package, which you will find at C:\Dev\EEVI\Output\noolaero-airport-eevi-viljandi.
Copy the folder to MSFS Community folder to add the package to MSFS.


As you could see, importing your custom elevation data is simple procedure. Essentially you’re just updating the airport XML file.