Spring til indhold

Grundfast

GuideLister & synkronisering

Hvordan finder vi den nærmeste adresse for tusindvis af punkter?

GPS-positioner fra en app, målere i et forsyningsnet, skader fra en mobil besigtigelse: data kommer tit som punkter, mens resten af forretningen taler i adresser. Reverse geocoding finder den nærmeste adgangsadresse til hvert punkt med afstand og BFE-nummer. Der er tre måder at gøre det på, alt efter hvor mange punkter du har.

4 min læsning6 trinOpdateret
På denne side6 trin

Vælg vejen efter mængden

Ét punktBatchJob
EndpointGET /v1/adgangsadresser/reversePOST /v1/adgangsadresser/reverse:batchPOST /v1/jobs med kind=reverse
Antal1 (op til 20 nærmeste)50 / 100 / 150 pr. kald250 til 1.000.000 pr. job
PlanAllePro og opAlle (loftet følger planen)
Koordinaterlon/lat eller x/y + sridKun WGS84 lon/latWGS84 eller UTM32, genkendt på værdierne
Radius1–1000 m, standard 2001–1000 m, standard 200Fast 200 m
PrisÉt kald, også uden adresseÉn enhed pr. unik koordinat med adresseÉn enhed pr. række med adresse

Ét punkt

/v1/adgangsadresser/reverse giver de adgangsadresser, der ligger nærmest punktet, sorteret efter afstand. Standard er én; per_side giver op til 20. Ligger ingen adresse inden for radius, er svaret 200 med antal: 0 — og det tæller som et kald.

# WGS84
curl "https://api.grundfast.dk/v1/adgangsadresser/reverse?lon=12.5696&lat=55.6757" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY"

# UTM32 i meter (EPSG:25832)
curl "https://api.grundfast.dk/v1/adgangsadresser/reverse?x=724512&y=6175890&srid=25832" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY"
GET /v1/adgangsadresser/reverse?lon=12.5696&lat=55.6757
{
  "punkt": { "lon": 12.5696, "lat": 55.6757 },
  "antal": 1,
  "adresser": [
    {
      "betegnelse": "Rådhuspladsen 1, 1550 København V",
      "adgangsadresse_id": "0a3f507a-ec01-32b8-e044-0003ba298018",
      "bfe_nummer": 6033528,
      "vejnavn": "Rådhuspladsen",
      "husnr": "1",
      "postnr": "1550",
      "postnrnavn": "København V",
      "kommunekode": "0101",
      "koordinat": { "lon": 12.5695777, "lat": 55.6756275 },
      "afstand_m": 8
    }
  ],
  "meta": { "kilde": "Datafordeler DAR via Grundfast", "grundfast_version": "0.1.0" }
}
  1. Altid i WGS84 — også når du sendte UTM32-meter med x/y. Brug det til at tjekke, at dit punkt blev læst rigtigt.

  2. Fra dit punkt til adressens adgangspunkt — typisk ved indgangen eller indkørslen, ikke midt i bygningen.

  3. BFE-nummeret på det jordstykke, adgangspunktet ligger på. Kan være null, hvis intet jordstykke dækker punktet. Se BFE-nummer.

  4. Husnummerets UUID i DAR. Svaret er adgangsadressen, ikke en lejlighed med etage og dør.

Faldgruber med koordinater

De fleste forkerte svar skyldes punktet, ikke opslaget. Tjek disse før du sender:

  • Rækkefølgen. I Danmark er længdegraden (lon) mellem ca. 8 og 15 og breddegraden (lat) mellem ca. 54,5 og 57,8. Er de byttet om, ligger punktet uden for Danmark, og API’et svarer 400 med "lon/lat outside Denmark" — det finder ikke en tilfældig adresse.
  • Koordinatsystemet. Tal i hundredtusinder og millioner, fx x=724000, y=6176000, er UTM32 i meter (EPSG:25832). Enkeltkaldet tager dem som x/y med srid=25832. Batch-kaldet tager kun WGS84, så omregn først — eller brug et job.
  • Decimaler. Fem decimaler i grader er cirka en meter. Er positionen afrundet til to decimaler, er den over en kilometer unøjagtig, og "nærmeste adresse" er et gæt.
  • Radius. Et punkt midt på en mark kan ligge mere end 200 m fra nærmeste adresse. Sæt radius op til højst 1000, eller beslut, at sådanne punkter ikke har en adresse.

