🖥️
← Back to KLO Software

KOContour

Contour map display for elevation data files or DEM elevation servers such as Open Topo Data and OpenTopography.

Windows UWP Microsoft Store Free KOContour main screen

Overview

KOContour reads in elevation data files from your computer and displays them as contour maps. A typical data file would look like this:

type  latitude        longitude       altitude (ft)  name         desc
T     53.231479474    -6.299506408    1672.9         Stillorgan   Ireland
T     53.231479474    -6.299119017    1678.8
T     53.231479474    -6.298731626    1687.9
T     53.231479474    -6.298344235    1698.1
T     53.231479474    -6.297956845    1704.0
T     53.231479474    -6.297569454    1708.2
T     53.231479474    -6.297182063    1709.2

The example above assumes tab-separated columns, which is recommended so that your description field can then use commas. In the sections below there are screenshots showing how the main features work.

The most up to date version of this information will always be the online version.


Creating the Input Data Files

KOContour top toolbar showing GPX and DEM buttons

Use a DEM Server (recommended for most people)

KOContour DEM data download dialog

There are a number of Digital Elevation Model (DEM) servers on the internet, and KOContour can fetch your elevation grid directly from two of them — no external website needed. These are built in, choose one from the DEM server suggestions which will pop up if you type open into the DEM server URL field.

You should type the URL of your chosen server in the DEM server box. KOContour knows how to “talk” to these, and any others which use the same protocol, such as if you run your own in a Docker environment.

Open Topo Datahttps://api.opentopodata.org/
OpenTopographyhttps://portal.opentopography.org/

The trailing /API is optional — KOContour accepts either form. Both are also already in the server dropdown, so you can just select one.

The “Open Topo Data API” — implements a custom REST API: GET/POST /v1/{dataset}?locations=lat,lon|lat,lon → JSON {results:[{elevation, location}]}. There is no formal standard name; it was deliberately modelled to look similar to the Google Maps Elevation API. It is one of a family of “elevation point-query” JSON APIs, but they are not drop-in compatible with one another.

KOContour DEM API key entry

This means KOContour can talk to the public Open Topo Data server (api.opentopodata.org) and to any self-hosted Open Topo Data instance (it is open-source and meant to be run on your own server) — or indeed any other server whose API matches Open Topo Data's format.

The “OpenTopography API” — implements custom REST endpoints (globaldem?demtype=…, usgsdem?datasetName=…) that return a raster file for a bounding box. You will need to request an API key to use this, but it is free.

The real standard for “give me a DEM raster for this bounding box” is OGC WCS (Web Coverage Service) — with its cousins WMS / WMTS for map images. Many DEM servers expose WCS (national mapping agencies, GeoServer / MapServer / THREDDS instances, and so on). OpenTopography's API plays the same role as WCS but is not WCS — it is its own thing.

KOContour grid dimensions suggestions

When you have chosen your server, make sure you enter the API key using the padlock button in the lower right of the dialog. The grid resolution dropdown below the dataset name will be populated with suitable values (you may have to “tab off” the server name field), so select the one you want. Similarly a dataset recommendation will be selected, but you can override that if you wish. Once you are done setting up your selection parameters click Generate TSV from DEM server; a file picker lets you choose where to save the data — I recommend making a ContourMaps folder under your Pictures folder and use file type .tsv which is just tab-separated values. KOContour is registered as a handler for .tsv files so you can just double-click on them to open a map if you use that. Click the Save button and the download will begin.

KOContour DEM data download progress dialog

You will then see a progress information popup, which you can hide by clicking the Close and keep going button (click on the main toolbar button to see it again), and you can cancel the operation if, for example, you are warned that the dataset you chose does not have elevations for the points you requested. A good choice for North America and the UK seems to be the Mapzen dataset, and the app will try to default to the best choice, but your mileage may vary. For the opentopodata.org server it is possible to display the actual progress percentage, but for opentopography.org an “indeterminate” (busy) progress bar has to be used. Once the download is complete you can close the progress box and then use the Load Data button to load the file you created.

