Danske grunddata som filer, du selv kan forespørge

552 datasæt fra 21 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
266,3 mio.
GeoParquet
46 GB
Snapshots
6.503
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,8 %

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
  3. 12,8
  4. 15,6
  5. 21,5
  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.3921,643
Allerød197710.5890,913,3
Assens197222.5710,614,3
Ballerup197218.137123,3
Billund198016.4220,240,3
Bornholm195129.9570,27,3
Brøndby19789.9843,939
Brønderslev197119.3590,97,4
Christiansø–10100
Dragør19746.5731,513,7
Egedal197519.3490,68,1
Esbjerg197549.6730,518,2
Fanø19785.07306,3
Favrskov198323.2730,217
Faxe197619.8410,318,7
Fredensborg197816.5050,910,5
Fredericia197921.0961,631,9
Frederiksberg19349.58411,678,7
Frederikshavn197841.08718,6
Frederikssund197726.7183,19,5
Furesø197716.6322,28,9
Faaborg-Midtfyn197029.3050,513,2
Gentofte193618.9402,418
Gladsaxe196219.8384,620,9
Glostrup19798.2902,926,5
Greve197721.0470,210,5
Gribskov197333.6040,48,7
Guldborgsund196441.3150,67,7
Haderslev197428.1470,512,9
Halsnæs197423.08017
Hedensted197727.2950,311
Helsingør197425.653215,1
Herlev197010.6623,536
Herning197643.4930,323,1
Hillerød198220.4973,318,6
Hjørring197443.9470,712,9
Holbæk197536.3680,313,3
Holstebro197731.0070,316,2
Horsens197438.7520,821,5
Hvidovre197115.253220,3
Høje-Taastrup197417.7012,190,7
Hørsholm19729.4951,213,3
Ikast-Brande197921.8790,212,1
Ishøj19746.5521,726,4
Jammerbugt197731.9840,211,3
Kalundborg197333.6980,57,1
Kerteminde197414.7290,417,9
Kolding197943.6780,623,9
København195083.99312,880
Køge197425.4011,213,7
Langeland196012.1481,57,4
Lejre197515.2090,15,1
Lemvig197514.9470,612,8
Lolland195532.0310,39,6
Lyngby-Taarbæk195916.5961,822,9
Læsø19793.6780,32,4
Mariagerfjord197526.2240,913,2
Middelfart197622.0460,530
Morsø196713.0701,315,8
Norddjurs197227.0740,412,4
Nordfyns196919.6850,47,9
Nyborg197316.5441,721,3
Næstved197341.3500,410,9
Odder198013.2890,617,5
Odense197581.8261,312,6
Odsherred197342.4630,26
Randers197441.6631,113,3
Rebild197316.1230,511,4
Ringkøbing-Skjern197842.0700,218,4
Ringsted197315.8350,312,8
Roskilde197835.3641,320
Rudersdal197019.810217,8
Rødovre196512.6654,814,5
Samsø19694.7170,411
Silkeborg197947.2720,423,4
Skanderborg198227.6140,215,6
Skive197028.8680,712,1
Slagelse197339.948111,6
Solrød19799.4650,621,6
Sorø198015.6500,712,8
Stevns196713.5130,29,3
Struer197512.1150,615,3
Svendborg197230.6870,77,8
Syddjurs197833.8670,311,2
Sønderborg197638.262118,5
Thisted197329.6740,48,3
Tønder197324.4650,314,2
Tårnby197314.4137,143,1
Vallensbæk19784.9070,915,1
Varde197735.4690,310
Vejen197622.9160,423,4
Vejle197755.1070,722,2
Vesthimmerlands197224.3270,417,2
Viborg197447.3130,414,6
Vordingborg197030.1600,911
Ærø19245.46217
Aabenraa197630.2640,521,5
Aalborg197593.2360,915,1
Aarhus1978114.3921,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 6.503 snapshots, og 229 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æt7. okt.9. okt.11. okt.13. okt.Ændring
FotosGeoFA+64
BoringerJupiter+281
Beskyttede naturtyper (§ 3)Danmarks Arealinformation+61
Fund af invasive arterNaturdatabasen+515
6. oktober 2026 til 13. 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 (8,4 s direkte fra S3 på en bærbar)

kommunelokalplanvedtaget
BrøndbyFor specialskole på en del af Gildhøjcentret2026-10-07
LemvigSommerhusområde i Vejlby2026-10-07
LemvigSommerhusområde i Vrist2026-10-07
ViborgCenterformål ved Ellekonebakken i Viborg2026-10-07
AlbertslundBoliger og erhverv på Smedeland 72026-10-06
BillundDagligvarebutik på Vejlevej, Billund.2026-10-06
Ringkøbing-SkjernBoligområde ved Stationsvej i Tarm2026-10-06
SvendborgLokalplan 11_05 – tillæg 12026-10-06
SønderborgTillæg til lokalplan 4-0701 Erhvervsområdet Fynsgade2026-10-06
VardeSektorkoblet anlæg ved Krageris, Ølgod2026-10-06
AalborgSolceller nord for Bouet2026-09-29
Horsens445, Offentlige formål, Dagnæs Hal 2, Horsens2026-09-29
RebildBoligområde ved Øster Hornumvej, Øster Hornum2026-09-17
KalundborgLokalplan nr. 607 for en svømmehal i Gørlev2026-09-16
SkanderborgBoligområde ved Stenskovvej i Stjær2026-09-02

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 (15,1 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.745
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 Paradisbakkerne123806

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 28,1 s.

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

kommuneadresserpå v2 jordprocent
København83.99310.72312,8
Frederiksberg9.5841.11611,6
Tårnby14.4131.0197,1
Rødovre12.6656104,8
Gladsaxe19.8389174,6
Brøndby9.9843843,8
Herlev10.6623713,5
Hillerød20.4976703,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,5 mio.23 datasæt, 9,2 GB
  3. CVRErhvervsstyrelsen39,9 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. Vejdirektoratet5,8 mio.31 datasæt, 2,4 GB
  7. LandbrugsdriftLandbrugsstyrelsen2,4 mio.6 datasæt, 257 MB
  8. KystatlasKystdirektoratet2,2 mio.10 datasæt, 151 MB
  9. Danmarks ArealinformationMiljøstyrelsen2,2 mio.23 datasæt, 563 MB
  10. NaturdatabasenDanmarks Miljøportal1,4 mio.19 datasæt, 335 MB
  11. Plandata.dkPlan- og Landdistriktsstyrelsen970 t.134 datasæt, 1,8 GB
  12. GRUKOSMiljøstyrelsen890 t.21 datasæt, 307 MB
  13. GeoFAKommunerne (FKG)863 t.80 datasæt, 266 MB
  14. KulturarvSlots- og Kulturstyrelsen732 t.13 datasæt, 115 MB
  15. JordbrugsanalyserAarhus Universitet663 t.11 datasæt, 111 MB
  16. JupiterGEUS508 t.3 datasæt, 72 MB
  17. StednavneKlimadatastyrelsen302 t.31 datasæt, 180 MB
  18. DKjordRegionerne198 t.6 datasæt, 68 MB
  19. DAGIKlimadatastyrelsen15 t.15 datasæt, 252 MB
  20. PULSDanmarks Miljøportal7 t.4 datasæt, 941 kB
  21. 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-10-11Et snapshot pr. dato. Gamle snapshots bliver liggende, og DuckDB læser datoen som en kolonne.
  6. data-6fa1dafe-dea6-4d3e-9ab5-2366e6785b4e.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;