Op til 150 punkter i ét kald

POST /v1/adgangsadresser/reverse:batch tager 50 punkter på Pro, 100 på Scale og 150 på Enterprise, og kræver Pro. Hvert punkt får sin ene nærmeste adresse. Giv hvert punkt dit eget id (højst 64 tegn), så kommer det med tilbage i både results og errors. Et punkt uden adresse inden for radius står i errors med status 404 og faktureres ikke.

curl "https://api.grundfast.dk/v1/adgangsadresser/reverse:batch" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "punkter": [
      { "lon": 12.5696, "lat": 55.6757, "id": "maaler-1" },
      { "lon": 10.2039, "lat": 56.1527, "id": "maaler-2" }
    ],
    "radius": 200
  }'

To ting, der overrasker

Punkter med samme koordinat (afrundet til ca. 10 cm) slås kun op og tælles én gang, men svaret går til hvert id, du har sendt på den position — to kunder i samme opgang får hver sin række. Og alle punkter tjekkes, før noget slås op: ligger ét uden for Danmark, afvises hele kaldet med 400, og det afviste kald tæller som ét kald mod kvoten. Rens listen først.

En hel fil med punkter

Har du tusindvis af punkter, så send dem som et job med kind=reverse. Kolonnerne genkendes på navnet: lon/lat, longitude/latitude, x/y, easting/northing eller øst/nord. Koordinatsystemet læses af værdierne i de første 50 rækker med et punkt — er et tal over 180, er det UTM32 — eller du sætter srid selv. Decimalkomma som i 55,6761 er i orden. Radius er fast 200 m.

maalere.csv som job
# maalere.csv:
# maaler;x;y
# M-1001;724512,4;6175890,1
# M-1002;574870,0;6224310,7
curl "https://api.grundfast.dk/v1/jobs?kind=reverse&srid=25832&label=Maalere" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY" \
  -H "Content-Type: text/csv" \
  --data-binary @maalere.csv

I et job er en dårlig række kun en dårlig række: et punkt uden for Danmark havner i fejlfilen med 400, et punkt uden adresse inden for 200 m med 404, og resten behandles. Resultatfilen har dine kolonner og derefter gf_afstand_m, adressen og gf_bfe_nummer. Gennemgangen af upload, ventetid og filer står i En hel kundeliste som job.

Hvornår er nærmeste adresse den rigtige?

Nærmeste adresse er et geometrisk svar, ikke et bevis. I en by ligger adgangspunkterne få meter fra hinanden, og et GPS-punkt på fortovet kan ramme naboen. Brug afstand_m som kvalitetsmål: sæt en grænse, der passer til din kilde — fx 25 m for målere med kendt position og 75 m for en telefon-GPS — og send punkter over grænsen til manuel gennemgang. Skal du vide, hvilken ejendom punktet ligger på frem for hvilken indgang, der er nærmest, så brug bfe_nummer fra svaret og slå ejendommen op i BBR.

Var denne side nyttig?

Ofte stillede spørgsmål

Længdegrad først som lon og breddegrad som lat, i WGS84. I Danmark er lon omkring 8 til 15 og lat omkring 54,5 til 58. Byttede koordinater ender uden for Danmark og giver en 400.

Ja, i enkeltkaldet som x og y med srid 25832, og i et job, hvor systemet genkendes på værdierne eller sættes med srid. Batch-kaldet tager kun WGS84.

I batch og job nej: punktet står i errors eller i fejlfilen med status 404 og faktureres ikke. Et enkeltkald uden adresse svarer 200 med antal 0 og tæller som et kald.

50 på Pro, 100 på Scale og 150 på Enterprise. Længere lister sender du som et job, som tager fra 250 rækker på Free til 1.000.000 på Enterprise.

Nej. Svaret er adgangsadressen, altså vej, husnummer og postnummer med adgangspunkt og BFE-nummer. Lejligheder på adressen hentes med et opslag på enhedsadresser.

Prøv det på rigtige data

En gratis nøgle giver adgang til alle registre med samme svarform. Testnøgler faktureres aldrig, så du kan bygge færdigt, før du skifter til produktion.

Gratis op til 5.000 kald/md · intet kreditkort · data fra Klimadatastyrelsen/Datafordeler, CC BY 4.0

Relateret