Saving Map Service Keys or Usernames

You can register for various free map services with DEM servers, or GeoNames which, for individual, low-use, are likely more than adequate in the speed and number of daily transactions.

Once you have your account and username or key, click on the padlock button, and paste the appropriate one into the popup dialog. Click Save to securely save the key in the local storage for your app. You are now ready to download data from the map service or elevation data for individual places from GeoNames.

How the main Open Topo Data public datasets compare for resolution/quality:

DatasetResCoverageNotes
mapzen~30 mGlobal (incl. high latitudes & bathymetry)A composite — picks the best source per region (SRTM, ASTER, and national high-res like NED / EU-DEM where available). Best general-purpose default.
aster30m30 mGlobal ~83°N–83°SReal 30 m everywhere, but ASTER GDEM is noisier / more artifact-prone than SRTM.
srtm30m30 m60°N–56°S onlyCleaner than ASTER, but no high latitudes.
ned10m10 mUSA onlyHigher res — best for US areas.
eudem25m25 mEuropeBetter than 30 m for the UK / Europe.
nzdem8m8 mNew ZealandHighest res where it applies.

The main OpenTopography datasets (chosen from the same dataset dropdown) are:

DatasetResCoverageNotes
COP30~30 mGlobal (incl. >60°N)Copernicus GLO-30. Modern and clean — the best worldwide default.
COP90~90 mGlobal (incl. >60°N)Copernicus GLO-90. Coarser, but allows a much larger area per call.
NASADEM~30 m60°N–56°SReprocessed SRTM — cleaner than SRTMGL1, but no high latitudes.
SRTMGL1~30 m60°N–56°SNASA SRTM, 1 arc-second.
SRTMGL3~90 m60°N–56°SNASA SRTM, 3 arc-second. Good for large areas.
AW3D30~30 mGlobal ~82°N–82°SALOS World 3D (JAXA).
EU_DTM30 mEuropeContinental Europe DTM.
USGS10m~10 mUSA (+ AK/HI/terr.)USGS 3DEP, 1/3 arc-second. Best US detail — auto-selected when your country is the US.
USGS30m~30 mUSA (+ AK/HI/terr.)USGS 3DEP, 1 arc-second. Use for larger US areas.
USGS1m1 mUSA, where lidar existsUSGS 3DEP lidar. Academic API keys only.
SRTM15Plus~450 mGlobalIncludes sea-floor bathymetry.
GEBCOIceTopo~500 mGlobalGEBCO, ice-surface; includes bathymetry.
GEDI_L3~1 km52°N–52°SVery coarse; rarely needed for contour maps.

(The dropdown also offers ellipsoidal-height variants SRTMGL1_E / AW3D30_E and a sub-ice GEBCOSubIceTopo, which are rarely needed for contour maps.)

Create elevation data for an area

KOContour draws its contours from a regular rectangular grid of elevation readings: the contouring algorithm needs evenly-spaced points laid out in rows and columns, not a scattering of random measurements. The Create data dialog (the same button described above) builds exactly such a grid for the area you specify — a centre latitude/longitude and a horizontal extent — and, with the DEM service option, looks up the elevation of every grid point for you and saves a ready-to-load .tsv file in one step. No external website is involved.

(The dialog also has a Create GPX file option that writes just the grid of latitude/longitude points with no elevations, in case you want to fill them in with a separate elevation tool of your own. Most people will simply use the DEM-server route above, which does the elevation lookup directly.)

Alternatively, here is a link to download Maui.tsv — a tab-separated data file for Maui, ready to use. As always, do a virus scan just as you would for any file you download.

Example: Create data for Maui

KOContour Create Data dialog

Find the centre of your area in your favourite map source, e.g. Google Maps: search for Maui, right-click the chosen spot, and left-click the coordinates that pop up to copy them to the clipboard — something like 20.800841, -156.327220. Then click the Create data button to open the dialog.

