Geo Server Symbology

Required roles: AIS PIB API — Roles
Base endpoint: https://ais-pib-api.ibosoft.net.tr:2087/qgis-symbol
Reference documents: none
Attribution: show ibonav.aero wherever this data is displayed
Data sources: ibonav.aero geo server.
Last updated: 17 OCT 2026

This endpoint supports the ibonav.aero geo server (WMS/WFS). For the geo server itself — layers, services and how to use them — see the Geo Server section, including GetCapabilities.

The SVG symbol the ibonav.aero geo server uses for a point feature: give the layer name and the feature's attributes, get the symbol file name, then the SVG itself. Useful to draw WFS features with the same symbols as the WMS map.

The symbols follow the map style of the geo server and change with it. Layer names are those of the WMS/WFS services (see Geo Server Capabilities).


Endpoints

Endpoint Description
GET /qgis-symbol/layers Layers a symbol can be resolved for
POST /qgis-symbol/resolve Symbol of a feature
GET /qgis-symbol/svg/{filename} The SVG file (image/svg+xml)
GET /qgis-symbol/status Service state

Which layers are covered

Only point layers drawn with SVG symbols. A layer's symbol is chosen in one of these ways:

kind How the symbol is chosen
single Always the same symbol; attributes are not used
categorized By the value of one attribute
rule By rules on the attributes, in order; the first matching rule with a symbol wins; an "else" rule applies when none matches

Clustered layers return the symbol of a single point, not the cluster symbol. Rules may compare attributes with =, <>, !=, IN, NOT IN, IS [NOT] NULL, combined with AND, OR, NOT and parentheses. A missing attribute, null and an empty string all count as null: only IS [NOT] NULL tests them. Quoted values compare as text ('007' ≠ '7'), unquoted numbers as numbers (100 = "100.0"). A layer whose rules need anything more is not covered (404), rather than given a possibly wrong symbol.

Request — /resolve

{"layer": "Common_RS_ATS_SIG_Points_NAVAID_UPPER",
 "attrs": {"navaids_type": "VOR", "atsStatus_depictionNavAndREP": "RNAVFlyOver_Comp"}}

attrs is needed for categorized and rule layers and ignored for single ones; sending all the feature's properties is fine. Attribute names are case-sensitive.

Response

/layers

{
  "count": 41,
  "layers": ["Common_Navaids_VOR", "EUROCONTROL_FRA_Points", "…"],
  "details": [
    {"name": "Common_Navaids_VOR", "kind": "single", "fields": []},
    {"name": "EUROCONTROL_FRA_Points", "kind": "categorized", "fields": ["point_type"]},
    {"name": "Common_RS_ATS_SIG_Points_NAVAID_UPPER", "kind": "rule", "fields": ["atsStatus_depictionNavAndREP", "navaids_type"]}
  ]
}

/resolve

{"layer": "Common_RS_ATS_SIG_Points_NAVAID_UPPER",
 "match": {"svg": "ibosoft-ats-121-5-6.svg"},
 "fields": ["atsStatus_depictionNavAndREP", "navaids_type"]}

match is null when no symbol applies. fields are the attributes that actually decide the symbol of this layer — use them as the key of a client-side symbol cache.

Examples:

Layer attrs svg
Common_Navaids_NDB — 100-5E5E5E.svg (always)
Common_Navaids_VOR — 101-5E5E5E.svg (always)
EUROCONTROL_FRA_Points point_type=VOR fra-vor.svg
EUROCONTROL_FRA_Points point_type="" fra-dp.svg
ourairports-heliport type=bogus none (match: null)
Common_RS_ATS_SIG_Points_NAVAID_Non_UPPER navaids_type=NDB, atsStatus_depictionNavAndREP=OTHER_NonComp ibosoft-ats-121-7-1.svg
Common_RS_ATS_SIG_Points_NAVAID_Non_UPPER values matching no rule 99-5E5E5E.svg (else rule)

/status

{"module": "qgis_symbol", "qgs_project_path": "…", "svg_base_dir": "…", "resolved_layer_count": 41}

Errors

Code Meaning
400 Invalid SVG file name
404 Layer not covered (/resolve), or SVG file not found