If you have landed on this page, you are likely looking for a reliable, step-by-step protocol to and actually get it to work in your Geographic Information System (GIS), statistical software (like R or Python), or web mapping platform.
GADM (Database of Global Administrative Areas) is the gold standard for boundary data. Version 3.6, released in late 2020 (with minor updates into 2021), remains one of the most widely used versions due to its stability, licensing clarity, and compatibility with legacy systems. However, novice users often struggle with file formats, projection mismatches, and API changes.
Example – add population data in R:
This article will walk you through everything: what GADM 3.6 is, how to download it correctly, how to troubleshoot common errors, and how to make the data work for your specific analysis. Before you download GADM data version 3.6 , you must understand what you are getting.
library(sf) library(dplyr) gadm <- st_read("gadm36_levels.gpkg", layer="ADM_ADM_1") pop_data <- read.csv("population_estimates.csv") # has GID_1 column merged <- left_join(gadm, pop_data, by="GID_1") GADM 3.6 boundaries are high-resolution (often >1 MB per province). Use simplification before serving tiles: download gadm data version 36 work
SELECT NAME_0, NAME_1, HASC_1, ISO FROM gadm36 WHERE ISO LIKE 'US%'; Here is how to work with the data after a successful download. Workflow A: Extract a single country from global Geopackage (fastest) If you downloaded the global Geopackage, you don’t need to re-download per country:
# Linux/Mac sha256sum gadm36_levels.gpkg.zip # Windows (PowerShell) Get-FileHash gadm36_levels.gpkg.zip Compare with official hashes if available (check GADM’s download page footer). Many users download the file but cannot open it. Here is how to make GADM version 3.6 work in your environment. Issue #1: "Invalid geometry" in QGIS/ArcGIS Cause: Version 3.6 contains some self-intersecting polygons (especially in coastal areas like Indonesia or Canada). If you have landed on this page, you
import geopandas as gpd global_gdf = gpd.read_file("gadm36_levels.gpkg", layer="ADM_ADM_1") mexico = global_gdf[global_gdf["NAME_0"] == "Mexico"] mexico.to_file("mexico_adm1.gpkg") GADM 3.6 uses GID_0 , GID_1 , GID_2 as unique identifiers. Merge using these columns – more reliable than names (which may have spaces/case issues).