Click the field labelled Paste lat,lon here and paste the coordinates; the Latitude and Longitude fields fill in and stay in sync (you can also type them individually). As a quick alternative, type a place name into the Title field and choose an entry from the drop-down of suggestions that appears — selecting one fills in the coordinates for you; use the country selector beside the Title to restrict the search to a particular country. Fill in the other fields until they all show a green border, indicating they are valid.

Select the DEM service option and choose a server — Open Topo Data (no key needed) or OpenTopography (once you have pasted in its key). Pick a dataset and a grid resolution, then click Generate TSV from DEM server and save the file as Maui.tsv in your data folder. A progress popup shows while the elevations are fetched; when it finishes, close it and use Load Data to plot your new map.


Loading the Input Data Files

KOContour load data toolbar button

Click the highlighted button, which will show a standard file picker letting you select one of the input files you created above. A contour map will be generated from the data and should look similar to the picture below.

KOContour contour map of Maui

Contour map of Maui generated from the downloaded elevation data

When you load a data file it is added to the Show Favourites list dialog, and you can double-click on entries there to load the data again. Entries are sorted with the most recently loaded at the top. Superimposed on the map you can see the zoom and pan controls, along with the height scale on the left and the distance scale in the lower right.

To zoom into a particular area, click and drag a rectangle across the map. A white selection box — matching the proportions of the map window — follows the pointer as you drag, and releasing the mouse button zooms to the selected area. Press Esc while dragging to cancel without zooming. The zoom and pan buttons in the lower-right corner give step-by-step control.

On a touchscreen you can also use two-finger gestures on the map: pinch two fingers together or spread them apart to zoom out or in — the zoom is centred on the point midway between your fingers — and drag with two fingers to pan the map, which follows your fingers and stops at the edges of the loaded data so you cannot scroll off into empty space. Pinching and panning can be done together in one gesture. A mouse wheel (or precision-touchpad pinch) also zooms.


Choosing How the Contours are Drawn

Contour display-mode drop-down (Lines, Gradient Shade, Block shade, 3D)

The drop-down near the top of the window selects how the loaded data is drawn. There are four modes:

The colours used by every mode are set by the colour scheme, and the number of bands by the contour-levels slider, both described below.

Gradient-shaded contour map Block-shaded contour map

Adjusting the Number of Contour Levels

Contour-levels slider with the 'N contour levels' label beneath it

The slider near the top of the window sets how many contour levels are drawn; the "N contour levels" label beneath it shows the current count. The levels snap to "nice" round step sizes (for example 5, 10, 50, 100 …) so the colour key stays easy to read. With the slider focused, the left and right arrow keys step down or up to the next preferred set of levels.


The 3D Relief View

3D shaded relief view of the terrain

Choosing 3D in the display-mode drop-down draws the data as a shaded relief surface, lit from the north-west. Any places you have added appear as little flagpoles whose flags carry the place names, and the red N compass arrow points to the projected north.

Rotate the view by dragging on it with the mouse (or one finger): dragging left/right spins the view (its compass bearing) while dragging up/down tilts it between almost straight-down and nearly edge-on.

The same 3D terrain rotated to a different bearing and tilt

Two vertical sliders sit beside the view:

Zoom the 3D view by pinching with two fingers, or with the mouse wheel / trackpad. The terrain and its labels zoom together.

For smooth rotation the 3D surface is drawn on your graphics card (GPU) where a suitable one is available, falling back to the processor otherwise. A small marker in the lower-left corner of the map shows which is in use (for example GPU 3D: …, or CPU only).


Contour Colour Schemes

Contour colour-scheme chooser dialog with hue and shade-mute sliders and preview swatch strips

Tap (or click) the contour-levels key in the lower-left of the map to open the Contour colour scheme chooser. Each option shows a preview strip of the colours your current contour heights would have under that scheme. The schemes are:

At the top of the chooser are sliders that fine-tune the scheme they belong to — each one is enabled only while its scheme is selected:

