A portolan/stac catalog of every known available non-AI generated field boundary.
BasisRegistratie Percelen (BRP) combines the location of agricultural plots with the crop grown. The data set is published by RVO (Netherlands Enterprise Agency). The boundaries of the agricultural plots are based within the reference parcels (formerly known as AAN). A user an agricultural plot annually has to register his crop fields with crops (for the Common Agricultural Policy scheme). A dataset is generated for each year with reference date May 15. A view service and a download service are available for the most recent BRP crop plots.
https://service.pdok.nl/rvo/gewaspercelen/atom/index.xml
Data is currently available for the years 2009 to 2025 (final) and 2026 (concept).
Browse this collection in the data browser, or start from the AGENTS.md for tested queries.
The latest edition is also available at a stable path: nl/latest/nl.parquet. All editions together through the S3 glob s3://ftw/harmonized-field-data/nl/year=*/*.parquet (see the AGENTS.md for the DuckDB setup; plain https cannot expand *).
Properties that are the same for every field are stored once, in the GeoParquet file's collection metadata rather than as columns (latest edition shown; a client reading only the table will not see them):
determination:datetime: 2026-05-15T00:00:00Zadmin:country_code: NLcrop:code_list: https://fiboa.org/code/nl/nl.csvQuery the published files in place with DuckDB; nothing needs downloading first.
This catalog is a mirror: the data is produced and licensed by RVO / PDOK and republished here as cloud-native GeoParquet and PMTiles by Fields of the World. Each edition was downloaded from the source and converted with fiboa-cli 0.21.0, vecorel-cli 0.2.15:
The conversion is deterministic and lives in fiboa-cli; changes to how a column is mapped are made there, not in this catalog.
CC0-1.0. Attribute the data to RVO / PDOK.
| nl-2012.json |
| 2013 | 751,585 | 147.1 MB | — | nl-2013.json |
| 2014 | 753,749 | 153.0 MB | — | nl-2014.json |
| 2015 | 781,377 | 178.4 MB | — | nl-2015.json |
| 2016 | 775,949 | 194.4 MB | — | nl-2016.json |
| 2017 | 773,201 | 205.5 MB | — | nl-2017.json |
| 2018 | 764,267 | 206.1 MB | — | nl-2018.json |
| 2019 | 757,126 | 205.3 MB | — | nl-2019.json |
| 2020 | 759,603 | 245.0 MB | — | nl-2020.json |
| 2021 | 758,738 | 266.7 MB | — | nl-2021.json |
| 2022 | 744,949 | 430.0 MB | — | nl-2022.json |
| 2023 | 1,370,322 | 914.2 MB | — | nl-2023.json |
| 2024 | 1,355,305 | 893.0 MB | — | nl-2024.json |
| 2025 | 1,293,962 | 721.4 MB | 507.4 MB | nl-2025.json |
| 2026 | 1,265,023 | 707.0 MB | 508.6 MB | nl-2026.json |
categorygeometry | binary | A geometry that reflects the footprint of the field, usually a Polygon. Stored in the source CRS (see proj:code), not reprojected. (spec) |
metrics:area | float | Area of the field, in square meters (m²). Must be > 0 and <= 1,000,000,000. (spec) |
hcat:name | string | The machine-readable HCAT name of the crop (Hierarchical Crop and Agriculture Taxonomy, EuroCrops). (spec) |
crop:code | string | The crop code, from the code list of the source. (spec) |
bbox | struct<xmin: double, ymin: double, xmax: double, ymax: double> | The bounding box of the field. Per-feature covering column (GeoParquet 1.1), in the source CRS. (spec) |