Download shapes as GeoParquet

Every area of a boundary release in one GeoParquet file, ready for DuckDB, BigQuery, QGIS or GeoPandas. The shapes match the tiles exactly, borders included, and each row carries the same id and code, so values join straight on.

get
/map-resources/{geography}/{release}/features

Good to know

  • tier is required. Use full for analysis, or medium or low for a lighter file.
  • A bbox column lets your database skip areas outside the region you're querying.
  • Get values for tiles with format=parquet gives you the matching values table.
  • geographystringrequired

    A geography type id, e.g. constituency or ward.

  • releasestringrequired

    A boundary release id, e.g. 2024-07-uk-bgc, or latest for the geography's newest release: the one /boundary-releases:resolve chooses for the furthest date. A response to latest names the release it read in Content-Location. A geography whose newest month holds several releases that differ in more than coverage, or that has a release whose id carries no month, is refused with 409 and the releases that could be newest.

  • tierstringrequired

    The detail to download. full is the release's own geometry; each coarser tier drops detail smaller than 10, 100 or 1,000 metres.

    One offullhighmediumlow
  • formatstringoptional

    The representation, GeoParquet 1.1 or GeoJSON.

    One ofgeoparquetgeojson
    Defaultgeoparquet
  • Rangestringoptional

    One byte range of the file, as bytes=start-end, bytes=start- or bytes=-length. This is how a PMTiles client reads an archive: the header, then a directory, then only the tiles it needs. Several ranges in one request are not supported and get the whole file, as does an If-Range that no longer matches the ETag. Files stored gzipped (the GeoJSON downloads) are always sent whole.

Returns

string

The GeoParquet or GeoJSON file.

  • 400A query parameter is malformed or its cursor is not valid for this result set.
  • 404No resource matches that identity.
  • 416The range starts past the end of the file. Content-Range gives the file's length as bytes */length.
  • 503The referenced build artifact has not been built yet.

Every error has the same shape. See Errors for how to handle them.

Show the precise behaviour

The flat form of the resource, for a warehouse or a GIS that holds features rather than tiles: GeoParquet 1.1 with one row per area, carrying the same id, code and name as the tiles, its shape as WKB in OGC:CRS84, and a bbox covering column a reader can filter on. Each tier is compiled from the same shared-arc generalisation the tiles are drawn from, so neighbours share their borders exactly, and the ids are the ones a join table publishes, so values join by id or code without reading a tile. Every tier is published, full included, and its size and SHA-256 are listed under features in the descriptor. A coarse tier keeps every border shared but is not guaranteed to be a valid polygon everywhere, as the descriptor's generalisation says. The file's uk-data-atlas metadata names the resource, tier, attribution and publisher file hash, so a copy loaded on its own is still citable. format=geojson returns the same features as an RFC 7946 FeatureCollection, for the tools that open GeoJSON directly. Each feature has the same id, and code and name properties; coordinates are written to six decimal places, about 0.1 m. The file is stored gzipped, so a client sending Accept-Encoding: gzip receives it with Content-Encoding: gzip and one that does not receives it decoded. The two encodings have different ETags, and the descriptor's bytes and contentHash describe the decoded GeoJSON. The GeoParquet file honours byte-range requests, so DuckDB, GDAL or any reader that fetches Parquet over HTTP can read its footer and only the row groups it needs. The GeoJSON is always sent whole.