The map updates live as you change the scheme, the sliders, or the switches below, so you can see the effect straight away. Reset puts everything back to how it was when you opened the chooser, Cancel discards your changes, and OK keeps them. The chosen scheme applies to every display mode, including the 3D view, and is remembered between sessions.

The chooser also has a 3D block sides section with two switches for the 3D relief view:

Contour map drawn with the hypsometric colour scheme

Adding and Editing Places

KOContour add/edit places toolbar button

Click the highlighted button to show the Add or Edit a Place dialog. This lets you enter a place name, description, coordinates, and elevation for a new place, and add it to the list in the Show Places list dialog. If you double-click on a place in that list it will also invoke the Add or Edit a Place dialog. If the place does not have elevation data (shown as empty or −1000000) and it is within the currently loaded map data, the elevation field will be highlighted in purple with a suggested value filled in. Click Update Place / Add Place to save, or Cancel to exit without changes.

The Place Name field is also a search box: start typing and a drop-down list of matching places appears. Use the country selector beside it to narrow the search to a particular country. Choosing a place fills in its coordinates, sets the description to Place, County, Country, and fills in the elevation automatically. Place search is powered by GeoNames.

You can also right-click (or press and hold) anywhere on the map to see a list of the nearest places. Choosing one opens the Add or Edit a Place dialog ready-filled with that place's name, description and coordinates, together with its elevation where available. The most recently chosen place is remembered, so clicking the Add or Edit a Place button afterwards re-opens the dialog pre-filled with it.

As an example, let's add Lahaina.

Add or Edit a Place dialog for Lahaina

If you have not yet set up a free GeoNames account (and I would strongly recommend that you do) you can use Google Maps as described above to get the coordinates for Lahaina and paste them into the dialog, then add the other details If you have set up your GeoNames account, and entered the username then you can type the first few letters of the place name and a list of suggestions will pop up. Click on the one you you want, and it will populate all the fields in the dialog for you. This is the easiest way of getting the data.

Lahaina details filled in

With the coordinates filled in, give the location a name and a short description, and add an elevation if you know it — or leave the elevation blank and let KOContour suggest one from the loaded map data. As a shortcut you can type the place name straight into the Place Name search box and pick it from the drop-down list, which fills in the coordinates (and elevation) for you. When every field shows a valid (green) value, click Add Place to save it.

Lahaina will appear on the map and be highlighted as shown.

Lahaina shown on map

Try adding another place such as Paia. Leave the elevation unset and save the new place, then continue to the next section.


Showing the Places List

KOContour show places toolbar button

Click the highlighted button to show the Show Places list dialog. Places are maintained in alphabetical order. Double-clicking an entry launches the Add or Edit a Place dialog. If a place does not have elevation data and it is within the currently loaded map data, the elevation field will be highlighted in purple with a suggested value.

KOContour places list dialog

Try looking for Paia — you can jump to the P section by pressing the P key. Double-click on Paia; if the elevation was left as the default (−1000000 means undefined), it will suggest an elevation based on the nearest contour line and highlight it as shown — 200 feet in this case. Places visible on the currently loaded map are shown in cyan, otherwise they are shown in light gray. If you re-type in the place name it will suggest a more accurate elevation from GeoNames - 232.9 feet - if you have set up your account on that as described below.

Paia elevation suggestion highlighted in purple

GeoNames requires creating an account for programmatic use, but it is totally free and does NOT require a payment card, or credit-card-on-file. I would strongly recommend doing so since it lets you do automated lookups of the latitudes and longitudes of named places, or places you click on the map, and takes only a couple of minutes:

  1. Register at https://www.geonames.org/login — just a username, email, and password.
  2. Confirm the email they send you.
  3. Enable web services — this is the easily-missed step. Log in, go to https://www.geonames.org/manageaccount, and click the link at the bottom to "enable the account for use of the free web services." Until you do this, every API call returns user account not enabled to use the free webservice, even though the account exists.
  4. Set GeoHelpers.GeoNamesUserName to that username in the app.
