From QGIS to GNG: A Step-by-Step Mapping Guide

This document defines the standard workflow used in Iran vACC for creating and maintaining EuroScope map data used in both EuroScope and GNG.
Map data includes ARTCC boundaries, GEO objects, Regions, FreeText labels, and any additional map geometry required for operations.
All data is created and maintained in QGIS, stored as GeoJSON, and converted using the euroscope-sector-converter toolchain.
GeoJSON is the single source of truth. All generated outputs are considered derivative and must never be edited manually.
Required Software
The following tools are required:
- QGIS (for creating and editing map geometry)
- Python 3.8 or later
- euroscope-sector-converter
The converter repository contains three scripts:
convert_sector_to_geojson.py
convert_geojson_to_sector.py
convert_geojson_to_gng.py
Repository structure
euroscope-sector-converter/
│
├── convert_geojson_to_gng.py
├── convert_geojson_to_sector.py
├── convert_sector_to_geojson.py
│
├── geojson/
│ ├── geo/
│ ├── regions/
│ └── freetext/
│
├── sector/
└── converted/
├── geo/
├── regions/
├── freetext/
├── *.sct
└── *.ese
Workflow Overview
The full workflow is:
QGIS → GeoJSON → euroscope-sector-converter → EuroScope / GNG
- QGIS is used for all editing and creation
- GeoJSON is the storage format and source of truth
- The converter generates EuroScope and GNG-compatible outputs
Generated files must not be edited manually.
Creating Map Data in QGIS
All map data must be created and maintained inside QGIS.
Standard workflow:
- Create or open the correct layer in QGIS
- Draw or modify geometry
- Ensure attributes are correctly filled
- Validate geometry (no self-intersections or broken features)
- Export layer as GeoJSON
- Place exported file into the correct folder under
geojson/
Each layer must follow the correct structure and attribute rules defined below.

Layer Types and Attributes
ARTCC (Sector borders)
Used for country/local sector borders.
Geometry type: LineString
Required attributes:
| Field | Description |
|---|---|
| name | Feature identifier |
| color | Display color (must match GNG color definitions) |
| section | ARTCC / ARTCC HIGH / ARTCC LOW |
GEO (Taxiways)
Used for general map features that do not belong to ARTCC or Regions.
Geometry type: LineString
Required attributes:
| Field | Description |
|---|---|
| name | Feature identifier |
| color | Display color (must match GNG color definitions) |
| section | GEO |
FreeText (Taxiway/Stand Labels)
Used for text labels displayed in EuroScope.
Geometry type: Point
Required attributes:
| Field | Description |
|---|---|
| name | Internal identifier |
| label | Displayed text in EuroScope |
Regions
Used for area-based boundaries or controlled zones.
Geometry type: Polygon
Required attributes:
| Field | Description |
|---|---|
| name | Region name |
| color | Display color (must match GNG color definitions) |
Geometry Rules and Optimization
Geometry must be optimized for performance and maintainability.
EuroScope performance is directly affected by the number of vertices data in the sector file.
Rules:
- Use the minimum number of points required to represent geometry accurately
- Do not trace satellite imagery with excessive detail
- Avoid unnecessary vertices on straight lines
- Simplify curves where possible while preserving operational meaning
- Remove duplicate or overlapping geometry
- Prefer clean, simple geometry over visual accuracy
- Keep features consistent across the entire sector
Important principle:
Operational correctness is more important than visual precision.
Overly detailed geometry increases:
- sector file size
- load times in EuroScope
- rendering overhead
Converting GeoJSON to EuroScope (For testing)
Once all GeoJSON files are ready, generate EuroScope sector files using:
python3 convert_geojson_to_sector.py
Output:
converted/
├── *.sct
└── *.ese
These files can be used directly in EuroScope sector configuration.
Converting GeoJSON to GNG (Final production)
To generate input files for Global Nav Generator:
python3 convert_geojson_to_gng.py
Output:
converted/
├── geo/
├── regions/
└── freetext/
These files are used by GNG to generate the final EuroScope sector package.
Converting Existing Sector Files to GeoJSON
When updating an existing sector, it must first be converted into GeoJSON.
Step 1: Place files
Put existing .sct and .ese files into:
sector/
Step 2: Run converter
python3 convert_sector_to_geojson.py
Output:
geojson/
├── geo/
├── regions/
└── freetext/
These files can then be opened in QGIS and modified.
Recommended Workflow
When making changes to map data, always follow this process:
- Open QGIS project
- Load and edit GeoJSON layers
- Validate geometry and attributes
- Export updated GeoJSON
- Run conversion script (sector or GNG)
- Test output in EuroScope or GNG
- Commit both source (GeoJSON) and generated files
Notes
- GeoJSON is the only source of truth
- Never modify generated
.sct,.ese, or GNG output manually - Always regenerate outputs after changes
- Keep geometry simple and optimized
- Validate output before deploying to production use
- Maintain consistency across all sectors and airports
Maintenance
This document must be updated whenever:
- workflow changes
- new tools are introduced
- file structure changes
- attribute requirements are updated
All developers and facility engineers are responsible for keeping it up to date.