Leaf: Administrative Units Dataset: Natural Earth — ne_10m_admin_0_countries, ne_10m_admin_1_states_provinces

Natural Earth provides national (ADM0) and first-level (ADM1) boundaries in Polygon form at three scales. Attributes include ISO codes, country names, and GeoUnit identifiers.

Python load

import geopandas as gpd
 
# National boundaries
countries = gpd.read_file("ne_10m_admin_0_countries.shp")
 
# First-level administrative units
regions = gpd.read_file("ne_10m_admin_1_states_provinces.shp")
 
# Filter to a single country
dk = countries[countries["ISO_A2"] == "DK"]

Key attributes (ADM0)

FieldMeaning
NAMECountry name
ISO_A2ISO 3166-1 alpha-2 code
ISO_A3ISO 3166-1 alpha-3 code
ADMINFull administrative name
CONTINENTContinent
POP_ESTPopulation estimate

De facto vs. de jure — Natural Earth layer selection

Natural Earth separates the question “who administers this territory?” (de facto) from “who claims sovereign authority?” (de jure) through a deliberate layer family. Always choose the layer that matches your analytical question.

LayerRepresentsUse when
ne_10m_admin_0_sovereigntyDe jure sovereign states only — the internationally recognised legal claimDiplomatic analysis, treaty coverage, UN membership, international law contexts
ne_10m_admin_0_countriesDe facto administrative units — how territory is actually governed on the ground todayOperational mapping, routing, administrative statistics, population attribution
ne_10m_admin_0_map_unitsFurther subdivisions of countries for cartographic clarity (e.g. Alaska shown separately)Cartographic display, atlas-style maps
ne_10m_admin_0_disputed_areasAreas where sovereignty or administration is actively contestedConflict mapping, geopolitical analysis — never use as authoritative boundary
ne_10m_admin_0_boundary_lines_landBoundary lines with a status attribute (Definite, Indefinite, Disputed, Breakaway, etc.)Displaying boundary certainty and legal status

Key principle: admin_0_countries may include territories administered by a state that does not hold de jure sovereignty over them (e.g. occupied territories, dependencies, breakaway regions). admin_0_sovereignty will attribute those same polygons to the legally recognised sovereign instead.

import geopandas as gpd
 
# De facto — who governs the ground
countries = gpd.read_file("ne_10m_admin_0_countries.shp")
 
# De jure — who holds sovereign legal claim
sovereignty = gpd.read_file("ne_10m_admin_0_sovereignty.shp")
 
# Disputed areas — use only for display/analysis of contested status
disputed = gpd.read_file("ne_10m_admin_0_disputed_areas.shp")
 
# Boundary lines with status attribute
boundaries = gpd.read_file("ne_10m_admin_0_boundary_lines_land.shp")
print(boundaries["status"].value_counts())
# -> Definite, Indefinite, Disputed, Breakaway, Claim boundary, ...

OSM note: OSM encodes the on-the-ground situation (de facto) by convention. Disputed boundaries are tagged with disputed=yes and/or border_type=*. OSM does not carry a parallel de jure geometry — for legal claim boundaries use Natural Earth admin_0_sovereignty or admin_0_disputed_areas.