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.
- districts and islands
- 29
- municipalities
- 308
- freguesias
- 3,259
- postal code zones
- 522
- edition
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
| Level | Entities | Identifier |
|---|---|---|
| country | 1 | PT |
| districts and islands | 29 | PT-P-<official code> |
| municipalities | 308 | PT-M-<official code> |
| freguesias | 3,259 | PT-L-<official code> |
| postal code zones | 522 | PT-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 like100m, 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,1kmand10kmboundaries 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
100mboundary 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.
| File | Rows | Content |
|---|---|---|
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
|
Sources and licenses
The package is a derived work of the official datasets below; their publishers do not endorse it. What you may do with it is in the license of the packages.
- DGT - Direção-Geral do Território, Carta Administrativa Oficial de Portugal (CAOP), licensed CC BY 4.0
- DGT - Direção-Geral do Território, Carta Administrativa Oficial de Portugal (CAOP), licensed CC BY 4.0
- Instituto Nacional de Estatística, Base Geográfica de Edifícios, números de polícia (via OpenAddresses), licensed CC BY 4.0
- Wikidata, Labels and external identifiers of the administrative entities (translated names, codes in other datasets), licensed CC0 1.0
Files
All the 137 files of the package, with their size.
ATTRIBUTION.md | 2 KB |
|---|---|
CHANGELOG.md | 0 KB |
LICENSE.md | 2 KB |
README.md | 14 KB |
data/geojson/100m/country.geojson | 168 KB |
data/geojson/100m/localities.geojson | 4.6 MB |
data/geojson/100m/municipalities.geojson | 1.5 MB |
data/geojson/100m/provinces.geojson | 482 KB |
data/geojson/10km/country.geojson | 3 KB |
data/geojson/10km/provinces.geojson | 12 KB |
data/geojson/1km/country.geojson | 20 KB |
data/geojson/1km/localities.geojson | 1.4 MB |
data/geojson/1km/municipalities.geojson | 287 KB |
data/geojson/1km/provinces.geojson | 73 KB |
data/geojson/full/localities.geojson | 73.0 MB |
data/geojson/full/municipalities.geojson | 30.2 MB |
data/geojson/full/provinces.geojson | 12.8 MB |
data/geojson/light/country.geojson | 40 KB |
data/geojson/light/provinces.geojson | 588 KB |
data/geojson/postal_code_zones.geojson | 17.3 MB |
data/geopackage/pt.gpkg | 108.2 MB |
data/json/tree.json | 346 KB |
data/shapefile/100m/country.cpg | 0 KB |
data/shapefile/100m/country.dbf | 0 KB |
data/shapefile/100m/country.prj | 0 KB |
data/shapefile/100m/country.shp | 133 KB |
data/shapefile/100m/country.shx | 0 KB |
data/shapefile/100m/localities.cpg | 0 KB |
data/shapefile/100m/localities.dbf | 1,012 KB |
data/shapefile/100m/localities.prj | 0 KB |
data/shapefile/100m/localities.shp | 3.3 MB |
data/shapefile/100m/localities.shx | 26 KB |
data/shapefile/100m/municipalities.cpg | 0 KB |
data/shapefile/100m/municipalities.dbf | 25 KB |
data/shapefile/100m/municipalities.prj | 0 KB |
data/shapefile/100m/municipalities.shp | 1.2 MB |
data/shapefile/100m/municipalities.shx | 3 KB |
data/shapefile/100m/provinces.cpg | 0 KB |
data/shapefile/100m/provinces.dbf | 2 KB |
data/shapefile/100m/provinces.prj | 0 KB |
data/shapefile/100m/provinces.shp | 385 KB |
data/shapefile/100m/provinces.shx | 0 KB |
data/shapefile/10km/country.cpg | 0 KB |
data/shapefile/10km/country.dbf | 0 KB |
data/shapefile/10km/country.prj | 0 KB |
data/shapefile/10km/country.shp | 2 KB |
data/shapefile/10km/country.shx | 0 KB |
data/shapefile/10km/provinces.cpg | 0 KB |
data/shapefile/10km/provinces.dbf | 2 KB |
data/shapefile/10km/provinces.prj | 0 KB |
data/shapefile/10km/provinces.shp | 6 KB |
data/shapefile/10km/provinces.shx | 0 KB |
data/shapefile/1km/country.cpg | 0 KB |
data/shapefile/1km/country.dbf | 0 KB |
data/shapefile/1km/country.prj | 0 KB |
data/shapefile/1km/country.shp | 16 KB |
data/shapefile/1km/country.shx | 0 KB |
data/shapefile/1km/localities.cpg | 0 KB |
data/shapefile/1km/localities.dbf | 1,012 KB |
data/shapefile/1km/localities.prj | 0 KB |
data/shapefile/1km/localities.shp | 690 KB |
data/shapefile/1km/localities.shx | 26 KB |
data/shapefile/1km/municipalities.cpg | 0 KB |
data/shapefile/1km/municipalities.dbf | 25 KB |
data/shapefile/1km/municipalities.prj | 0 KB |
data/shapefile/1km/municipalities.shp | 193 KB |
data/shapefile/1km/municipalities.shx | 3 KB |
data/shapefile/1km/provinces.cpg | 0 KB |
data/shapefile/1km/provinces.dbf | 2 KB |
data/shapefile/1km/provinces.prj | 0 KB |
data/shapefile/1km/provinces.shp | 55 KB |
data/shapefile/1km/provinces.shx | 0 KB |
data/shapefile/full/localities.cpg | 0 KB |
data/shapefile/full/localities.dbf | 1,012 KB |
data/shapefile/full/localities.prj | 0 KB |
data/shapefile/full/localities.shp | 58.6 MB |
data/shapefile/full/localities.shx | 26 KB |
data/shapefile/full/municipalities.cpg | 0 KB |
data/shapefile/full/municipalities.dbf | 25 KB |
data/shapefile/full/municipalities.prj | 0 KB |
data/shapefile/full/municipalities.shp | 24.5 MB |
data/shapefile/full/municipalities.shx | 3 KB |
data/shapefile/full/provinces.cpg | 0 KB |
data/shapefile/full/provinces.dbf | 2 KB |
data/shapefile/full/provinces.prj | 0 KB |
data/shapefile/full/provinces.shp | 10.5 MB |
data/shapefile/full/provinces.shx | 0 KB |
data/shapefile/light/country.cpg | 0 KB |
data/shapefile/light/country.dbf | 0 KB |
data/shapefile/light/country.prj | 0 KB |
data/shapefile/light/country.shp | 31 KB |
data/shapefile/light/country.shx | 0 KB |
data/shapefile/light/provinces.cpg | 0 KB |
data/shapefile/light/provinces.dbf | 2 KB |
data/shapefile/light/provinces.prj | 0 KB |
data/shapefile/light/provinces.shp | 469 KB |
data/shapefile/light/provinces.shx | 0 KB |
data/topojson/100m/pt.topojson | 2.1 MB |
data/topojson/10km/pt.topojson | 10 KB |
data/topojson/1km/pt.topojson | 1.2 MB |
data/topojson/full/pt.topojson | 15.9 MB |
data/topojson/light/pt.topojson | 318 KB |
examples/choropleth-svg.html | 264 KB |
examples/drill-down-d3.html | 180 KB |
examples/leaflet-geojson.html | 590 KB |
examples/lib/LICENSES.md | 3 KB |
examples/lib/d3.min.js | 273 KB |
examples/lib/leaflet.css | 14 KB |
examples/lib/leaflet.js | 144 KB |
examples/lib/topojson-client.min.js | 7 KB |
examples/point-lookup.html | 495 KB |
flags/PT.svg | 13 KB |
sql/mysql.sql | 6.9 MB |
sql/postgis.sql | 6.8 MB |
sql/sqlserver.sql | 6.9 MB |
svg/100m/layers.svg | 3.5 MB |
svg/100m/localities.svg | 2.4 MB |
svg/100m/municipalities.svg | 812 KB |
svg/100m/provinces.svg | 260 KB |
svg/10km/layers.svg | 8 KB |
svg/10km/provinces.svg | 7 KB |
svg/1km/layers.svg | 861 KB |
svg/1km/localities.svg | 665 KB |
svg/1km/municipalities.svg | 147 KB |
svg/1km/provinces.svg | 40 KB |
svg/light/layers.svg | 337 KB |
svg/light/provinces.svg | 316 KB |
tables/changes.csv | 0 KB |
tables/codes.csv | 126 KB |
tables/country.csv | 0 KB |
tables/history.csv | 0 KB |
tables/localities.csv | 854 KB |
tables/municipalities.csv | 64 KB |
tables/names.csv | 318 KB |
tables/neighbours.csv | 811 KB |
tables/postal_codes.csv | 156 KB |
tables/provinces.csv | 6 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.