Home › FAQ

Frequently Asked Questions

Overview

Why the wrapper?

The Géoplateforme (data.geopf.fr), run by IGN, serves France's national reference data — BD TOPO, BD CARTO, ADMIN EXPRESS, the cadastral parcels, the address base — through OGC web services, which are quite difficult to use from a browser or as Linked Data. The wrapper sits between your client and the upstream services, handling several things:

Simplified bbox format
You supply bounding boxes as W,S,E,N (longitude/latitude), and the wrapper translates them to the axis order the upstream service expects (see FAQ: Bounding-box axis order).
Automatic CRS handling and reprojection
Upstream feature types use a range of coordinate systems: geographic (EPSG:4326) and projected (EPSG:2154, Lambert-93, for metropolitan France; the overseas departments have their own, e.g. EPSG:5490 for the Antilles). The wrapper always returns GeoJSON in WGS 84 (EPSG:4326), reprojecting from the upstream CRS server-side (see FAQ: CRS and projections, FAQ: Lambert-93).
Image size calculation
A /wms request carries its own width and height (the map and /tile compute them). Where a layer's native resolution is known, the wrapper lowers them so that no pixel is finer than the source; it never raises them (see FAQ: Full-resolution images, FAQ: Maximum image size).
CORS proxy
Upstream government WMS/WFS servers generally don't send Access-Control-Allow-Origin headers, so browsers would block direct cross-origin JavaScript requests. The wrapper proxies responses so the “Show on map” buttons and form submissions work.
Header injection
Some upstream services require specific HTTP headers such as Referer that browsers don't allow JavaScript to override; the wrapper adds them server-side.

What data do you provide?

The Géoplateforme's WFS (data.geopf.fr/wfs/ows) and its two WMS (/wms-v/ows, vector rendering; /wms-r/wms, raster), all on the map page. The status page lists every feature type and layer.

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 service types are proxied?

WMS and WFS. The Géoplateforme's WMTS is not proxied: use the WMS for the same layer, or /tile, which cuts XYZ tiles from WMS.

Is there a SPARQL processor?

Yes, a processor rather than an endpoint over a store: /sparql (GET or POST, parameter query; a GET without a query returns a SPARQL 1.1 Service Description), with a form at /sparql.html. The wrapper has no triple store: a query must name its data with FROM / FROM NAMED clauses whose URIs are this wrapper's own /wfs routes, for example

SELECT ?s ?name
FROM <wfs?s=https://data.geopf.fr/wfs/ows&typenames={type}&bbox=2.340,48.851,2.356,48.858>
WHERE { ?s ?p ?name }

IRIs in a query are relative to the wrapper's own base (its origin plus any path it is mounted under, e.g. /geopf/), so write them without a leading slash: <wfs?…>, <vocab/…#…>. A root-relative </wfs?…> resolves to the host root and is rejected as external where the wrapper is mounted under a path.

Each named graph is fetched through /wfs (complete: every feature the bounding box matches, unless count is given), unioned, and the query runs over the union; external graph URIs are rejected. Results: SPARQL JSON/XML/TSV for SELECT, Turtle/RDF/XML or GeoJSON for CONSTRUCT and DESCRIBE. GeoSPARQL functions are available; bind geo:hasGeometry/geo:asWKT for anything you pass to a function and locn:geometry for the map (see FAQ: geometry representations).

Coordinates and projections

What are CRS, SRS, and projections?

A Coordinate Reference System (CRS) defines how coordinates map to locations on Earth. The OGC standards use the older term Spatial Reference System (SRS) for the same concept. The most common CRS is EPSG:4326 (WGS 84), which uses latitude/longitude in degrees — this is what GPS devices and most web maps use.

A projection converts the curved surface of the Earth to a flat map. Web maps typically use Web Mercator (EPSG:3857) for display, but the underlying data is often served in geographic coordinates (EPSG:4326) or in a national projection (EPSG:2154).

All GeoJSON returned by the wrapper is in WGS 84 (EPSG:4326, lon/lat), regardless of what CRS the upstream service uses. Leaflet receives standard GeoJSON and needs no special CRS configuration on the client side.

Why are some feature types in Lambert-93 (EPSG:2154)?

