Demo version. Please do not buy: purchases are test only and will not be processed.

Portugal administrative boundaries

29 districts and islands, 308 municipalities and 3,259 freguesias, each with its official code, in GeoJSON, TopoJSON, GeoPackage, Shapefile, layered SVG, CSV and SQL.

Get the free sample
districts and islands
29
municipalities
308
freguesias
3,259
postal code zones
522
edition
Outline of Portugal

One of the examples in the package

A layered SVG coloured from a table with a few lines of plain JavaScript: every entity is a path whose id is its official code. The page shows a part of the country: the two levels share the same borders, so they fit without gaps. The package has every entity of every level.

Lisbon: its municipalities, coloured by area, among the neighbouring districts.

What is in the package

Levels and identifiers

LevelEntitiesIdentifier
country1PT
districts and islands29PT-P-<official code>
municipalities308PT-M-<official code>
freguesias3,259PT-L-<official code>
postal code zones522PT-Z-<official code>-<postal code>

Every entity has the same identifier in every file: it is the feature id in GeoJSON and TopoJSON, the id of the path in SVG and the id column of the tables.

Formats and scales

Format full 100m 1km 10km light
GeoJSON 116.0 MB 6.7 MB 1.8 MB 15 KB 627 KB
TopoJSON 15.9 MB 2.1 MB 1.2 MB 10 KB 318 KB
Shapefile 94.7 MB 6.0 MB 2.0 MB 11 KB 503 KB
SVG - 7.0 MB 1.7 MB 15 KB 653 KB
  • full: the boundaries as published by the source.
  • 100m: simplified within 100 m and coherent: freguesias, municipalities and districts and islands share exactly the same border vertices.
  • 1km: simplified within 1 km and coherent like 100m, every level: the whole country on a web map.
  • 10km: simplified within 10 km and coherent, country and districts and islands only: small maps and maps of many countries.
  • At the borders with the neighbouring countries (Spain) the 100m, 1km and 10km boundaries share the same vertices as in their packages, so the maps fit without gaps or overlaps.
  • light: country and districts and islands only, each level simplified on its own to a small file.
  • GeoJSON: one FeatureCollection per level, WGS84. TopoJSON: all the levels in one topology, shared borders are shared arcs.
  • GeoPackage: data/geopackage/pt.gpkg (108.2 MB), one file for QGIS and ArcGIS with every level at every scale as a layer (municipalities_100m) with its spatial index, and every table of the package.
  • Shapefile: one per level and scale, WGS84, UTF-8; the columns longer than ten characters are shortened (region, province, abbrev).
  • SVG: one file per level and one with every level as a layer, in a Lambert conformal conic projection; they open as layers in Illustrator, Figma and Inkscape.
  • Postal code zones: data/geojson/postal_code_zones.geojson (17.3 MB), the municipalities divided by postal code, from the official addresses, in full detail; the identifier carries the official code of the municipalities and the postal code. Where there is one postal code the zone is the whole territory.
  • SQL: a script for PostGIS, one for MySQL 8 and one for SQL Server (6.8 MB each). It creates one table with every entity of every level, its 100m boundary in WGS84 and its indexes.
  • JSON: data/json/tree.json (346 KB), the levels nested and sorted by name, without boundaries: what the select boxes of a form need.

Tables

CSV, UTF-8. Names in EN, IT, ES, FR, DE, NL, PT, besides the official one.

FileRowsContent
tables/country.csv 1 The country: names, population, bounding box, centre and label point.
code, name, population, min_lat, min_lng, max_lat, max_lng, center_lat, center_lng, label_lat, label_lng, id, name_en, name_it, name_es, name_fr, name_de, name_nl, name_pt
tables/provinces.csv 29 The districts and islands: official code, abbreviation, the code of the parent, names, area, population, bounding box, centre and label point.
code, name, abbreviation, region_code, area_km2, population, min_lat, min_lng, max_lat, max_lng, center_lat, center_lng, label_lat, label_lng, id, name_en, name_it, name_es, name_fr, name_de, name_nl, name_pt
tables/municipalities.csv 308 The municipalities: official code, the codes of the parents, names, area, population, elevation in metres (of the centre, or lowest and highest point, as the official source gives it), bounding box, centre and label point.
code, name, province_code, province_abbreviation, region_code, cadastral_code, chief_town, area_km2, population, elevation, elevation_min, elevation_max, elevation_mean, min_lat, min_lng, max_lat, max_lng, center_lat, center_lng, label_lat, label_lng, id, name_en, name_it, name_es, name_fr, name_de, name_nl, name_pt
tables/localities.csv 3,259 The freguesias: official code, the codes of the parents, names, area, bounding box, centre and label point.
code, name, municipality_code, province_code, area_km2, min_lat, min_lng, max_lat, max_lng, center_lat, center_lng, label_lat, label_lng, id, name_en, name_it, name_es, name_fr, name_de, name_nl, name_pt
tables/postal_codes.csv 4,233 The postal codes of the municipalities and freguesias, one row for each pair; for the municipalities, with the identifier of the zone that postal code covers.
id, level, code, postal_code, zone_id
tables/codes.csv 3,597 Every entity in other datasets, as Wikidata declares it: the Wikidata item, ISO 3166-2, GeoNames and the OpenStreetMap relation.
id, level, code, wikidata, iso_3166_2, geonames, osm_relation
tables/names.csv 3,642 Every name an entity is written with (official, each side of a bilingual name, translated), without accents and as a slug: to match a file that has names and no codes.
id, level, name, name_ascii, slug, kind
tables/neighbours.csv 20,308 The entities of the same level that share a border, both ways, with the length of the shared border in km.
level, id, neighbour_id, shared_border_km
tables/history.csv 0 The suppressed municipalities with the one that replaced them, for archives that still have the old codes; no rows where the official source gives no history.
code, name, province_code, replaced_by_code, replaced_by_name
tables/changes.csv 0 What changed from one edition of the package to the next, one row per entity added, removed, renamed, moved or with a new boundary: the same as CHANGELOG.md.
edition, date, level, id, name, change, before, after

Files

All the 137 files of the package, with their size.

ATTRIBUTION.md2 KB
CHANGELOG.md0 KB
LICENSE.md2 KB
README.md14 KB
data/geojson/100m/country.geojson168 KB
data/geojson/100m/localities.geojson4.6 MB
data/geojson/100m/municipalities.geojson1.5 MB
data/geojson/100m/provinces.geojson482 KB
data/geojson/10km/country.geojson3 KB
data/geojson/10km/provinces.geojson12 KB
data/geojson/1km/country.geojson20 KB
data/geojson/1km/localities.geojson1.4 MB
data/geojson/1km/municipalities.geojson287 KB
data/geojson/1km/provinces.geojson73 KB
data/geojson/full/localities.geojson73.0 MB
data/geojson/full/municipalities.geojson30.2 MB
data/geojson/full/provinces.geojson12.8 MB
data/geojson/light/country.geojson40 KB
data/geojson/light/provinces.geojson588 KB
data/geojson/postal_code_zones.geojson17.3 MB
data/geopackage/pt.gpkg108.2 MB
data/json/tree.json346 KB
data/shapefile/100m/country.cpg0 KB
data/shapefile/100m/country.dbf0 KB
data/shapefile/100m/country.prj0 KB
data/shapefile/100m/country.shp133 KB
data/shapefile/100m/country.shx0 KB
data/shapefile/100m/localities.cpg0 KB
data/shapefile/100m/localities.dbf1,012 KB
data/shapefile/100m/localities.prj0 KB
data/shapefile/100m/localities.shp3.3 MB
data/shapefile/100m/localities.shx26 KB
data/shapefile/100m/municipalities.cpg0 KB
data/shapefile/100m/municipalities.dbf25 KB
data/shapefile/100m/municipalities.prj0 KB
data/shapefile/100m/municipalities.shp1.2 MB
data/shapefile/100m/municipalities.shx3 KB
data/shapefile/100m/provinces.cpg0 KB
data/shapefile/100m/provinces.dbf2 KB
data/shapefile/100m/provinces.prj0 KB
data/shapefile/100m/provinces.shp385 KB
data/shapefile/100m/provinces.shx0 KB
data/shapefile/10km/country.cpg0 KB
data/shapefile/10km/country.dbf0 KB
data/shapefile/10km/country.prj0 KB
data/shapefile/10km/country.shp2 KB
data/shapefile/10km/country.shx0 KB
data/shapefile/10km/provinces.cpg0 KB
data/shapefile/10km/provinces.dbf2 KB
data/shapefile/10km/provinces.prj0 KB
data/shapefile/10km/provinces.shp6 KB
data/shapefile/10km/provinces.shx0 KB
data/shapefile/1km/country.cpg0 KB
data/shapefile/1km/country.dbf0 KB
data/shapefile/1km/country.prj0 KB
data/shapefile/1km/country.shp16 KB
data/shapefile/1km/country.shx0 KB
data/shapefile/1km/localities.cpg0 KB
data/shapefile/1km/localities.dbf1,012 KB
data/shapefile/1km/localities.prj0 KB
data/shapefile/1km/localities.shp690 KB
data/shapefile/1km/localities.shx26 KB
data/shapefile/1km/municipalities.cpg0 KB
data/shapefile/1km/municipalities.dbf25 KB
data/shapefile/1km/municipalities.prj0 KB
data/shapefile/1km/municipalities.shp193 KB
data/shapefile/1km/municipalities.shx3 KB
data/shapefile/1km/provinces.cpg0 KB
data/shapefile/1km/provinces.dbf2 KB
data/shapefile/1km/provinces.prj0 KB
data/shapefile/1km/provinces.shp55 KB
data/shapefile/1km/provinces.shx0 KB
data/shapefile/full/localities.cpg0 KB
data/shapefile/full/localities.dbf1,012 KB
data/shapefile/full/localities.prj0 KB
data/shapefile/full/localities.shp58.6 MB
data/shapefile/full/localities.shx26 KB
data/shapefile/full/municipalities.cpg0 KB
data/shapefile/full/municipalities.dbf25 KB
data/shapefile/full/municipalities.prj0 KB
data/shapefile/full/municipalities.shp24.5 MB
data/shapefile/full/municipalities.shx3 KB
data/shapefile/full/provinces.cpg0 KB
data/shapefile/full/provinces.dbf2 KB
data/shapefile/full/provinces.prj0 KB
data/shapefile/full/provinces.shp10.5 MB
data/shapefile/full/provinces.shx0 KB
data/shapefile/light/country.cpg0 KB
data/shapefile/light/country.dbf0 KB
data/shapefile/light/country.prj0 KB
data/shapefile/light/country.shp31 KB
data/shapefile/light/country.shx0 KB
data/shapefile/light/provinces.cpg0 KB
data/shapefile/light/provinces.dbf2 KB
data/shapefile/light/provinces.prj0 KB
data/shapefile/light/provinces.shp469 KB
data/shapefile/light/provinces.shx0 KB
data/topojson/100m/pt.topojson2.1 MB
data/topojson/10km/pt.topojson10 KB
data/topojson/1km/pt.topojson1.2 MB
data/topojson/full/pt.topojson15.9 MB
data/topojson/light/pt.topojson318 KB
examples/choropleth-svg.html264 KB
examples/drill-down-d3.html180 KB
examples/leaflet-geojson.html590 KB
examples/lib/LICENSES.md3 KB
examples/lib/d3.min.js273 KB
examples/lib/leaflet.css14 KB
examples/lib/leaflet.js144 KB
examples/lib/topojson-client.min.js7 KB
examples/point-lookup.html495 KB
flags/PT.svg13 KB
sql/mysql.sql6.9 MB
sql/postgis.sql6.8 MB
sql/sqlserver.sql6.9 MB
svg/100m/layers.svg3.5 MB
svg/100m/localities.svg2.4 MB
svg/100m/municipalities.svg812 KB
svg/100m/provinces.svg260 KB
svg/10km/layers.svg8 KB
svg/10km/provinces.svg7 KB
svg/1km/layers.svg861 KB
svg/1km/localities.svg665 KB
svg/1km/municipalities.svg147 KB
svg/1km/provinces.svg40 KB
svg/light/layers.svg337 KB
svg/light/provinces.svg316 KB
tables/changes.csv0 KB
tables/codes.csv126 KB
tables/country.csv0 KB
tables/history.csv0 KB
tables/localities.csv854 KB
tables/municipalities.csv64 KB
tables/names.csv318 KB
tables/neighbours.csv811 KB
tables/postal_codes.csv156 KB
tables/provinces.csv6 KB

The package of Portugal is not on sale yet. You can try it now: get the free sample, Portalegre (15 municipalities and 72 freguesias) with the same files and formats.