Paia shown on map with elevation

The username is the credential — there's no separate API key or secret. You just pass &username=yourname on each request (which is why it's plain http, and why you shouldn't hardcode a username you care about into a widely-distributed app, since anyone can read it and spend your daily quota).

You can easily test your account by entering the following into the address field of your browser:

http://api.geonames.org/searchJSON?name_startsWith=<placename>&featureClass=P&maxRows=10&username=<username>

Replace <placename> and <username> with the appropriate values for your chosen place, and your account. This will return a list of place names and the data for each.

Click Update Place to save the place data and elevation, which will then appear on the map under the place name.


Finding the Elevation

KOContour elevation marker on map

To find the elevation of a point, click on the map at the desired location. A marker will appear showing the elevation along with the latitude and longitude. To remove it, click again in the centre of the crosshair.


Distances and Compass Bearing

KOContour distance and bearing tool

To find the distance between two points, hold the Ctrl key and click on the map at the first location. A marker will appear. Keep holding Ctrl and click the second point. A line will be drawn between the points showing the distance and compass bearing. To remove the measurement tool, click again in the centre of either crosshair.


Showing the Favourites List

KOContour show favourites toolbar button

Click the highlighted button to show the Show Favourites list dialog. The list is maintained in last-access order, most recent first. Double-click an entry to load that data file. If the file no longer exists you will be asked if you would like to remove it from the list.

KOContour favourite data files dialog

Toolbar Option Checkboxes

KOContour toolbar checkboxes

The Light Theme checkbox switches to a light background, which is sometimes better for printing. The Load at startup checkbox causes the app to automatically load the last successfully loaded data file at launch, if it still exists. Both of these settings are persisted across launches. The Show places option is not persisted.

Everything else is easy to figure out from the tooltips and prompts — have fun exploring!


Features

Contour Display Modes

Draw the data as contour lines, a smooth gradient shade, solid block shading, or a 3D relief surface.

3D Relief View

GPU-accelerated 3D terrain you can rotate by dragging, with sliders for vertical exaggeration and mesh granularity, and pinch / mouse-wheel zoom.

Colour Schemes

Tap the contour key to choose a colour scheme: the original, greyscale, hypsometric terrain tints, terrain-with-water, or perceptually-uniform Viridis.

Adjustable Contour Levels

A slider sets the number of contour levels, snapping to round step sizes; arrow keys step through the preferred level sets.

DEM Server Integration

Fetch elevation data directly from Open Topo Data or OpenTopography servers, with automatic rate‑limit handling and progress reporting.

Elevation Grid Generation

Create a ready-to-use elevation TSV grid for any region from a lat/lon centre point, with the elevations filled in directly from the chosen DEM server.

Contour Map Rendering

Load TSV elevation files and generate detailed contour maps with zoom, pan, height scale, and distance scale overlays.

Places Management

Add, edit, and store named places with coordinates and elevation, including automatic elevation suggestions from map data.

Elevation Lookup

Click anywhere on the map to display the elevation and coordinates of that point.

Distance & Bearing Tool

Hold Ctrl and click two points to measure distance and compass bearing between them.

Favourites List

Automatically tracks recently loaded data files for quick reloading, with missing‑file cleanup.

Toolbar Options

Includes light theme mode, load‑at‑startup, and show‑places toggles, with persistent settings.

Place Search

Type a place name in the Create-GPX or Add-Place dialogs and pick from a drop-down of suggestions, optionally filtered by country, to fill in coordinates and elevation. Powered by GeoNames.

Nearby Places

Right-click anywhere on the map to list the nearest places and add any of them to your places with a single click.

Drag-to-Zoom

Click and drag a proportional selection box across the map to zoom into an area; press Esc to cancel.

Place Import and Export

You can import and export your saved places from the Places List dialog. It will warn if there are duplicates.


Download and Install

KOContour

The app can be installed from:

Requires Windows 10 (build 1809) or later, or Windows 11.

KOContour is free software.
← Back to KLO Software