Skip to content

Instantly share code, notes, and snippets.

@LtGlahn
Last active April 4, 2018 08:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LtGlahn/83487cb8578a215d255289f15cdd56be to your computer and use it in GitHub Desktop.
Save LtGlahn/83487cb8578a215d255289f15cdd56be to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
"""
Finn lengde av grusveger (vegdekke med massetype = grusveg)
Supplerer rapportgenerator http://labs.vegdata.no/nvdb-rapporter/
som går mot V1 av NVDB api, og derfor ikke klipper lengder på kommunegrenser
ref http://api.vegdata.no/endepunkt/vegobjekter.html
"""
import requests
import numpy as np
import pandas as pd
# standard header for kall til NVDB api
headers = { 'accept' : 'application/vnd.vegvesen.nvdb-v2+json',
'X-Client' : 'nvdbapi.py',
'X-Kontaktperson' : 'jan.kristian.jensen@vegvesen.no'
}
segmentering = 'true' # Respekter kommmunegrenser
# segmentering = 'false'
# Henter kommuner fra geonorge
r = requests.get( 'https://register.geonorge.no/api/subregister/sosi-kodelister/kartverket/kommunenummer.json?' )
kommuner = r.json()
output = []
# Plukker ut alle kommuner for Hedmark fylkesnr 4
for kom in kommuner['containeditems']:
if np.floor( int( kom['codevalue']) / 100 ) == 4:
params = { 'segmentering' : segmentering,
'vegreferanse' : 'F',
'kommune' : kom['codevalue'],
'egenskap' : '1216=3615' # Massetype = grusveg
}
url = 'https://www.vegvesen.no/nvdb/api/v2/vegobjekter/241/statistikk'
r = requests.get( url, params, headers=headers)
svar = r.json()
print( f" {kom['codevalue']} \t {kom['label']:{25}} \t {svar['strekningslengde']:{12}}" )
output.append( { 'komm.nr' : kom['codevalue'],
'komm.navn' : kom['label'],
'meter grusveg' : svar['strekningslengde']} )
# Dumper til excel
grus = pd.DataFrame( output)
writer = pd.ExcelWriter( 'grusveger_hedmark_perkommune.xlsx')
grus.to_excel( writer)
writer.save()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment