“Kaartbladen”: map sheets

Quick link to the tiling schema as used on GeoTiles.nl.

The blue ’tiles’ form the basis for the GeoTiles.nl interface and data distribution structure. Their size, shape and name were not chosen arbitrarily and adhere to the naming convention originating from paper topographic maps. Unfortunately, public documentation on these sheets is scattered. Therefore, I compiled a summary of the available documentation, and tried to link various schemas together. Furthermore, I would like to introduce a compatible convention that combines sheets with the convenience of tiles.

Part of the Rotterdam harbour area, a 15×6,25 km slice, divided over three sheets as shown on GeoTiles.nl.
(Background: PDOK Achtergrondkaart)

Map sheets, known as ‘kaartbladen’ in Dutch, are standardised regions for map printing and distribution. Sheets are not necessarily consistent in shape and size, as they follow natural boundaries and were designed with their (field) usage in mind. Tiles serve a similar purpose in data processing but are typically consistent in shape and size. Both systems are used to reduce the size of a dataset to something that is convenient to be viewed or processed ‘at once’.

Why care about map sheets or tiles? The larger the region of interest compared to the sheet or tile, the higher the chances of working on adjacent units. Neighbouring tiles should thus be easy to identify and read. The sheet index of Dutch maps has changed repeatedly over the years, and it was never trivial to identify a neighbouring map sheet without knowledge of the sheet index. As the user shifts from a person reading a single map sheet to a computer(machine learning, big data) analysing a map, standardised identifiers to sections of the map are of importance. Furthermore, they simplify combing resources.

An alternative to standardised units is a processing/clipping service, such as the TOP10NL download service. This tool provides a download of the features overlapping the region of interest on demand. As users are able to narrow down their area of interest, there will be less overhead in the transfer of additional, unused material. However, such set-up requires processing on the server side. Moreover, these services merely provide tiles on demand. Even ’tileless’ distribution, without on-demand processing, such as in the GeoTiles data cube, is in fact a form of tiled distribution. The tiling schema, here chosen to be compatible with that of AHN, is handled seamlessly by the underlying Zarr library.

Here I present a brief introduction to the history of Dutch national topographic maps, and their subdivisions in map sheets. Where available I provide GIS-ready sheet indices for map generation or to index data. Moreover, I suggest a new, compatible standard to sheet identification for automated processes.

Dutch sheets & standards

The national (state) maps are definitely not the oldest maps in the nation. However, they were compatible nor aligned. The Kraijenhoffkaart was the first attempt to map the whole nation based on a single network of triangulations. Its successor, the Rijksdriehoeksmeting and associated Rijksdriehoekscoördinaten, commonly referred to as RD-coordinates, published in 1918, are still in use as the national coordinate system.

1798-1822: Kraijenhoffkaart

Sheet index of the Kraijenhoffkaart.
(Source: VU Amsterdam)

The oldest national map, the Kraijenhoffkaart, consists of only eight map sheets. To the best of my knowledge, this sheet index is no longer in use.

1850-1864: Topografische Militaire Kaart (TMK)

Sheet index Topografische Militaire Kaart.
(Source: Kadaster)

The first sheet index that resembles the current sheet index is the ‘Topografische Militaire Kaart’ (TMK). Published between 1850 and 1864 in ~62 sheets, each subdivided in four quadrants. See the sheet index (pdf) at the Kadaster (mirror), or as a more detailed illustration (jpg, 1895?) at the TU Delft Trésor (mirror).

The full atlas can be seen online at the library of the Vrije Universiteit Amsterdam.

1865-1930: Bonnebladen

Sheet index Bonnebladen.
(Source: TU Delft Trésor)

The “chromo-topografische kaart van het Koninkrijk der Nederlanden op de schaal van 1:25.000”, more commonly known as ‘Bonnebladen’ added a large scale national map to the collection. Two sheets have the same size (10×12½ km) as the later introduced TOP25, but appear to have a different origin, and are shifted about half a tile. The current sheet index overlain on the sheet index of the Bonnebladen (alternative) does not provide a convincing match. Furthermore, there may be projection differences.

1930-2016: Topographic map

Sheet index topographic map (1:50 000), 1930-2016.
(Background: TOP1000NL, Kadaster)

With the introduction of the topographic map in the 1930’s, the sheet index of the Topografische Militaire Kaart (TMK) was retained for larger map scales, even though the projection changed by the introduction of RD in 1918. However, several changes were made over the years (TOP25, TOP50). The most prominent change was in the 1980’s, when sheets over Zeeland (south west) were shifted half of a sheet north compared to the TMK.

Later variations, in 2009, led to the irregular map sheets shown here. The extended sheet 20 must have been convenient as not to split Lelystad (> 1950) in two, as well as limit the sheet area covered by water. Other newly acquired land, such as the Zandmotor (2011) and Maasvlakte II (2013) fit well within the existing tiles of 30W and 36O respectively. Some sources add sheet 63O west of 19 (Beverwijk), as map sheet 19W extends only just out to sea.

The largest deviations from the original numbering of the TMK are found in Zeeland and Limburg. Here the map sheets have been replaced and renumbered in the 1980’s, likely to simplify the map sheets as well to follow natural boundaries more closely.

Sheets 36, 37, 42, 47, 48, 53 and 54 were replaced by 64, 65, 66 (not shown, west of 67) and 67 that are shifted north by 6¼ km (one 1:10 000 sheet).
(Background: TOPraster, Kadaster)
Sheets 59, 60, 61 and 62 of the TMK were replaced by sheets 68 and 69, that are shifted half a sheet (10 km) east-west compared to their original counterparts.
(Background: TOPraster, Kadaster)

Official sources of the exact boundaries of the map sheets were difficult to find. Some schemas are included in historic releases of the BRT. The data below is (re)distributed by the province of Overijssel, and contains all map sheets from the latest version (2009 – 2016). The boundaries appear to be consistent with the boundaries in the in sheet indexes distributed by the Kadaster till late 2015.

ScaleSize (w×h)Sheet indexMirror
1:10 00010×6¼ kmNGRShapefile (.zip), pdf
1:25 00010×12½ kmNGRShapefile (.zip), pdf
1:50 00020×25 kmNGRShapefile (.zip), pdf
Maps sheets as distributed by the province of Overijssel.

The map sheets used for the 1:50 000 scale maps were comparable to the original, and more fine grained structures were derived for large scale maps (1:25 000 and 1:10 000). The smaller sheets at larger scales are bound and numbered by the following sequence of subdivisions, although there are local deviations for convenience.

In 1930 Rijkswaterstaat made a similar change the sheet index of their ‘Waterstaatskaart’, moving from quarter sheets, like the TMK, to half sheets (east and west). However, it appears they did not realign the sheets over Zeeland and Limburg and remained with the original numbering. The ‘Digitaal Topografisch Bestand‘, DTB, from Rijkswaterstaat (NGR, DMC) is comparable to TOP10NL (1:10 000). Again, some tiles have been enlarged or shrunk, for practical reasons, such as describing islands in single tiles. Like the Waterstaatskaart, the DTB follows the sheet numbering from the TMK.

1997-now, AHN: streamlined version of the topographic map

Sheet index for comparison to TOP50NL, reconstructed from the AHN sheets.
(Background: TOPraster, Kadaster)

Likely with the computer in mind, a more consistent sheet index is used for the distribution of the nationwide digital elevation model AHN (Actueel Hoogtebestand Nederland) and more recent Basisvoorziening 3D. The sheets over Limburg and Zeeland are still shifted compared to the TMK, but due to the distribution in smaller tiles, there is no overlap.

The sheet index as published here is derived from the sheet indices of AHN 1, 2 and 3 and the yearly coastal scans. The sheet index at comparable levels to TOP50NL, TOP25NL and TOP10NL has been reverse engineered from the smaller sheets of AHN.

For the distribution of AHN2 smaller ‘subunits’ were initially used. These subdivided the original 5×6¼ km tiles into another 5×5 tiles of 1×1¼ km. These units are currently in use at GeoTiles.nl. A portion of AHN3 or AHN4 of this size fits conveniently in the memory of most modern workstations.

ExampleSize (w×h)Sheet indexNotes
7W20×25 kmShapefile (.zip)Comparable to TOP50NL.
Divided in two: east (E) and west (W)
7D10×12½ kmShapefile (.zip)Comparable to TOP25NL (1:25 000)
Divided in 2×4 quadrants (A-H)
7DZ10×6¼ kmShapefile (.zip)Comparable to TOP10NL, DTB
Divided in two: north (N) and south (Z)
7DZ15×6¼ kmShapefile (.zip)Divided in two: east (2) and west (1)
7DZ1_041×1¼ kmShapefile (.zip)Divided in 5×5 sheets (01-25)
Subunits used for the distribution of AHN. Example of the map sheets over Groningen station. All sheets derived from a reconstructed sheet index at TOP50 level.

2016-now: a more regular sheet index

Comparison between the map sheets of the TMK and map sheets introduced in 2016.
(Adapted from Kadaster.)

In 2016 the tiling structure of the topographic map changed to a systematic pattern of sheets, equal to the original index of the TMK for the TOP50raster (1:50 000) products. The only remaining drawback is irregularity of the naming of the sheets at 1:50 000 level and above.

Note that numbering of the sheets of the TOP100NL and smaller scale maps (TOP250NL, TOP500NL and TOP1000NL) is different and not linked to the sheets of TOP50NL and larger scales. Furthermore, no ‘official’ TOP10NL sheet index exists, but it may be reconstructed from the higher scale levels. For the sheet indices listed below, TOP50NL was complemented with sheets of which the existence may be inferred from its neighbouring east (O) or west (W) complement.

ScaleSize (w×h)Sheet indexNotes
1:10 00010×6¼ kmShapefile (.zip)*, pdf
1:25 00010×12½ kmShapefile (.zip)⁺, pdf
1:50 00020×25 kmShapefile (.zip)⁺, pdf
1:100 00040 × 50 kmShapefile (.zip), pdf
1:250 000100 × 125 kmShapefile (.zip), pdf
1:500 000200 × 250 kmShapefile (.zip), pdfFour sheets
1:1 000 000400 × 500 kmShapefile (.zip), pdfSingle sheet
Maps sheets as extracted from recent (2019) TOPNL releases.
* Derived from TOP50NL, including inferred sheets. ⁺ Includes inferred sheets.

Compatibility with the sheet index of AHN

Comparison between sheets used in TOP10NL and with AHN. Marked in red are tiles with different names, sheets marked in blue have equal identifiers, sheets in gray appear in the one dataset only.
(Background: TOPraster, Kadaster)

As the sheet index is again based on the TMK, there are inconsistencies with the regular sheet index introduced for AHN. However, all tile numbers are unique. Therefore, a 1:1 conversion between the sheet identifiers is possible at the 1:10 000 scale. At this scale the offsets in Zeeland and Limburg align with individual sheets. A convenient poster of both sheet indices and their naming differences is available. For automated processing, a translation between the two schemas is possible based on an index of the 110 tiles (.csv file in archive) with inconsistent names across versions.

At the 1:25 000 scale a unique match between the sheets is possible as well, except for the sheets in Zeeland, that are offset to the north. At the 1:50 000 scale there is also no match possible in Limburg, and tiles overlap. Note that tile 63 is known as 72 in AHN (compatible at all scales). In AHN4 sheet 72O of AHN3 was replaced by 18O, that is now west of 18W. Hence, this sheet is the only sheet now known by three names: 63O, 72O and 18O.

ScaleSize (w×h)Sheet indexInconsistent/overlap
Subunits1 × 1¼ kmShapefile (.zip)None, consistent
AHN5 × 6¼ kmShapefile (.zip)None, consistent
1:10 00010×6¼ kmShapefile (.zip)None, consistent
1:25 00010×12½ kmShapefile (.zip)Zeeland
1:50 00020×25 kmShapefile (.zip)Zeeland and Limburg
Combined sheet index of TOPNL and AHN, including inferred sheets. Consistent sheet indices include a conversion table (.csv) between AHN and TOP numbering.

Extended coverage: extensions to the sheet index by OpenTopo

Approximate coverage of the aerial photograph (Beeldmateriaal) of 2022, extending outside of the sheets defined in AHN (gray and blue). Shown in red are the additional sheets defined by NLExtract/OpenTopo.

Mapping needs and data products may extend beyond the tiles defined by AHN and TMK. Especially the aerial photograph is known to extend far beyond the boundaries of AHN. To account for these regions, OpenTopo extended the sheet index by 62 sheets at TOP50 level.

Their sheet index is compatible with the one used by AHN, except for sheet 76O/76W, which are named 74O/74W in AHN. Like in AHN, sheets in Limburg and Zeeland at 1:50 000 and 1:25 000 level overlap with their neighbours.

ScaleSize (w×h)Sheet indexInconsistent/overlap
Subunits1 × 1¼ kmShapefile (.zip)None, consistent
AHN5 × 6¼ kmShapefile (.zip)None, consistent
1:10 00010×6¼ kmShapefile (.zip)None, consistent
1:25 00010×12½ kmShapefile (.zip)Zeeland
1:50 00020×25 kmShapefile (.zip)Zeeland and Limburg
Sheet index as extended by OpenTopo.

A compromise, as used on GeoTiles.nl

Sheet index at AHN level, as used on GeoTiles.nl

For use on GeoTiles.nl, the extended sheet index of OpenTopo was adapted to be fully compliant with AHN. To incur the least possible conflict, sheets 74 and 76 were swapped. Moreover, sheets not used in of the data provided were removed.

The sheet index at AHN level and finer comes with columns indicating the availability of the various iterations of AHN and aerial photographs. For convenience areas with sparse coverage were ignored.

ScaleSize (w×h)Sheet indexInconsistent/overlap
Subunits1 × 1¼ kmShapefile (.zip)None, consistent
AHN5 × 6¼ kmShapefile (.zip)None, consistent
1:10 00010×6¼ kmShapefile (.zip)None, consistent
1:25 00010×12½ kmShapefile (.zip)Zeeland
1:50 00020×25 kmShapefile (.zip)Zeeland and Limburg
Sheet index as used on GeoTiles.nl.


There are infinite alternatives to the current sheet index/indices. However, pyramids are very relevant due to their popularity in web mapping applications. Coordinate grids are comparable alternatives at a fixed scale. I will briefly introduce both of them. Last, I would like to introduce a convention with the benefits coordinate grids, but with backwards compatibility to the existing sheet indices.


Orange: zoom-level 10 in Web-Mercator (EPSG:3857) based tiling schema; black: zoom-level 4 as defined in the ‘Nederlandse richtlijn tiling’.
(Background: BRT background map in RD, EPSG:28992)

Image pyramids typically halve or double the resolution between zoom levels. The system is popular in web mapping solutions (e.g. Google Maps, OpenStreetMap), where each tile is split in four tiles of equal size at each subsequent zoom level, thus quadrupling the number of pixels (2×2). Relevant in the context of map sheets is the Dutch tiling standard (‘Nederlandse richtlijn tiling’). Instead of the typically used Web Mercator projection (EPSG:3857), Rijksdriehoekscoördinaten (EPSG:28992) are used. The standard defines the bounds and scale set to be used. Simple relations to determine the tile coordinates are on and vice versa.

An overview of the extent of the schema, and the tiles, is available as Geopackage up to zoom level 10. Columns are counted left to right, rows are counted top to bottom, starting at zero. This convention is inherited from computer science, where image coordinates are typically with respect to the top left corner of the image (matrix).

As tiles are square, there is no direct match to the map sheets. However, the area covered by the tiles at various zoom levels are comparable to the existing map sheets.

Zoom level (z)Width, height (m)Area (km²)Comparable
0880 803.84775 815
1440 401.92193 953TOP1000 (200 000 km²)
2220 200.9648 488TOP500 (50 000 km²)
3110 100.4812 122TOP250 (12 500 km²)
455 050.243 031TOP100 (2000 km²)
527 525.12758TOP50 (500 km²)
613 762.56189TOP25 (125 km²)
76 881.2847AHN (62½ km²)
83 440.6412
91 720.323
10860.160.73Subunit (1¼ km²)
Comparison between the area covered by the standardised map sheets and tiles.
Orange: zoom-level 10 in Web-Mercator (EPSG:3857) based tiling schema; black: zoom-level 4 as defined in the ‘Nederlandse richtlijn tiling’, including extents.
(Background: EuroGeographics, OpenRegionalMap)

Coordinate grids

An alternative, but intuitive, tiling schema is used for the areal photography as of 2021 (‘BM5’). Each tile is 1×1 km and numbered by its left and top coordinates in RD (meters). Major disadvantage is incompatibility with the previous schemas due to the different ratio of width and height. Furthermore, it is inconvenient that the coordinates are not guaranteed to be positive, resulting in ‘funny’ tile names over the North Sea that require an ambiguous minus sign. Note the incompatibility with ‘kilometerhokken‘ and ‘uurhokken‘ used in biodiversity mapping that typically use the south west corner (lower left) as identifier.

Statistics Netherlands (CBS) aggregates statistics in 100×100 m and 500×500 m squares, identified by the coordinates of their lower left corner. On a European scale, Eurostat provides various tiling grids of 1 to 100 km cell size, including a basic population statistic and country information (coordinate reference system: ETRS89 Lambert Azimuthal Equal-Area).

ScaleSize (w×h)Sheet indexNotes
z 1 – 10Geopackage (.zip)Tilingrichtlijn
1×1 kmShapefile (.zip)BM5
100 mShapefile (.7z)CBS
500 mShapefile (website)CBS
1 – 100 kmShapefile (website)Eurostat
Sheet indices derived from coordinate grids.

A compatible convention

The major disadvantage of the current tiling structure is that there is no direct link between adjacent tiles. A lookup in the tiling schema is necessary to find the name of an adjacent tile. Especially in automated processing this a relatively complex and possibly error prone process. At GeoTiles.nl, this was solved by adding an overlapping boundary to each tile. With this overlap, each tile may be used as a stand-alone unit, given that the region of interest will not exceed the overlap. This is especially useful if a small neighbourhood is required within a process, but comes at the cost of increased data replication. If it would be easier to access adjacent tiles, the overlap could be identified ‘on the fly’, preferably with only simple arithmetic.

To find adjacent tiles with ease, the sheet identifiers have to be simplified. Note that there is no need to alter the sheet index! There are two, not necessarily conflicting, options:

  1. Sheet identifiers based on (corner) coordinates, comparable to a coordinate grid, but with rectangular instead of square tiles. Only the size of a sheet is required to find adjacent tiles or find the sheet overlapping a coordinate. Major drawback are the large number of zeros required in the identifier, as larger scale sheets have boundaries that require decametre precision. Furthermore, there will be negative identifiers at sea.
  2. Sequential sheet identifiers, derived from (corner) coordinates, comparable to an image pyramid at a fixed zoom level, with rectangular instead of square tiles. No additional information is required to find an adjacent tile. The size of a sheet and an optional offset are required to find the sheet overlapping a specific coordinate. However, thanks to the offset, negative sheet identifiers could be circumvented as much as possible. Furthermore, it is possible to circumvent potentially confusing identifiers by offsetting the index, like with RD-coordinates.

As a basis for the numbering schema, the lower left coordinates of the area of interest are used. This is intuitive from a cartographic perspective, where the (apparent) origin of the coordinate system is in the lower left corner of the map. The lower left corner of the existing map sheets is at 0 m E, 300 000 m N. The practical bounds of for a national mapping of the European Netherlands are defined by:

Boundaries of RDNAPTRANS 2008 and 2018.
(Background: EuroGeographics, OpenRegionalMap)

Although, at the time of writing, the switch to RDNAPTRANS™ 2018 is not yet completed, the new, extended coverage of the quasi-geoid and correction grid of this transform provide a natural bounding box for a sheet index. The extremes are further too the south west than the previously found geographic extremes of the Dutch territory. However, all likely (future) map sheet needs are covered. To align with the existing sheets, the lower left corner has to be at -100 000 m E and 200 000 m N to cover the full region of validity of RDNAPTRANS and align with the existing sheets.

With the offset defined, the following grids, aligned with the existing sheets, were derived. They include the original sheet identifiers where available.

ScaleSize (w×h)Sheet indexNotes
Subunits1×1¼ kmGeoPackage
AHN5×6¼ kmGeoPackage
1:10 00010×6¼ kmGeoPackageTOP10
1:25 00010×12½ kmGeoPackageTOP25
1:50 00020×25 kmGeoPackageTOP50
Coordinate grid tile index, including inferred sheets.

Simple relations link the sheet identifier (column, row) to the bounding box as well as coordinates to the sheet they are on:

From sheet (column, row) to bounding coordinates:

xmin = ox+sx*col
ymin = oy+sy*row

xmax = ox+sx*(col +1)
ymax = oy+sy*(row +1)

From coordinates (x, y, in RD) to sheet:

col = floor((x-ox)/sx)
row = floor((y-oy)/sy)

Or, for the left and bottom coordinates of a known tile:

col = (left-ox)/sx
row = (bottom-oy)/sy

The following parameters (ox, oy, sx, sy) cover the different sheet sizes of sheets in the equations above.

ScaleOffset (ox, m)Offset (oy, m)Size (sx, m)Size (sy, m)
Subunits-100 000200 0001 0001 250
AHN-100 000200 0005 0006 250
1:10 000-100 000200 00010 0006 250
1:25 000-100 000200 00010 00012 500
1:50 000-100 000200 00020 00025 000

With this convention it is trivial to find neighbouring tiles or sheets: add/subtract one to/from the row or column identifier. The sheet indices provide a lookup table if a traditional sheet identifier is provided or should be provided to the user (when available).


There is a 100+ year tradition in dividing the country in workable chunks. Changes to the standard require renaming at best, reprocessing at worst. Therefore, developments to the sheet index should preferably not break backwards compatibility. The current sheet index of the topographic map is largely compatible with its predecessors of the last three decades, although a conversion table is needed.

Major drawback of all sheet indices presented was that there is no direct link between the sheet identifier and bounding box of the map sheet, nor is there a link to its adjacent units. This direct relationship is a major advantage of tiling schemas. The map sheets introduced in 2016 have all properties necessary be compatible with a tiling schema, and adaptation to a standard that provides ‘best of both worlds’ is trivial.


I would like to thank Jochem Lesparre and Frank Steggink for their comments and suggestions. Furthermore, I would like to thank the Kadaster, EuroGeographics and OpenStreetMap for the background maps. The TU Delft Trésor and the book “200 jaar kaarten maken in beeld (1815 – 2015)”, by Nico Bakker et al. (2015), proved to be useful resources on the history of map making.


This unofficial overview is to the best of my knowledge, no guarantee on availability, completeness, correctness or fitness for any particular purpose is implied. Furthermore, equal sheet identifiers do not guarantee equal map properties (e.g. coordinate reference systems)! Always verify first that the data in the two sheets is compatible.

One Response to “Kaartbladen”: map sheets

  1. Lars says:

    Thanks for all the work you have put into writing all of this down! Especially with regards to the AHN index and connecting them to the TOP-subdivisions in such an organized manner!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.