
Rijnland water authority geoservices (ArcGIS REST)
The ArcGIS server of the Rijnland water authority, hosted by a supplier (enl-mcs.nl). Almost every service is one type of managed asset: valves, culverts, pumping stations, weirs, watercourses, flood defences. On 16 October 2026 our index held 230 layers; the current register of structures alone has 57,032 features and the watercourses 187,861 line segments. Rijnland is not listed as a publisher on data.overheid.nl or in the National Georegister, so this is the only public entry point. On reuse, Rijnland itself says it is not allowed without permission; we only show descriptions and counts.

Everything that's in it230
All services and layers on this ArcGIS server, fetched every night. Every layer has its own page with fields, geometry and a query call.
Structures in Rijnland's current register by type: most culverts (34,159 structures), then bridges and weirs
Structures in Rijnland's current register by type, oktober 2026, in structures. Total: 57,032; the largest 12 of 12 categories are shown. Culverts is 60% of the total. Counted with one statistics query on the layer (field KUNSTWERKTYPE). Layer LeggerKunstwerkVigerendPuntSymbool (point symbols); linear structures are in a separate layer.
What can you do with it?3 ideas
What does a water authority actually manage?
The register of structures counts 34,159 culverts, 15,337 bridges, 2,602 weirs and 468 pumping stations. One statistics call shows how many assets lie behind a region's water management.
Read the definitions
Most services carry a description with the definition of the asset (what is a culvert, a valve). Useful as a glossary for a story about water.
Current versus draft
The Leggers folder has the current register and the draft for consultation side by side (surface water, structures, regional flood defences). Compare the two to see what the authority wants to change.
How to process it4 steps
Browse by folder
The root holds the current assets (usually one layer per service); Leggers the legal registers; folders with a year are old snapshots.
https://rijnland.enl-mcs.nl/arcgis/rest/services/Leggers?f=json
Count by type
Statistics work: a single call returns the number per type of structure.
https://rijnland.enl-mcs.nl/arcgis/rest/services/Leggers/Legger_kunstwerkenVigerend/MapServer/0/query?where=1%3D1&outStatistics=%5B%7B%22statisticType%22%3A%22count%22%2C%22onStatisticField%22%3A%22OBJECTID%22%2C%22outStatisticFieldName%22%3A%22n%22%7D%5D&groupByFieldsForStatistics=KUNSTWERKTYPE&orderByFields=n%20DESC&f=json
Look at a few features
With outSR=4326 and f=geojson. maxRecordCount is usually 1,000; keep it to a few features as long as the licence is not open.
https://rijnland.enl-mcs.nl/arcgis/rest/services/Leggers/Legger_kunstwerkenVigerend/MapServer/0/query?where=KUNSTWERKTYPE%3D%27Gemaal%27&outFields=CODE,NAAM,KUNSTWERKTYPE&outSR=4326&resultRecordCount=5&f=geojson
Just the count
returnCountOnly gives the number of features in a layer without downloading anything.
https://rijnland.enl-mcs.nl/arcgis/rest/services/Watergang_as/MapServer/0/query?where=1%3D1&returnCountOnly=true&f=json
Interesting combinations


How high are the flood defences?
Overlay the regional flood defences on the AHN elevation model and read the crest height.


