Skip to main content

Avanserte filtre i API

API-et tillater utførelse av komplekse spørringer som filtrerer på relaterte objekter og objekter som overlapper hverandre. Et enkelt spørrespråk brukes for å spesifisere avanserte spørringer, og er støttet i /vegobjekter-endepunktet.

Eksempler på avanserte spørringer

  • Filtrering på objekter som overlapper: Filtrering på objekter som overlapper hverandre. For eksempel, alle trafikkulykker på strekninger med fartsgrense over 80 km/t.

  • Filtrering på relaterte objekter: Filtrering på relaterte objekter (mor/datter relasjoner). For eksempel, alle trafikkulykker med ulykkesinvolvert person over 70 år.

  • Kombinerte spørringer: Kombinasjon av overlapp og relasjoner i samme spørring. For eksempel, alle trafikkulykker på strekninger med fartsgrense over 80 km/t og ulykkesinvolvert person over 70 år.

Forutsetninger for avanserte spørringer

For å bruke avanserte spørringer effektivt, kreves det inngående kunnskap om NVDBs datakatalog, inkludert hvordan objekter modelleres og deres relasjoner. Datakatalog-ID-er benyttes som parametere for å sikre at spørringer forblir gyldige selv ved navneendringer på objekttyper eller egenskaper.

Eksempler på spørringer

  • Trafikkulykker med Skadegrad "Alvorlig Skadet" på strekning med fartsgrense 80 km/t: /vegobjekter/570?egenskap=egenskap(5074)=6429 AND overlapp(105, egenskap(2021)=2738)
  • Tunneler på fylkesvei med høydebegrensning <4m: /vegobjekter/581?egenskap=relasjon(67, relasjon(591, egenskap(5277)<4))&vegreferanse=F

Filtrering på egenskaper

Egenskapsfiltrering utføres med egenskap-funksjonen. Denne funksjonen tar en egenskaps-ID som parameter og returnerer verdien for objektets egenskap.

  • Eksempel: Bruer bygget etter år 2000: /vegobjekter/60?egenskap="egenskap(10278)>=2000"

Kombinasjon og filtrering på flere egenskaper

Man kan kombinere og filtrere på flere egenskaper ved å bruke AND og OR-operatorene.

  • Eksempel: Filtrering av bruer etter byggeår og lengde: /vegobjekter/60?egenskap="egenskap(10278)>=2000 AND egenskap(1313)<=100"

Filtrering på relasjoner

Filtrering på relaterte objekter gjøres via relasjon-funksjonen. Denne tar en objekttype-ID som første parameter, og et valgfritt avansert filter som andre parameter, som gjelder for det relaterte objektet.

  • Eksempel: Rasteplass med toalettanlegg: /vegobjekter/39?egenskap=relasjon(243)
  • Eksempel: Tunneler med Tunnelløp lengre enn 2km: /vegobjekter/581?egenskap=relasjon(67, egenskap(1317)>2000)

Filtrering på overlappende objekter

Filtrering på objekter med overlappende stedfessting gjøres via overlapp-funksjonen. Denne tar en objekttype-ID som første parameter, og et valgfritt avansert filter som andre parameter, som gjelder for det overlappende objektet.

  • Eksempel: Trafikkulykker på samme sted som tunnelløp: /vegobjekter/570?egenskap=overlapp(67)
  • Eksempel: Trafikkulykker på samme sted som fartsgrense lik 80 km/t: /vegobjekter/570?egenskap=overlapp(105(egenskap(2021)=2738))

Negasjon av avanserte filtre

Avanserte filtre kan også negeres med NOT.

  • Eksempel: Tunneler uten relasjon til Nødnett: /vegobjekter/581/statistikk?egenskap=NOT relasjon(993)

Funksjoner og operatorer

Spørrespråket inneholder funksjoner som overlapp, egenskap og relasjon, samt sammenligningsoperatorer som =, !=, >, <, in, notin, AND, OR og NOT.

Avsluttende merknader

Det er viktig å bruke punktum i desimaltall og anførselstegn for strenger. Bruk null for å filtrere på om en egenskap har verdi eller ikke. Parenteser støttes også for å gruppere betingelser. Det er mulig å negere grupperte betingelser med NOT.

Eksempel på bruk av parenteser

Trafikkulykke på lørdag eller søndag med skadegrad "Alvorlig skadd": (egenskap(5054)=6248 OR egenskap(5054)=6249) AND egenskap(5074)=6429