About a quarter of the Géoplateforme's feature types default to Lambert-93, the official projection for metropolitan France; most of the rest default to WGS 84 (EPSG:4326), and the overseas data uses local systems. The bbox you give is always W,S,E,N in WGS 84; the wrapper converts it to whatever the feature type expects.

What is the bbox format?

Bounding boxes use the format W,S,E,N in decimal degrees (EPSG:4326, WGS 84). W and E are longitude, S and N are latitude.

Note: WMS 1.3.0 and WFS 2.0.0 require lat/lon axis order (S,W,N,E) when using EPSG:4326. The wrapper translates from the more intuitive lon/lat (W,S,E,N) to the standard axis order automatically before forwarding requests upstream.

The wrapper always returns GeoJSON in WGS 84 lon/lat, regardless of the upstream axis order or projection. For GML-based services the conversion is done server-side; for services that provide native GeoJSON output the wrapper requests SRSNAME=EPSG:4326 so the upstream reprojection happens there. If you need the raw upstream GML (in its original CRS and axis order), use the /wf

Why are WMS images limited in size?

The raster WMS (/wms-r/wms) declares a maximum of 5010 pixels per side and rejects anything larger, with an error that misleadingly reads “Layer … unknown”. The vector WMS (/wms-v/ows) declares no limit; images 16384 pixels wide rendered in our tests (2026-11-06). The wrapper passes your width and height on without capping them at these limits. If you need a larger area, split your bounding box into smaller tiles.

The raster WMS also answers the occasional valid request with the same “Layer … unknown” error; retrying usually works.

How do I get full-resolution WMS images?

Each pixel covers:

ground per pixel = bbox width (or height) / pixel width (or height)

If your bbox covers a large area, each pixel spans more ground and the image is effectively downsampled. For example, the orthophotos (HR.ORTHOIMAGERY.ORTHOPHOTOS, about 0.3 m per pixel) render every source pixel in a 5010-pixel image only if the bbox is no wider than about 5010 × 0.3 m ≈ 1.5 km. A wider bbox still works but returns a downsampled image. Asking for more pixels than that gains nothing: where the native resolution is known, the wrapper lowers width and height to match it.

Why do some WMS layers return blank images?

Layers on the raster WMS declare the scale range they render in. The wrapper records the coarsest end as a minimum zoom level: the orthophotos start at zoom 6, some detailed layers only at zoom 14 or higher. The interactive map shows a warning when the active layer needs a higher zoom level.

Layers on the vector WMS declare no range, but some stop rendering when zoomed in very close: the BD TOPO buildings layer is blank finer than about 0.17 m per pixel (roughly zoom 19), while the cadastral layers still render. If you use the API directly and get a blank image, try a bbox that fits the layer's scale: smaller if you are zoomed out too far, larger (or fewer pixels) if you are zoomed in too close.

arning when the active layer needs a higher zoom level. If you use the API directly and get a blank image, try increasing the zoom level (i.e. requesting a smaller bounding box).

Which services are here

Why is this not part of the INSPIRE wrapper?

The Géoplateforme WFS is a conformant INSPIRE download service, but its feature types are IGN's national data models (BDTOPO_V3, BDCARTO_V5, ADMINEXPRESS-COG, CADASTRALPARCELS.PARCELLAIRE_EXPRESS, BAN-PLUS, …), not the INSPIRE application schemas. The INSPIRE wrapper admits a WFS only when its data is in the INSPIRE vocabulary, so the national data lives here, with class and property URIs of its own. Other French publishers' national-model services (Shom, BRGM, Sandre, the regional GeoServers) are not here either.

Web Feature Service (WFS)

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

/wfs?s={service}&typenames={type}&eq={property}:{value} selects the features whose property equals the value; like={property}:{pattern} matches a pattern (* any string, ? one character, case-insensitive). The value follows the last colon, so the property may be a path into nested objects with its own prefix colons. A bbox may be added; without one the query runs over the whole service. count/offset and the format suffixes work as usual. The wrapper turns this into one OGC Filter Encoding 2.0 (FES) document — with the bbox folded in as fes:BBOX, because a WFS 2.0 server rejects the KVP BBOX and FILTER parameters side by side.

