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

sector-mapping-guide-1

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:

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:

  1. Create or open the correct layer in QGIS
  2. Draw or modify geometry
  3. Ensure attributes are correctly filled
  4. Validate geometry (no self-intersections or broken features)
  5. Export layer as GeoJSON
  6. Place exported file into the correct folder under geojson/

Each layer must follow the correct structure and attribute rules defined below.

sector-mapping-guide-2 sector-mapping-guide-3

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:

  1. Open QGIS project
  2. Load and edit GeoJSON layers
  3. Validate geometry and attributes
  4. Export updated GeoJSON
  5. Run conversion script (sector or GNG)
  6. Test output in EuroScope or GNG
  7. 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.