Danske grunddata som filer, du selv kan forespørge

521 datasæt fra 20 offentlige kilder ligger samlet i én offentlig S3-bucket som GeoParquet og FlatGeobuf. Det dækker adresser, bygninger, matrikler, virksomheder, natur, grundvand, kommunale fagdata og planer. Hvert datasæt gemmes som daterede snapshots, så du også kan gå tilbage i tid. Du behøver ikke API-nøgler eller paginering. Peg DuckDB, QGIS eller Python på filerne, og kombinér dem frit.

s3://datagrundlag/filer/dk/
Rækker
260,2 mio.
GeoParquet
44 GB
Snapshots
3.008
Historik siden
17. september 2026
Danmarkskort med nøgletal pr. kommune

Median opførelsesår for opførte bygninger

  1. 1983
  2. 1978
  3. 1975
  4. 1973
  5. 1970
  6. 1924

Fra yngste til ældste bygningsmasse. Beregnet med DuckDB på tværs af bbr.bygning og dagi.kommuneinddeling.

Andel adresser på V2-kortlagt jord

  1. 0 %
  2. 0,3 %
  3. 0,5 %
  4. 0,9 %
  5. 1,6 %
  6. 12,7 %

Andel af kommunens adresser. Beregnet med DuckDB på tværs af dar.husnummer, dar.adressepunkt, dkjord.dkjord_v2 og dagi.kommuneinddeling.

Offentlige ladepunkter pr. 1.000 adresser

  1. 0
  2. 9
  3. 12,8
  4. 15,6
  5. 21,6
  6. 90,7

Pr. 1.000 adresser. Beregnet med DuckDB på tværs af geofa.t_5607_ladefacilitet, dar.husnummer og dagi.kommuneinddeling.

Vis tallene som tabel
KommuneMedian opførelsesårAdresser% på V2-jordLadepunkter pr. 1.000
Albertslund196811.3841,641,6
Allerød197710.5890,913,3
Assens197222.5690,614,2
Ballerup197218.136123,3
Billund198016.4110,240
Bornholm195129.9570,27,3
Brøndby19789.9843,939
Brønderslev197119.3600,97,4
Christiansø–10100
Dragør19746.5731,513,7
Egedal197519.3470,68,1
Esbjerg197549.6680,518,2
Fanø19785.07306,3
Favrskov198323.2740,217
Faxe197619.8410,318,7
Fredensborg197816.4990,910,2
Fredericia197921.0921,631,8
Frederiksberg19349.58411,678,7
Frederikshavn197841.08618,6
Frederikssund197726.7133,19,5
Furesø197716.6222,28,9
Faaborg-Midtfyn197029.2960,513,2
Gentofte193618.9402,418
Gladsaxe196219.8364,620,9
Glostrup19798.2902,926,5
Greve197721.0470,210,5
Gribskov197333.6030,48,7
Guldborgsund196441.3170,67,7
Haderslev197428.1460,512,9
Halsnæs197423.08017
Hedensted197727.2100,311
Helsingør197425.647215,1
Herlev197010.6483,536,1
Herning197643.4640,323
Hillerød198220.4963,318,6
Hjørring197443.9320,712,9
Holbæk197536.3670,313,3
Holstebro197731.0070,316,2
Horsens197438.7100,821,5
Hvidovre197115.254219,7
Høje-Taastrup197417.7012,190,7
Hørsholm19729.4961,213,3
Ikast-Brande197921.8770,212,1
Ishøj19746.5361,726,5
Jammerbugt197731.9840,211,3
Kalundborg197333.6980,57,1
Kerteminde197414.6840,418
Kolding197943.6710,623,7
København195083.95912,779,9
Køge197425.4011,213,9
Langeland196012.1481,57,4
Lejre197515.2060,15,1
Lemvig197514.9470,612,8
Lolland195532.0250,39,6
Lyngby-Taarbæk1958.516.5931,822,7
Læsø19793.6780,32,4
Mariagerfjord197526.2230,913,2
Middelfart197622.0450,529,4
Morsø196713.0691,315,8
Norddjurs197227.0700,412,4
Nordfyns196919.6840,47,9
Nyborg197316.5411,721,3
Næstved197341.3480,410,9
Odder198013.2900,617,8
Odense197581.8251,312,6
Odsherred197342.4140,26
Randers197441.6661,113,1
Rebild197316.1210,511,4
Ringkøbing-Skjern197842.0670,218,4
Ringsted197315.8350,312,6
Roskilde197835.3601,320,1
Rudersdal197019.810217,8
Rødovre196512.6514,814,5
Samsø19694.7160,411
Silkeborg197947.2700,423,4
Skanderborg198227.6160,215,6
Skive197028.8740,712
Slagelse197239.943111,6
Solrød19799.4040,621,7
Sorø198015.6500,712,8
Stevns196713.5130,29
Struer197512.1140,615,3
Svendborg197230.6880,77,8
Syddjurs197833.8540,311,2
Sønderborg197638.255118,5
Thisted197329.6720,48,3
Tønder197324.4440,314,2
Tårnby197314.4137,142,7
Vallensbæk19784.9070,914,9
Varde197735.4640,310
Vejen197622.9140,423,3
Vejle197755.0690,722,1
Vesthimmerlands197224.3250,417,1
Viborg197447.2990,414,6
Vordingborg197030.1390,911
Ærø19245.46217
Aabenraa197630.2600,521,6
Aalborg197593.2050,915
Aarhus1978114.3701,220

