- Dokumentasjon
- Produkter
Adresse i praksis
Autofullfør i skjemaer, validering ved lagring, geokoding for ruter og kart, eiendomsinformasjon og massevask av registre.
Adresse gjør at adresser i systemet ditt alltid er offisielle, komplette og riktige.
Autofullfør i nettleseren
Bruk en offentlig nøkkel (pk_live_…) direkte fra nettleseren. Offentlige nøkler kan bare kalle GET /v1/adresser og er låst til domenene du registrerer.
const inp = document.querySelector('#adresse');
let timer;
inp.addEventListener('input', () => {
clearTimeout(timer);
timer = setTimeout(async () => {
const r = await fetch(`https://api.spireapi.com/v1/adresser?sok=${encodeURIComponent(inp.value)}&antall=6`, {
headers: { Authorization: 'Bearer pk_live_…' },
});
visForslag((await r.json()).data);
}, 150);
});
Hvert kall teller 0,2 mot kvoten. Med 150 ms ventetid bruker en typisk adresse 4–6 kall, altså omtrent ett helt kall per utfylt adresse.
Tips: send naer=lat,lon hvis du vet omtrent hvor brukeren er (fra tidligere adresse eller nettleserposisjon med samtykke). Da kommer «Storgata 5» i riktig by først.
Lagre ID-en, ikke teksten
Når brukeren velger et forslag, lagre id sammen med teksten. ID-en er stabil, og du kan senere hente adressen på nytt, sjekke om den er endret, eller abonnere på adresse.endret.
{ "adresse_id": "adr_2000_storgata_5", "adresse_tekst": "Storgata 5, 2000 Lillestrøm", "bruksenhet": "H0201" }
Bruksenhet (H0101, U0201 osv.) er nødvendig for leiligheter. Autofullfør gir forslag med bruksenheter når adressen har flere, hvis du sender bruksenheter=1.
Validering ved lagring
Adresser som kommer fra import, CRM eller fritekst bør valideres før de lagres:
v = spire.adresser.valider(tekst="Storgt 5 H0201, 2000 Lillestrøm")
if v.gyldig and v.treff >= 0.9:
lagre(v.adresse)
else:
vis_forslag(v.forslag) # la brukeren velge
treff er 0–1. Over 0,9 er entydig. Mellom 0,6 og 0,9 har vi funnet noe, men det kan være flere kandidater; forslag lister dem. Under 0,6 fant vi ikke adressen.
Strukturert inndata gir bedre treff enn fritekst når du har feltene:
{ "gate": "Storgata", "nummer": "5", "bruksenhet": "H0201", "postnummer": "2000" }
Geokoding
Hver adresse har koordinat (WGS84, og EUREF89 UTM 33 med koordinatsystem=utm33). For ruteplanlegging:
adr, _ := client.Adresser.Hent(ctx, "adr_2000_storgata_5")
fmt.Println(adr.Koordinat.Lat, adr.Koordinat.Lon)
Motsatt vei, fra posisjon til adresse, bruker GET /v1/geokoding?lat=&lon=. Nyttig for «hvor er jeg»-funksjoner og for å finne nærmeste adresse til et GPS-punkt fra en bil.
Adresser i et område
POST /v1/adresser/innenfor tar et GeoJSON-polygon og returnerer alle adresser innenfor, med bruksenheter. Brukes til innbyggervarsling, markedsanalyse og ruteområder. Polygonet kan ha opptil 500 punkter, og svaret strømmes som NDJSON hvis det er over 1 000 adresser.
Eiendom
Fra en adresse kan du gå til eiendommen:
a = spire.adresser.hent("adr_2000_storgata_5")
e = spire.eiendommer.hent(a.matrikkel) # "3205-81/140"
print(e.gnr, e.bnr, e.areal_m2, [b.type for b in e.bygninger])
Hjemmelshaver (eier) vises bare for kontoer med godkjent formål (eiendomsmegling, bank, offentlig). Søk om tilgang i dashbordet.
Postnummer
GET /v1/postnummer/{nr} gir poststed, kommune, fylke og kategori (gateadresse, postboks, servicepostnummer). GET /v1/postnummer?kommune=3205 lister alle i en kommune. Ved kommunesammenslåinger beholdes gamle numre med erstattet_av.
Massevask
Last opp CSV med adresser i dashbordet eller via POST /v1/adresser/vask, og få tilbake en fil med normalisert adresse, ID, koordinat og treffsikkerhet per rad. 100 000 rader tar omtrent 10 minutter. Teller som ett kall per rad.
Vanlige feil
- Gatenavn med skrivefeil gir lav treff: søk med
sok=i stedet forvalider; søket er mer tolerant. - Adressen finnes, men ikke i Spire: nye adresser kommer inn daglig. Er den eldre enn en uke, si fra.
- To adresser med samme tekst: forskjellig bruksenhet eller forskjellig postnummer (2000 vs 2004). Vis begge for brukeren.