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: showibonav.aerowherever 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 |