Registrene hænger sammen. Nu kan du også se det.

Grunddata er designet til at blive koblet: et husnummer peger på en vej, et jordstykke og en kommune. En bygning står på en grund, og en virksomhed har en adresse. Hos de enkelte myndigheder ligger data alligevel i hver sin tjeneste med hver sit API.

Her ligger det hele side om side i samme format og samme koordinatsystem (ETRS89 / UTM32). Et join mellem BBR og Naturdatabasen er lige så nemt som et join mellem to tabeller i samme database, hvilket Datagrundlag er.

Gå tilbage i tid

Myndighedernes tjenester viser som regel kun, hvordan data ser ud i dag. Her bliver hvert snapshot liggende med sin dato, så du kan se et register, som det så ud på en bestemt dag, og sammenligne to datoer.

Historikken begynder 17. september 2026 og vokser for hvert snapshot. Indtil nu er der 3.008 snapshots, og 151 datasæt har allerede ændret rækketal undervejs.

I DuckDB er snapshot-datoen en almindelig kolonne. Med makroen dk_at() læser du et datasæt, som det så ud på en given dato.

Oversigten viser den seneste uge for et udvalg af datasæt, der har ændret sig, ét fra hver kilde.

Datasæt26. sep.28. sep.30. sep.2. okt.Ændring
BoringerJupiter+166
Beskyttede naturtyper (§ 3)Danmarks Arealinformation+44
25. september 2026 til 2. oktober 2026 Snapshot Rækketallet ændrede sig Intet snapshot den dag

Hvilke lokalplaner er vedtaget den seneste uge?

Det samme datasæt læst på to tidspunkter: i dag og for en uge siden. Planer i det nyeste snapshot, som ikke fandtes for en uge siden, er kommet til i løbet af ugen. Ret 7 DAY til fx 30 DAY for at se en anden periode.

DuckDB-forespørgsel
SELECT ny.kommunenavn                                    AS kommune,
       ny.plannavn                                       AS lokalplan,
       strptime(ny.datovedt::VARCHAR, '%Y%m%d')::DATE    AS vedtaget
FROM dk('plandatadk', 'pdk_lokalplan_vedtaget_v') ny
ANTI JOIN dk_at('plandatadk', 'pdk_lokalplan_vedtaget_v', current_date - INTERVAL 7 DAY) gammel
  USING (planid)
ORDER BY vedtaget DESC, kommune;
Redigér i SQL-editoren

Kører med DuckDB i din browser. Datasættene fylder 41 MB, men kun de kolonner og dele, som forespørgslen bruger, hentes.

Resultat (6,1 s direkte fra S3 på en bærbar)

