Home > FAQ

Frequently Asked Questions

Overview

Why the wrapper?

National and regional geoservices are difficult to discover and use directly — different CRS, axis order, image size limits, and no CORS headers. The wrapper sits between your browser and the upstream services and handles this:

Simplified bbox format
You supply W,S,E,N (longitude/latitude); the wrapper translates to the axis order the upstream service expects (see FAQ: Bounding-box axis order).
Automatic CRS handling and reprojection
The wrapper always returns GeoJSON in WGS 84 (EPSG:4326), reprojecting from whatever CRS the upstream service uses (see FAQ: CRS and projections).
Image size calculation
For WMS requests the wrapper computes width/height from the bbox aspect ratio, respecting each service's maximum pixel limit.
CORS proxy
Upstream government WMS/WFS servers generally don't send Access-Control-Allow-Origin, so the wrapper proxies responses so browser requests work.

What data do you provide?

Services are catalogued flat by ISO 3166-1 alpha-3 country code — see the start page and region index.

WMS 1.3.0
Map images (PNG) for a bounding box. Append ?legend for the legend graphic.
WFS 2.0.0
Vector features in GeoJSON (WGS 84 by default), GML, RDF/XML, or Turtle. OGC Filter Encoding 2.0 supported (see FAQ: WFS filtering).

Which services do you support?

See the service list for current coverage. Services conformant to the INSPIRE application schemas live in the sibling wrapper Linked INSPIRE; German AdV services in linked-adv; Dutch PDOK in linked-pdok; Copernicus Data Space (Sentinel-2) in linked-cdse. This wrapper takes everything else, any country.

Coordinates and projections

What are CRS, SRS, and projections?

A Coordinate Reference System (CRS, also called SRS in OGC standards) defines how coordinates map to locations on Earth. EPSG:4326 (WGS 84, lat/lon in degrees) is what GPS and most web maps use. All GeoJSON returned by the wrapper is in WGS 84 regardless of the upstream service's CRS — reprojection happens server-side.

What is the bbox format?

W,S,E,N in decimal degrees (EPSG:4326). WMS 1.3.0 and WFS 2.0.0 themselves require lat/lon axis order (S,W,N,E); the wrapper translates from the more intuitive W,S,E,N automatically. If you need the raw upstream GML (original CRS and axis order), use /wfs.gml?type=…&bbox=…&s=….

Web Map Service (WMS)

Why are WMS images limited in size?

Some upstream WMS services impose a maximum image dimension; the wrapper respects it and returns whatever the upstream server provides. If you need a larger area, split your bounding box into smaller tiles.

Why do some WMS layers return blank images?

Some upstream WMS services only render at certain zoom levels. If you get a blank image, try a smaller bounding box (higher zoom).

Which services are here

What makes a service “INSPIRE”, and why is service X not here?

This wrapper serves the services that FAIL a machine-checkable INSPIRE test — the ones that pass live in Linked INSPIRE. For WFS, at least one feature type must be in a canonical INSPIRE namespace; for WMS, GetCapabilities must carry a conformant <inspire_vs:ExtendedCapabilities>. In both cases the test is conformance, not intent — a service named “INSPIRE” that publishes no extended capabilities, or a feature type with an INSPIRE-looking name in some other namespace, still lands here. This is reproducible and survives re-running discovery; “looks INSPIRE-ish” is not.

Web Feature Service (WFS)

How do I filter WFS features (keyword search, attribute queries)?

The wrapper supports OGC Filter Encoding 2.0 (FES 2.0). Pass the filter as URL-encoded XML in the filter query parameter; the wrapper forwards it as the FILTER KVP parameter to the upstream WFS server.

Keyword search with PropertyIsLike
GET /wfs?type=/inspire/hy-p/4.0#Watercourse&bbox=9.9,53.5,10.1,53.6&s={wfs-uri}
    &filter=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0">
               <fes:PropertyIsLike wildCard="*" singleChar="." escapeChar="\">
                 <fes:ValueReference>hy-p:geographicalName</fes:ValueReference>
                 <fes:Literal>*Rhein*</fes:Literal>
               </fes:PropertyIsLike>
             </fes:Filter>
Property names for a feature type are available via /wfs/describe?type={type}&s={wfs-uri}. BBOX and FILTER are applied together (AND semantics) by the upstream server.

Why does loading a feature by ID fail for some services?

At discovery time the wrapper probes each WFS service to determine which lookup method it supports — a standard stored query (STOREDQUERY_ID=urn:ogc:def:query:OGC-WFS::GetFeatureById) or the RESOURCEID parameter. Some upstream servers advertise support but don't actually honour it, return 403 on the stored-query endpoint, generate session-only transient IDs, or return empty results regardless of ID — in those cases, loading a feature by ID from this wrapper simply won't work for that particular service. Re-running discovery picks up a fix if the upstream service starts behaving correctly.

Feature panel

What do the properties in the feature panel mean?

Property labels
Property keys are URIs from the source vocabulary. Full URI keys are shown as their local name (the part after # or the last /); clicking opens the definition.
rdf:type
Present on all WFS features — a link to the feature type definition in the local vocabulary.
identifier
Comes from <gml:identifier> in the GML response — the canonical persistent URI for the feature, where the upstream service provides one.
_droppedGeometry
A GML geometry element in the response uses a type not yet supported by the viewer (e.g. Tin, Grid). The feature is shown without geometry.

Why are geometries different across RDF/XML, Turtle, and GeoJSON-LD?

RDF/XML and Turtle carry geometry as a locn:geometry XML literal with the raw GML in the upstream CRS. GeoJSON and JSON-LD project all coordinates to WGS 84 as a GeoJSON object — the three representations are not graph-isomorphic.

What is the Upstream link in the link area?

After loading features, the link area shows an Upstream link pointing directly to the source service request that produced the result, so you can inspect or replay it independently of the wrapper.

Access

Why do I see 429 Too Many Requests errors?

To protect upstream services from excessive load, each IP address may make 50 requests per 10 minutes, refilling continuously (roughly one request every 12 seconds after hitting the limit).

Registered heavy users can bypass the limit with an API key:

Authorization: Bearer <your-api-key>

Contact the operator to request a key.


OntologyCentral, 2026.