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 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://gc2-parquet/centia-io/dk/
Rækker
260,2 mio.
GeoParquet
44 GB
Snapshots
2.648
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,6
  4. 15,6
  5. 21,6
  6. 90,5

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,7
Allerød197710.5890,913,3
Assens197222.5690,614,2
Ballerup197218.136123,3
Billund198016.4110,239,4
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,517,9
Fanø19785.07306,3
Favrskov198323.2740,217
Faxe197619.8410,318,7
Fredensborg197816.4990,910,2
Fredericia197921.0921,630,6
Frederiksberg19349.58411,678,7
Frederikshavn197841.08618,6
Frederikssund197726.7133,19,4
Furesø197716.6222,28,9
Faaborg-Midtfyn197029.2960,512,6
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,8
Halsnæs197423.08017
Hedensted197727.2100,311
Helsingør197425.647215,1
Herlev197010.6483,536,1
Herning197643.4640,322,5
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,5
Hørsholm19729.4961,213,3
Ikast-Brande197921.8770,212,1
Ishøj19746.5361,725,7
Jammerbugt197731.9840,211,3
Kalundborg197333.6980,57,1
Kerteminde197414.6840,417,8
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,6
Lolland195532.0250,39,6
Lyngby-Taarbæk1958.516.5931,822,7
Læsø19793.6780,32,4
Mariagerfjord197526.2230,913,2
Middelfart197622.0450,528,5
Morsø196713.0691,315,8
Norddjurs197227.0700,412,3
Nordfyns196919.6840,47,9
Nyborg197316.5411,721,3
Næstved197341.3480,410,9
Odder198013.2900,617,1
Odense197581.8251,312,6
Odsherred197342.4140,26
Randers197441.6661,113,2
Rebild197316.1210,511,4
Ringkøbing-Skjern197842.0670,218
Ringsted197315.8350,312,6
Roskilde197835.3601,319,8
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,2
Svendborg197230.6880,77,8
Syddjurs197833.8540,311,2
Sønderborg197638.255118,5
Thisted197329.6720,48,3
Tønder197324.4440,313,8
Tårnby197314.4137,142,9
Vallensbæk19784.9070,914,9
Varde197735.4640,310
Vejen197622.9140,422,6
Vejle197755.0690,721,8
Vesthimmerlands197224.3250,417,1
Viborg197447.2990,414,6
Vordingborg197030.1390,911
Ærø19245.46217
Aabenraa197630.2600,521,6
Aalborg197593.2050,915,1
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, for det er i praksis det, det 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 2.648 snapshots, og 149 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.

Datasæt17. sep.19. sep.21. sep.23. sep.25. sep.27. sep.29. sep.1. okt.Ændring
Beskyttede naturtyper (§ 3)Danmarks Arealinformation+65
Fund af invasive arterNaturdatabasen+323
LadefaciliteterGeoFA−149
Snapshot Rækketallet ændrede sig Intet snapshot den dag

Hvilke lokalplaner er vedtaget siden 17. september?

Det samme datasæt læst på to datoer. Planer i det nyeste snapshot, som ikke fandtes i snapshottet fra 17. september, er kommet til siden. Skift datoen 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', '2026-09-17') 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 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
NyborgOmråde til ladepark ved Hjulby2026-09-28
FavrskovTillæg nr. 1 til lokalplan nr. 582026-09-25
TønderOphævelse af lokalplan 7.332026-09-25
NordfynsBogense Forsyning2026-09-24
NordfynsBryggergården2026-09-24
TønderBredebro II solenergipark2026-09-24
TønderHøjspændingssamlestation ved Galgemark, Bredebro2026-09-24
FrederikshavnStrandby Havn2026-09-23
GladsaxeOffentlige formål ved Pilegårdsvej i Mørkhøj2026-09-23
ThistedOphævelse af lokalplan 1.33 - Nordatlantens Hus, Hanstholm2026-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 offentlige formål ved Idrætsvej, Lyne2026-09-22
Ringkøbing-SkjernOmråde til rekreative formål ved Nyhavn, Søndervig2026-09-22
MariagerfjordDøgninstitution ved Ølsvej i Hobro2026-09-18
GlostrupDaginstitution på Mosetoften2026-09-16
Høje-TaastrupFor et område mellem Hovedgaden og Kallerupvej2026-09-16
AalborgHøjspændingsstation - Nordjyllandsværket2026-09-15
AllerødVassingerød Erhvervsområde2026-09-15
HerningBoligområde ved Engholm Søpark i Herning2026-09-15
EsbjergTæt - Lav boligbebyggelse ved Andrupgård, Esbjerg Ø2026-09-14
GreveTillæg nr. 2 til Lokalplan nr. 12.50 for strandvejsområdet2026-09-14
LangelandNyt boligområde i Bagenkop2026-09-14
FrederikssundLokalplan for Banegrav ved Bonderup2026-09-08
GladsaxeStengård Skole2026-08-26
SønderborgSolcelleanlæg ved Lavensby, Nordborg2026-08-26
HvidovreErhvervsområdet ved Gungevej, Arnold Nielsens Boulevard, Bibliotekvej og Høvedstensvej2026-08-25

Analyser på tværs af registre

Forespørgslerne herunder køres, hver gang sitet bygges, 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,8 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.738
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 26,4 s.

Resultat (26,4 s direkte fra S3 på en bærbar)

kommuneadresserpå v2 jordprocent
København83.95910.69812,7
Frederiksberg9.5841.11611,6
Tårnby14.4131.0197,1
Rødovre12.6516054,8
Gladsaxe19.8369174,6
Brøndby9.9843863,9
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://gc2-parquetOffentlig bucket i eu-west-1. Ingen login eller nøgler.
  2. centia-io/dkDatabasen. 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://gc2-parquet/centia-io/dk/schema=dagi/relation=kommuneinddeling/*/*.parquet'
QUALIFY _gc2_snapshot_date = max(_gc2_snapshot_date) OVER ()  -- kun nyeste snapshot
ORDER BY km2 DESC
LIMIT 5;