kommunelokalplanvedtaget
HaderslevSolenergianlæg ved Strandelhjørn2026-09-29
HjørringRegulering af sekundær bebyggelse ved Høngårds Ager (tillæg til lokalplan 10.000-04)2026-09-29
GentofteNybrovej 75, nyt domicil for Arp-Hansen2026-09-28
Gentoftefor Ordrup Gymnasium2026-09-28
NyborgOmråde til ladepark ved Hjulby2026-09-28
NordfynsBryggergården2026-09-24
NordfynsBogense Forsyning2026-09-24
TønderHøjspændingssamlestation ved Galgemark, Bredebro2026-09-24
TønderBredebro II solenergipark2026-09-24
GladsaxeOffentlige formål ved Pilegårdsvej i Mørkhøj2026-09-23
GribskovLokalplan for en del af Ørby Landsby2026-09-22
KoldingVed Lærkevej - et område til offentlige formål2026-09-22
Ringkøbing-SkjernOmråde til rekreative formål ved Nyhavn, Søndervig2026-09-22
Ringkøbing-SkjernOmråde til offentlige formål ved Idrætsvej, Lyne2026-09-22
FrederikssundLokalplan for Banegrav ved Bonderup2026-09-08

Analyser på tværs af registre

Forespørgslerne herunder køres, hver dag, direkte mod bucketen. Tallene er ægte, og SQL'en kan kopieres ind i din egen DuckDB.

Hvilke Natura 2000-områder rummer flest rødlistede arter?

278.000 fund af rødlistearter fra Naturdatabasen krydset med Miljøstyrelsens habitatområder. Et punkt-i-polygon-join på tværs af to kilder.

DuckDB-forespørgsel
SELECT h.objektnavn                         AS habitatområde,
       count(DISTINCT r.videnskabeligtnavn) AS rødlistearter,
       count(*)                             AS fund
FROM dk('naturdatabasen', 'art_roedlistearter') r
JOIN dk('danmarksarealinformation', 'habitat_omr') h
  ON ST_Intersects(r.the_geom, h.the_geom)
GROUP BY ALL
ORDER BY rødlistearter DESC
LIMIT 8;
Redigér i SQL-editoren

Kører med DuckDB i din browser. Datasættene fylder 36 MB, men kun de kolonner og dele, som forespørgslen bruger, hentes.

Resultat (12,3 s direkte fra S3 på en bærbar)

habitatområderødlistearterfund
Lovns Bredning, Hjarbæk Fjord og Skals, Simested og Nørre Ådal, Skravad Bæk1802.740
Smålandsfarvandet nord for Lolland, Guldborg Sund, Bøtø Nor, Hyllekrog-Røds1635.280
Sejerø Bugt og Saltbæk Vig1544.387
Roskilde Fjord1402.963
Vadehavet med Ribe Å, Tved Å og Varde Å vest for Varde13873.341
Løgstør Bredning, Vejlerne og Bulbjerg1373.865
Rold Skov, Lindenborg Ådal og Madum Sø1252.528
Almindingen, Ølene og Paradisbakkerne123805

Hvor mange adresser ligger på kortlagt forurenet jord?

Gældende adgangsadresser fra DAR lagt oven på V2-kortlagte arealer fra regionernes jordforureningsregister og fordelt på DAGI-kommuner.

DuckDB-forespørgsel
WITH adresser AS (
  SELECT h.id_lokalid AS id, h.kommuneinddeling, p.the_geom
  FROM dk('dar', 'husnummer') h
  JOIN dk('dar', 'adressepunkt') p ON p.id_lokalid = h.adgangspunkt
  WHERE h.status = '3'  -- gældende
)
SELECT k.navn                                     AS kommune,
       count(DISTINCT a.id)                       AS adresser,
       count(DISTINCT a.id) FILTER (v.gid NOTNULL) AS på_v2_jord,
       round(100.0 * på_v2_jord / adresser, 1)    AS procent
FROM adresser a
JOIN dk('dagi', 'kommuneinddeling') k ON k.id_lokalid = a.kommuneinddeling
LEFT JOIN dk('dkjord', 'dkjord_v2') v ON ST_Intersects(a.the_geom, v.the_geom)
GROUP BY ALL
ORDER BY procent DESC
LIMIT 8;
Redigér i SQL-editoren

Kører med DuckDB i din browser. Datasættene fylder 1,3 GB, men kun de kolonner og dele, som forespørgslen bruger, hentes. Store datasæt kan tage et til to minutter i browseren. Med DuckDB på din egen maskine tog den 24,8 s.

Resultat (24,8 s direkte fra S3 på en bærbar)

kommuneadresserpå v2 jordprocent
København83.95910.70012,7
Frederiksberg9.5841.11611,6
Tårnby14.4131.0197,1
Rødovre12.6516054,8
Gladsaxe19.8369174,6
Brøndby9.9843843,8
Herlev10.6483713,5
Hillerød20.4966703,3

