Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
#NVDBapi fetching NVDB by object ID (and type). See also https://github.com/LtGlahn/nvdbapi-V2
# -*- coding: utf-8 -*-
"""Fetching a bunch of objects of a specifid type from Norwegian National
road database (NVDB). See https://www.vegvesen.no/nvdb/apidokumentasjon/
Here, we set up a geographic filter for a certain road number (fv30) and county (16),
and a property filter (skiltnummer = Fartsgrense 70 km/t).
"""
import requests
import json
api = 'https://www.vegvesen.no/nvdb/api/v2/'
# Http headers
# PLEASE EDIT a valid email adress
headers = { 'accept' : 'application/vnd.vegvesen.nvdb-v2+json',
'X-Client' : 'nvdbapi.py',
'X-Kontaktperson' : 'YOUR@EMAIL.com'}
# Henter skiltplater på Fv30 i Sør-Trøndelag
objType = 96
url = api + 'vegobjekter/' + str( objType )
# https://www.vegvesen.no/nvdb/api/v2/vegobjekter/96
# Filtre og andre søkeparametre
filtre = {'egenskap': '5530=8876', 'fylke': 16, 'vegreferanse': 'fv30'}
# Skiltnummer = Fartsgrense 70 km/t
# How many objects are there? Fetching statistics...
rstat = requests.get( url + '/statistikk', headers=headers, params=filtre )
print( rstat.json())
# Hva skal vi ha med av egenskaper og lokasjonsdata?
# Ref https://www.vegvesen.no/nvdb/apidokumentasjon/#/get/vegobjekter
# Under "Velg respons"
filtre['inkluder'] = 'alle'
r = requests.get( url, headers = headers, params = filtre)
mangeskilt = r.json()
#skilt = r.json()
#
print( mangeskilt.keys() )
skilt = mangeskilt['objekter'][0]
# print( 'RELASJONER:\n\n', json.dumps(skilt['relasjoner'], indent=4 ))
# print( 'GEOMETRI:\n\n', json.dumps( skilt['geometri'], indent=4))
print( 'LOKASJON:\n\n', skilt['lokasjon'])
# -*- coding: utf-8 -*-
import requests
api = 'https://www.vegvesen.no/nvdb/api/v2/'
# Http headers
# PLEASE EDIT a valid email adress
headers = { 'accept' : 'application/vnd.vegvesen.nvdb-v2+json',
'X-Client' : 'nvdbapi.py',
'X-Kontaktperson' : 'YOUR@EMAIL.com'}
# Henter skiltplater på Fv30 i Sør-Trøndelag
objType = 96
url = api + 'vegobjekter/' + str( objType )
# https://www.vegvesen.no/nvdb/api/v2/vegobjekter/96
# Filtre og andre søkeparametre
#filtre = {'egenskap': '5530=8876', 'fylke': 16, 'vegreferanse': 'fv30'}
filtre = { 'fylke': 16, 'vegreferanse': 'fv30'}
# How many objects are there? Fetching statistics...
rstat = requests.get( url + '/statistikk', headers=headers, params=filtre )
print( rstat.json())
# Hva skal vi ha med av egenskaper og lokasjonsdata?
# Ref https://www.vegvesen.no/nvdb/apidokumentasjon/#/get/vegobjekter
# Under "Velg respons"
filtre['inkluder'] = 'alle'
r = requests.get( url, headers = headers, params = filtre)
allpages = []
page = r.json()
allpages.append(page)
count = 1
hentNeste = True
while hentNeste:
count += 1
print("Sjekker neste paginering oppslag:", str(count), )
r = requests.get( page['metadata']['neste']['href'],
headers=headers)
page = r.json()
allpages.append(page)
# Do something with "page['objekter']"
if page['metadata']['returnert'] == 0:
hentNeste = False
print(str(count), "pagineringer\n" )
for i, p in enumerate(allpages):
print("side nr:", str(i), p['metadata'], "\n\n")
# -*- coding: utf-8 -*-
"""Fetching a single object of known ID from Norwegian National
road database (NVDB). See
https://www.vegvesen.no/nvdb/apidokumentasjon/vegobjekter
"""
import requests
import json
api = 'https://www.vegvesen.no/nvdb/api/v2/'
# Http headers
# PLEASE EDIT a valid email adress
headers = { 'accept' : 'application/vnd.vegvesen.nvdb-v2+json',
'X-Client' : 'nvdbapi.py',
'X-Kontaktperson' : 'YOUR@EMAIL.com'}
# Henter en spesifikk forekosmt av skiltplater
objType = 96
objId = 276522616
url = api + 'vegobjekter/' + '/'.join( [ str( objType ), str( objId) ] )
# https://www.vegvesen.no/nvdb/api/v2/vegobjekter/96/276522616
r = requests.get( url, headers = headers)
skilt = r.json()
print( skilt.keys() )
print( 'RELASJONER:\n\n', json.dumps(skilt['relasjoner'], indent=4 ))
print( 'GEOMETRI:\n\n', json.dumps( skilt['geometri'], indent=4))
print( 'LOKASJON:\n\n', skilt['lokasjon'])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.