Where flooding risk and pumping stations meet
Put the pumping stations and watercourses next to the flooding maps from the Klimaateffectatlas.
Similar sources
- AWAndere waterschappen in het Nationaal Georegister not in the index yet
Many water authorities publish their register as WMS/WFS with metadata and licence in the NGR; Rijnland does not.
Waterinfo and Water Web ServicesWater level and discharge measurements in national waters; no water authority assets.
What to watch out for
- Not open according to Rijnland
Two of these services are also items in Rijnland's ArcGIS Online. There it says: copying or sharing materials is not allowed without prior permission. It is the only statement on reuse; ask permission before you publish.
- Old snapshots next to current layers
Folders such as EFM2020, EFM2021, KPI2020 and WBP6 hold old versions (e.g. Regionale kering en zone 2018). Choose deliberately; layers carry no dates.
- Test services
Pilot_data_portaal_afvalwaterketen is labelled 'Data portaal - test' on the server itself (waste water systems of Alphen aan den Rijn, Bodegraven-Reeuwijk and Waddinxveen). Do not use it as an official source.
- Server at a supplier
The address (rijnland.enl-mcs.nl) belongs to a supplier, not to Rijnland itself, and may change with a new contract.
APIArcGIS REST · read 16 Oct 2026
No key or token: the directory and all calls below worked anonymously. tested
leaf layers in 128 queryable services (206 unique names) tested
jsongeojsonpbfpng (export, WMS)
Base URL
https://rijnland.enl-mcs.nl/arcgis/rest/services
Endpoints 8
- GET
?f=jsonDirectory: version, folders and services (name + type). - GET
/{map}?f=jsonServices in one folder. - GET
/{dienst}/MapServer?f=jsonService: layers and tables (id, name, group layer or not), maxRecordCount, capabilities, projection, description. - GET
/{dienst}/MapServer/{laag}?f=jsonLayer: fields (name, type, alias, length), geometry type, maxRecordCount, supportedQueryFormats and advancedQueryCapabilities (pagination, statistics, orderBy, distinct). - GET
/{dienst}/MapServer/{laag}/queryQuery features with a where clause or spatial filter; also count (returnCountOnly) and group (outStatistics). Response in JSON, GeoJSON or PBF. - GET
/{dienst}/MapServer/legend?f=jsonLegend per layer: labels and symbols (PNG as base64). - GET
/{dienst}/MapServer/export?bbox=…&bboxSR=4326&size=600,400&format=png&f=imageMap image as PNG for a rectangle; with f=json you get a link to the image. Without bbox: error 'bbox must be specified'. - GET
https://rijnland.enl-mcs.nl/arcgis/services/{map}/{dienst}/MapServer/WMSServer?request=GetCapabilities&service=WMSWMS 1.3.0 of the same MapServer: path without /rest/ and with /WMSServer. Only for services whose supportedExtensions lists WMSServer.
Filtering platform
SQL-like where clause on the layer's fields, plus an optional spatial filter (geometry). Group and count with outStatistics.
Parameters 13
where | Condition in SQL-92 style: 1=1 for everything, text in single quotes (GEMEENTE='Zwolle'), LIKE with %, AND/OR, dates as DATE 'YYYY-MM-DD'. Required when there is no other filter. | tested |
outFields | Fields in the response, comma-separated, or * for all fields. | tested |
returnGeometry | false = attributes only (much smaller response). | tested |
outSR | Projection of the geometry in the response; 4326 = degrees (WGS84). Default is the layer's projection, here RD (28992). | tested |
f | Format: json (Esri JSON), geojson, pbf (protobuf), pjson (indented) or html (browse in the browser). | tested |
resultOffset | Pagination: number of features to skip (from 0). Use together with orderByFields for a stable order. | tested |
resultRecordCount | Maximum number of features in this response (capped at the layer's maxRecordCount). | tested |
orderByFields | Sort order, e.g. 'OBJECTID' or 'n DESC' (also on a statistics field). | tested |
returnCountOnly | true = only the number of features matching where: {"count": …}. | tested |
outStatistics | Server-side statistics: list of {statisticType, onStatisticField, outStatisticFieldName}; statisticType count, sum, min, max, avg, stddev or var. URL-encode it. | tested |
groupByFieldsForStatistics | Fields to group by with outStatistics (like GROUP BY). | tested |
returnDistinctValues | true with outFields and returnGeometry=false: the unique values of those fields. | tested |
geometry | Spatial filter: a point 'x,y' or envelope 'xmin,ymin,xmax,ymax', with geometryType (esriGeometryPoint, esriGeometryEnvelope), inSR (input projection), spatialRel (esriSpatialRelIntersects) and optionally distance + units (esriSRUnit_Meter) for a radius. | platform |
Fields of the example layer 10 · Leggers/Legger_kunstwerkenVigerend/MapServer/0 (57.032 kunstwerken)
| Name | Type | Meaning |
|---|---|---|
OBJECTID | OID | Objectsleutel |
CODE | String | Code van het kunstwerk (bv. 223-033-00058) |
NAAM | String | Naam (vaak leeg) |
KUNSTWERKTYPE | String | Soort: Duiker, Brug, Stuw, Gemaal … |
STATUSOBJECT | String | Status van het object (gerealiseerd …) |
HOOFDFUNCTIE | String | Hoofdfunctie |
BEDIENING | String | Wie bedient |
GEWOONONDERHOUD | String | Wie het gewone onderhoud doet |
STATUSLEGGER | String | Status in de legger |
OBJECTBEGINTIJD | Date | Begin van het object (vaak leeg) |
Limits and pitfalls
- At most 1.000 (meestal; 29 diensten 2.000) features per response (the layer's maxRecordCount; varies per layer, see /{layer}?f=json). If there are more, the response has exceededTransferLimit: true: fetch the rest with resultOffset and resultRecordCount. tested
- No key and no documented rate limit. Take it easy (a few requests per second) and prefer statistics or counts over fetching all features. experience
- Regarding reuse, Rijnland states in its ArcGIS Online items that copying or sharing without prior permission is not allowed. The API works anonymously, but ask for permission before publishing data; counts and descriptions are safe. experience
- ArcGIS Server 12.1, the newest of the servers in our index. Almost every service is one kind of managed asset (valves, culverts, pumping stations, watercourses) with a meaningful service description. tested
- Folders with a year (EFM2020, EFM2021, KPI2020, WBP6) are old snapshots; Leggers/…Vigerend is the current state. experience
- Errors come back with HTTP 200 and a JSON object {"error": {"code": 400, …}} ('Failed to execute query.' for an unknown field in where). Always check for an error field, not just the status code. tested
- The server gives no modification date per service or layer (no editingInfo). How current a layer is, is not stated. tested
- Group layers (with subLayerIds) have no query; query the leaf layers below them. Raster layers have no fields and no count. platform
Try it HTTP 200 · 811 ms · 16 Oct
https://rijnland.enl-mcs.nl/arcgis/rest/services/Leggers/Legger_kunstwerkenVigerend/MapServer/0/query?where=1%3D1&outStatistics=[{"statisticType"%3A"count"%2C"onStatisticField"%3A"OBJECTID"%2C"outStatisticFieldName"%3A"n"}]&groupByFieldsForStatistics=KUNSTWERKTYPE&orderByFields=n DESC&f=json
{
"displayFieldName": "",
"fieldAliases": {
"KUNSTWERKTYPE": "Kunstwerk Type",
"n": "n"
},
"fields": [
{
"name": "KUNSTWERKTYPE",
"type": "esriFieldTypeString",
"alias": "Kunstwerk Type",
"length": 50
},
{
"name": "n",
"type": "esriFieldTypeInteger",
"alias": "n"
}
],
"features": [
{
"attributes": {
"KUNSTWERKTYPE": "Duiker",
"n": 34159
}
},
{
"attributes": {
"KUNSTWERKTYPE": "Brug",
"n": 15337
}
}
]
}Shortened response, saved at harvest time. Click the URL for the real, current response.
Read from Directory: 10 folders and 96 services in the root · Layer legger kunstwerken (in force): fields · Esri: query operation (all parameters). Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building open data index.
How to fetch it
curl "https://rijnland.enl-mcs.nl/arcgis/rest/services/Leggers/Legger_kunstwerkenVigerend/MapServer/0/query?where=1%3D1&returnCountOnly=true&f=json"
Used by
- Hoogheemraadschap van RijnlandMaps and registers on the water authority's own website
More from Rijnland in our index
230 datasets in Geoservices Hoogheemraadschap van Rijnland. These changed most recently.
More in this topic
See how this page is built
bron: geoservices-rijnland
blokken: []
secties:
- ideeen
- verwerken
- koppelingen
- vergelijkbaar
- beperkingen
- code
- gebruiktDoor
cache:
tag: bron:geoservices-rijnland
ververs: na statuscheck, als de bron nieuwer is
statuscheck:
methode: services-directory (?f=json) bereikbaar, aantal diensten als noot; de
server geeft geen datums
verwacht: jaarlijks
Source: content/bronnen/geoservices-rijnland.yaml · Markdown

