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"&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 nytt egenskapsfilter som andre parameter.
- Eksempel: Tunneler med Tunnelløp lengre enn 2km:
/vegobjekter/581?egenskap=relasjon(67, egenskap(1313)>2000)
Filtrering på overlappende objekter
API-et filtrerer også på objekter som er stedfestet sammen ved bruk av overlapp
-parameteren.
- Eksempel: Trafikkulykker på samme sted som tunnelløp:
/vegobjekter/570?overlapp=67
Overlapp med egenskapsfilter
Overlappfilter kan kombineres med egenskapsfilter.
- Eksempel: Trafikkulykker på samme sted som fartsgrense lik 80 km/t:
/vegobjekter/570?overlapp=105(egenskap(2021)=2738)
Funksjoner og operatorer
Spørrespråket inneholder funksjoner som overlapp
, egenskap
og relasjon
, samt sammenligningsoperatorer som =
, !=
, >
, <
, in
, notin
, AND
og OR
.
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.
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