Se alle 5 eksempler

Hvad der er i bucketen

Vælg en kilde for at se dens datasæt.

  • Adresser, ejendomme og virksomheder
  • Natur, vand og miljø
  • Kyst og landbrug
  • Kort, planer og kulturarv
  1. BBRVurderingsstyrelsen99,6 mio.17 datasæt, 16 GB
  2. MatriklenKlimadatastyrelsen65,4 mio.23 datasæt, 9,2 GB
  3. CVRErhvervsstyrelsen39,8 mio.18 datasæt, 3,5 GB
  4. GeoDanmarkKlimadatastyrelsen og kommunerne29,5 mio.70 datasæt, 8,7 GB
  5. DARKlimadatastyrelsen12,7 mio.9 datasæt, 1,9 GB
  6. LandbrugsdriftLandbrugsstyrelsen2,4 mio.6 datasæt, 258 MB
  7. KystatlasKystdirektoratet2,2 mio.10 datasæt, 151 MB
  8. Danmarks ArealinformationMiljøstyrelsen2,2 mio.23 datasæt, 563 MB
  9. NaturdatabasenDanmarks Miljøportal1,4 mio.19 datasæt, 335 MB
  10. Plandata.dkPlan- og Landdistriktsstyrelsen970 t.134 datasæt, 1,8 GB
  11. GRUKOSMiljøstyrelsen890 t.21 datasæt, 307 MB
  12. GeoFAKommunerne (FKG)863 t.80 datasæt, 263 MB
  13. KulturarvSlots- og Kulturstyrelsen731 t.13 datasæt, 115 MB
  14. JordbrugsanalyserAarhus Universitet663 t.11 datasæt, 111 MB
  15. JupiterGEUS507 t.3 datasæt, 72 MB
  16. StednavneKlimadatastyrelsen302 t.31 datasæt, 180 MB
  17. DKjordRegionerne198 t.6 datasæt, 68 MB
  18. DAGIKlimadatastyrelsen15 t.15 datasæt, 252 MB
  19. PULSDanmarks Miljøportal7 t.4 datasæt, 941 kB
  20. RedningsnumreKystdirektoratet6 t.8 datasæt, 631 kB
Rækker pr. kilde i seneste snapshot, vist på kvadratrodsskala. Tal fra STAC-kataloget i bucketen.

Sådan er stierne bygget op

Bucketen følger en hive-lignende struktur, så værktøjer som DuckDB, Spark og Polars kan filtrere på kilde, datasæt og dato uden at læse data.

  1. s3://datagrundlagOffentlig bucket i eu-west-1. Ingen login eller nøgler.
  2. filer/dkDatabasen dk. Her ligger catalog.json, roden i STAC-kataloget.
  3. schema=bbrKilden, fx BBR, DAR eller Matriklen.
  4. relation=bygningDatasættet. collection.json og latest.json peger på nyeste snapshot.
  5. _gc2_snapshot_date=2026-09-27Et snapshot pr. dato. Gamle snapshots bliver liggende, og DuckDB læser datoen som en kolonne.
  6. data-cc06f457-877d-4c1e-9c2f-d54d5e868331.parquetGeoParquet 1.1 med bbox-kolonne. Ved siden af ligger .fgb og metadata.

Prøv det på et minut

Installér DuckDB, start den og indsæt forespørgslen. Den henter DAGI's kommunegrænser fra bucketen og beregner arealet.

Skal du bruge data i QGIS, så åbn FlatGeobuf-filen via dens URL. QGIS henter kun de features, der er inden for kortudsnittet.

Læs hele vejledningen
-- I DuckDB (duckdb.org). Ingen nøgler, ingen konto.
INSTALL spatial; LOAD spatial;
INSTALL httpfs;  LOAD httpfs;
SET s3_region = 'eu-west-1';

SELECT navn, round(ST_Area(the_geom) / 1e6) AS km2
FROM 's3://datagrundlag/filer/dk/schema=dagi/relation=kommuneinddeling/*/*.parquet'
QUALIFY _gc2_snapshot_date = max(_gc2_snapshot_date) OVER ()  -- kun nyeste snapshot
ORDER BY km2 DESC
LIMIT 5;