The Terrain Data system in Mission Planner provides elevation data for any geographic location, supporting mission planning, terrain following, and obstacle avoidance features. This system manages the retrieval, caching, and interpolation of Digital Elevation Models (DEM) from various sources including SRTM, GeoTiff, and DTED.
Mission Planner's terrain data system provides access to elevation information with a fallback mechanism that prioritizes high-resolution local sources (GeoTiff/DTED) before falling back to global SRTM data.
The following diagram maps the natural language lookup process to the specific classes and methods implemented in the codebase.
Sources: ExtLibs/Utilities/srtm.cs116-160 ExtLibs/Utilities/srtm.cs179-207 ExtLibs/Utilities/srtm.cs122-150
SRTM is the primary global data source. Mission Planner supports both SRTM1 (1 arc-second, ~30m) and SRTM3 (3 arc-second, ~90m) resolutions. Data is stored in .hgt files named by their bottom-left coordinate (e.g., S35E138.hgt). The filenameDictionary function handles the mapping of coordinates to these specific file naming conventions.
The GeoTiff class handles high-resolution imagery with embedded elevation data. It supports various projections and coordinate systems by leveraging the BitMiracle.LibTiff.NET and DotSpatial libraries.
BitMiracle.LibTiff.Classic for raw Tiff access and metadata extraction from GeoKey directories ExtLibs/Utilities/GeoTiff.cs1-24 ExtLibs/Utilities/GeoTiff.cs139-150srtm.getAltitude calls GeoTiff.getAltitude as its first priority source ExtLibs/Utilities/srtm.cs122-126The DTED class provides support for the military standard terrain format.
getAltitude pipeline as a secondary local source after GeoTiff but before standard SRTM ExtLibs/Utilities/srtm.cs138-142altresponce StructureEvery elevation request returns an altresponce object, which encapsulates the result and metadata about the source.
Sources: ExtLibs/Utilities/srtm.cs23-38
Mission Planner uses a specific naming convention to locate .hgt files based on latitude and longitude.
| Input | Logic | Example Filename |
|---|---|---|
| Lat 35.5, Lng 117.2 | Floor(Lat), Floor(Lng) | N35E117.hgt |
| Lat -35.5, Lng -117.2 | Floor(Lat), Floor(Lng) | S36W118.hgt |
Sources: ExtLibs/Utilities/srtm.cs70-92 ExtLibs/Utilities/srtm.cs104-114
When a requested SRTM tile is missing locally, it is added to a queue for background processing.
queue list ExtLibs/Utilities/srtm.cs59-60HttpClient is used to fetch missing data from remote servers, configured with the Mission Planner User Agent ExtLibs/Utilities/srtm.cs94-102Dictionary<string, short[,]> stores loaded elevation grids in memory to speed up subsequent lookups ExtLibs/Utilities/srtm.cs65-68Terrain data is persisted in the following subdirectories within the Mission Planner data path:
./srtm/ ExtLibs/Utilities/srtm.cs40-42datadirectory property ExtLibs/Utilities/srtm.cs42-50Mission Planner uses GDAL (Geospatial Data Abstraction Library) to handle complex GeoTiff projections and raster datasets.
LoadImageInfo retrieves projection references, raster counts, and corner coordinates ExtLibs/GDAL/GDAL.cs121-185OSGeo.OSR.SpatialReference to import WKT and EPSG definitions (e.g., WGS84/EPSG:4326) ExtLibs/GDAL/GDAL.cs68-72Sources: ExtLibs/GDAL/GDAL.cs18-76 ExtLibs/GDAL/GDAL.cs121-200
Mission Planner integrates with Altitude Angel services to provide supplemental map data and aeronautical information.
AltitudeAngelService subscribes to map change events on both FlightDataMap and FlightPlanningMap to update overlay data ExtLibs/AltitudeAngelWings/Service/AltitudeAngelService.cs69-74MapFeatureCache to reduce API overhead ExtLibs/AltitudeAngelWings/Service/AltitudeAngelService.cs27-38Sources: ExtLibs/AltitudeAngelWings/Service/AltitudeAngelService.cs24-85
Refresh this wiki