Keyword search: communes whose name contains "Saint-Malo"
GET /wfs?s=https://data.geopf.fr/wfs/ows&typenames=ADMINEXPRESS-COG.LATEST:commune
    &like=ADMINEXPRESS-COG.LATEST:nom_officiel:*Saint-Malo*
Property names for a type follow from its features (or from /wfs?s={wfs-uri}&typenames={type}, the type's metadata page).
Exact match: the commune with INSEE code 75056 (Paris)
GET /wfs?s=https://data.geopf.fr/wfs/ows&typenames=ADMINEXPRESS-COG.LATEST:commune
    &eq=ADMINEXPRESS-COG.LATEST:code_insee:75056
Namespace prefixes
Each prefix in the property path is declared from the service's own namespace list (the one it advertises for its feature types); the exact xmlns declarations sent upstream are in the document's PROV (prov:hadPrimarySource, the upstream GetFeature URL). An unknown prefix is a 400.
Raw FES: filter=
A hand-written FES 2.0 document, URL-encoded, forwarded as the upstream FILTER parameter unchanged — for anything eq/like cannot express (ranges, fes:And/fes:Or, spatial operators). Declare your namespaces yourself, and do not combine it with bbox: the upstream rejects the pair (put a fes:BBOX inside your filter instead). filter, eq and like are alternatives.
GET /wfs?s=https://data.geopf.fr/wfs/ows&typenames=ADMINEXPRESS-COG.LATEST:commune
    &filter=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"
                  xmlns:a="http://ADMINEXPRESS-COG.LATEST">
               <fes:PropertyIsGreaterThan>
                 <fes:ValueReference>a:population</fes:ValueReference>
                 <fes:Literal>200000</fes:Literal>
               </fes:PropertyIsGreaterThan>
             </fes:Filter>

How do I access older data (temporal access)?

Memento (RFC 7089)
A /wms layer with a time dimension supports Memento-style temporal negotiation: its URI is the original resource (latest data) and acts as its own TimeGate. Send an Accept-Datetime: Thu, 25 Jun 2020 12:00:00 GMT header and the wrapper replies 302 to the corresponding memento — the same URI with a time= component identifying a 30-day window ending at the requested date. time= is memento URI syntax minted by the TimeGate, not a query knob. Memento responses carry Memento-Datetime and a Link (rel="original timegate") header.

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. Services that advertise the standard stored query receive:

…?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature
  &STOREDQUERY_ID=urn:ogc:def:query:OGC-WFS::GetFeatureById
  &ID=commune.1

All other services receive the standard RESOURCEID parameter instead. A service may fail either request; the wrapper then answers with the upstream's own error, in the response and in its PROV.

Feature panel

What do the properties in the feature panel mean?

Property labels
Property keys are URIs from the wrapper's vocabulary for the feature type's data model, or standard RDF predicates (rdf:type, owl:sameAs, …) for SPARQL results. Full URI keys are shown as their local name (the part after # or the last /); clicking opens the definition. CURIE-style keys such as rdf:type expand to their full URI and link likewise.
rdf:type
Present on all WFS features. The value is a link to the feature type definition in the local vocabulary. For SPARQL DESCRIBE results the type URI from the upstream RDF graph is shown directly.
_droppedGeometry
A GML geometry element in the response uses a type not yet supported by the viewer. The value is the unsupported element name (e.g. Tin, Grid, LinearGrid). The feature is shown without geometry.

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

The RDF/XML and Turtle outputs carry geometry as a locn:geometry XML literal containing the raw GML in the upstream coordinate reference system (e.g. EPSG:2154). The GeoJSON and JSON-LD outputs project all coordinates to WGS 84 and encode the geometry as a GeoJSON object, so 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 — for example the WFS GetFeature call. This lets you inspect or replay the raw upstream response independently of the wrapper.

Access

Why do I see 429 Too Many Requests errors?

To protect the upstream services from excessive load, rate limiting is in place: each IP address may make 50 requests per 10 minutes. The allowance refills continuously, so after hitting the limit you regain roughly one request every 12 seconds. Requests over the limit receive HTTP status 429.

Registered heavy users can bypass the limit with an API key, sent as an HTTP header:

Authorization: Bearer <your-api-key>

Contact the operator (see below) to request a key.


OntologyCentral, 2026.