from datetime import datetime import geopandas as gpd import STARTHER import lastnedvegnett import skrivdataframe import nvdbgeotricks t0 = datetime.now() mittfilter = lastnedvegnett.filtersjekk( ) mittfilter['vegsystemreferanse'] = 'Fv' # mittfilter.pop( 'kryssystem', None ) mittfilter.pop( 'sideanlegg', None ) myGdf = nvdbgeotricks.firefeltrapport( mittfilter=mittfilter, felttype='K' ) myGdf['Lengde kollektivfelt'] = myGdf['kollektivfelt_antsider'] * myGdf['lengde'] statistikk = myGdf.groupby( ['fylke'] ).agg( { 'lengde' : 'sum', 'Lengde kollektivfelt' : 'sum' } ).astype(int).reset_index() statistikk.rename( columns={ 'lengde' : 'Lengde en retning (m)', 'Lengde kollektivfelt' : 'Lengde per kollektivfelt (m)' }, inplace=True ) skrivdataframe.skrivdf2xlsx( statistikk, 'Kostra 25 - Fylkesveg med kollektivfelt.xlsx', sheet_name=, metadata=mittfilter) # myGdf.to_file( 'kostraleveranser.gpkg', layer='kollektivfelt', driver='GPKG') # myGdf = gpd.read_file( 'kostraleveranser.gpkg', layer='kollektivfelt') skrivdataframe.skrivdf2xlsx( statistikk, '../../output/Kostra 25 - Fylkesveg med kollektivfelt.xlsx', sheet_name='Fylkesveg med kollektivfelt', metadata=mittfilter) tidsbruk = datetime.now() - t0
t0 = datetime.now() mittfilter = lastnedvegnett.filtersjekk() mittfilter['vegsystemreferanse'] = 'Fv' junk = mittfilter.pop('historisk', None) # myGdf = lastnedvegnett.vegnetthelelandet( mittfilter=mittfilter ) # myGdf.to_file( 'vegnetthelelandet.gpkg', layer='norge', driver='GPKG') # myGdf = gpd.read_file( 'vegnetthelelandet.gpkg', layer='norge') # lastnedvegnett.rapport01_gdf2excel( myGdf, filnavn='../kostraleveranse2020/Kostra 01 - Vegnett hele landet.xlsx', metadata=mittfilter) sok = nvdbapiv3.nvdbFagdata(595) sok.filter(mittfilter) data = sok.to_records() mydf = pd.DataFrame(data) lengde = mydf.groupby(['fylke', 'vegkategori', 'nummer']).agg({ 'segmentlengde': 'sum' }).reset_index() lengde['Veg'] = 'FV' + lengde['nummer'].astype(str) lengde['Lengde (m)'] = lengde['segmentlengde'] lengde = lengde[['fylke', 'Veg', 'Lengde (m)']] skrivdataframe.skrivdf2xlsx( lengde, 'Kostra 02 - Fylkesveg med motorveg og motortrafikkveg.xlsx', sheet_name='Fv med motor(trafikk)veg', metadata=mittfilter) tidsbruk = datetime.now() - t0
mittfilter = lastnedvegnett.kostraFagdataFilter(mittfilter={ 'egenskap': '1263=7304', 'overlapp': overlappfilter }) sok = nvdbapiv3.nvdbFagdata(60) sok.filter(mittfilter) bruGdf = nvdbgeotricks.records2gdf(sok.to_records()) # Oppsummerer bru. Her må vi ta hensyn til at noen av bruene mangler egenskapen "Lengde" bruGdf_medLengde = bruGdf[~bruGdf['Lengde'].isnull()].drop_duplicates( subset='nvdbId') bruGdf_uLengde = bruGdf[bruGdf['Lengde'].isnull()].copy() bruGdf_uLengde['Lengde'] = bruGdf_uLengde['segmentlengde'] bru_alleharLengde = pd.concat([bruGdf_medLengde, bruGdf_uLengde]) telling = bru_alleharLengde.groupby(['fylke']).agg({ 'nvdbId': 'nunique', 'Lengde': 'sum' }).reset_index() telling.rename(columns={ 'nvdbId': 'Antall', 'lengde': 'Lengde (m)' }, inplace=True) skrivdataframe.skrivdf2xlsx(telling, '../../output/Kostra 18 - Bruer under 10t.xlsx', sheet_name='Bru aksellast under 10t', metadata=mittfilter) tidsbruk = datetime.now() - t0
def rapport01_gdf2excel(mygdf, filnavn='vegnettkostra.xlsx', sheet_prefiks='', metadata=None): """ Lager excel-oppsummering av lengde vegnett per fylke, kommune og vegkategori """ # Konverterer lengde til km mygdf = deepcopy(mygdf) mygdf['lengde'] = mygdf['lengde'] / 1000 # Finner kryssystem mygdf['kryss'] = mygdf['vegsystemreferanse'].apply( lambda x: harViKryssSystem(x)) kryss = mygdf[mygdf['kryss']] # t1 = mygdf.groupby( [ 'fylke' ]).agg({ 'lengde' : 'sum' }).reset_index() t2 = mygdf.groupby(['fylke', 'vegkategori']).agg({ 'lengde': 'sum' }).reset_index() t2x = kryss.groupby(['fylke', 'vegkategori']).agg({ 'lengde': 'sum' }).reset_index() t3 = mygdf.groupby(['fylke', 'kommune']).agg({ 'lengde': 'sum' }).reset_index() t4 = mygdf.groupby(['fylke', 'kommune', 'vegkategori']).agg({ 'lengde': 'sum' }).reset_index() t2 = skrivdataframe.fylkesnr2fylkesnavn(t2) t2_transponert = skrivdataframe.transponerFylkePerVegkategori(t2) t2_transponert['Riksveg (E+R)'] = t2_transponert['E'] + t2_transponert['R'] t2_transponert = t2_transponert[[ 'fylke', 'Riksveg (E+R)', 'E', 'R', 'F', 'K', 'P', 'S' ]] t2x = skrivdataframe.fylkesnr2fylkesnavn(t2x) t2x_transponert = skrivdataframe.transponerFylkePerVegkategori(t2x) t2x_transponert[ 'Riksveg (E+R)'] = t2x_transponert['E'] + t2x_transponert['R'] t2x_transponert = t2x_transponert[[ 'fylke', 'Riksveg (E+R)', 'E', 'R', 'F', 'K', 'P' ]] t4_transponert = skrivdataframe.transponerKommunePerVegkategori(t4) # # Skal ha med formattering fra xlsxwriter, men ikke tilgjengelig akkurat nu... # t2.to_excel( filnavn, sheet_name=sheet_prefiks + 'Fylke per vegkategori' ) # t3.to_excel( filnavn, sheet_name=sheet_prefiks +'per kommune') # t4.to_excel( filnavn, sheet_name=' per kommune og vegkategori') navneliste = [ sheet_prefiks + 'Tabell fylker', # t2_transponert sheet_prefiks + 'Lengde kryssystem', # t2x_transponert sheet_prefiks + 'Tabell kommuner', # t4_transponert sheet_prefiks + 'radvis per fylke og vegkat', # t2 sheet_prefiks + 'radvis per kommune', # t3 sheet_prefiks + 'radvis per kommune og vegkat' ] # t4 skrivdataframe.skrivdf2xlsx( [t2_transponert, t2x_transponert, t4_transponert, t2, t3, t4], filnavn=filnavn, sheet_name=navneliste, metadata=metadata)
mittfilter['adskiltelop'] = 'med,nei' mittfilter['sideanlegg'] = 'false' sok = nvdbapiv3.nvdbFagdata(904) sok.filter(mittfilter) myGdf = nvdbgeotricks.records2gdf(sok.to_records()) myGdf_G = myGdf[myGdf['trafikantgruppe'] == 'G'].copy() myGdf = myGdf[myGdf['trafikantgruppe'] == 'K'] # For debugging lengde = myGdf.groupby(['fylke', 'vegkategori', 'nummer']).agg({ 'segmentlengde': 'sum' }).reset_index() lengde['Veg'] = 'FV' + lengde['nummer'].astype(str) lengde['Lengde (m)'] = lengde['segmentlengde'] lengde = lengde[['fylke', 'Veg', 'Lengde (m)']] telling = myGdf.groupby(['fylke']).agg({ 'segmentlengde': 'sum' }).astype(int).reset_index() telling.rename(columns={'segmentlengde': 'Lengde (m)'}, inplace=True) skrivdataframe.skrivdf2xlsx( telling, '../../output/Kostra 06 - Fylkesveg totalvekt u 50t.xlsx', sheet_name='Fv totalvekt u 50t', metadata=mittfilter) tidsbruk = datetime.now() - t0
myGdf.to_file('debug_grus.gpkg', layer='grus aadt over 5000', driver='GPKG') # Debugger, henter det inverse søket. filter2 = lastnedvegnett.kostraFagdataFilter(mittfilter={}) filter2['overlapp'] = '241(1216=3615)' filter2['egenskap'] = '4623>=5000' sok = nvdbapiv3.nvdbFagdata(540) sok.filter(filter2) aadt_Gdf = nvdbgeotricks.records2gdf(sok.to_records()) aadt_Gdf.to_file('debug_grus.gpkg', layer='AADT over 5000 grus', driver='GPKG') # Debugger, sjekker lengde per vegnummer lengde = myGdf.groupby(['fylke', 'vegkategori', 'nummer']).agg({ 'segmentlengde': 'sum' }).reset_index() lengde['Veg'] = 'FV' + lengde['nummer'].astype(str) lengde['Lengde (m)'] = lengde['segmentlengde'] lengde = lengde[['fylke', 'Veg', 'Lengde (m)']] telling = myGdf.groupby(['fylke']).agg({'segmentlengde': 'sum'}).reset_index() telling.rename(columns={'segmentlengde': 'Lengde (m)'}, inplace=True) skrivdataframe.skrivdf2xlsx( telling, '../../output/Kostra 11 - Fylkesveg uten fast dekke ÅDT over 5000.xlsx', sheet_name='Fv grus over 5000ÅDT', metadata=mittfilter) tidsbruk = datetime.now() - t0
import skrivdataframe import nvdbapiv3 t0 = datetime.now() skjermfilter = lastnedvegnett.kostraFagdataFilter( mittfilter={ 'egenskap' : '1247=1994'} ) skjermsok = nvdbapiv3.nvdbFagdata( 3 ) skjermsok.filter( skjermfilter ) skjerm = pd.DataFrame( skjermsok.to_records( ) ) skjermlengde = skjerm.groupby( ['fylke' ]).agg( { 'nvdbId': 'nunique', 'segmentlengde' : 'sum' } ).reset_index() skjermlengde.rename( columns={ 'nvdbId' : 'Antall', 'segmentlengde' : 'Lengde (m)' }, inplace=True ) vollfilter = lastnedvegnett.kostraFagdataFilter( mittfilter={ 'egenskap' : '1286=1996'} ) vollsok = nvdbapiv3.nvdbFagdata( 234 ) vollsok.filter( vollfilter ) voll = pd.DataFrame( vollsok.to_records( ) ) volllengde = voll.groupby( ['fylke' ]).agg( { 'nvdbId': 'nunique', 'segmentlengde' : 'sum' } ).reset_index() volllengde.rename( columns={ 'nvdbId' : 'Antall', 'segmentlengde' : 'Lengde (m)' }, inplace=True ) # lengde['Veg'] = 'FV' + lengde['nummer'].astype(str) # lengde['Lengde (m)'] = lengde['segmentlengde'] # lengde = lengde[[ 'fylke', 'Veg', 'Lengde (m)']] mittfilter = deepcopy( skjermfilter ) egfilter_skjerm = mittfilter.pop( 'egenskap' ) mittfilter['egenskapsfilter 3 Skjerm'] = egfilter_skjerm mittfilter['egenskapsfilter 234 Voll'] = vollfilter['egenskap'] skrivdataframe.skrivdf2xlsx( [ skjermlengde, volllengde ], '../../output/Kostra 24 - Fylkesveg med stoyskjerm og voll.xlsx', sheet_name=['Fylkesveg med støyskjerm', 'Fylkesveg med voll' ], metadata=mittfilter) tidsbruk = datetime.now() - t0
sok = nvdbapiv3.nvdbFagdata(241) sok.filter(mittfilter) data = sok.to_records() mydf = pd.DataFrame(data) mydf_K = mydf[mydf['trafikantgruppe'] == 'K'] mydf_G = mydf[mydf['trafikantgruppe'] == 'G'] # Debugger, sjekker lengde per vegnummer # lengde = mydf.groupby( ['fylke', 'vegkategori', 'nummer' ]).agg( {'segmentlengde' : 'sum' } ).reset_index() # lengde['Veg'] = 'FV' + lengde['nummer'].astype(str) # lengde['Lengde (m)'] = lengde['segmentlengde'] # lengde = lengde[[ 'fylke', 'Veg', 'Lengde (m)']] tellingK = mydf_K.groupby(['fylke']).agg({ 'segmentlengde': 'sum' }).astype(int).reset_index() tellingG = mydf_G.groupby(['fylke']).agg({ 'segmentlengde': 'sum' }).astype(int).reset_index() tellingK.rename(columns={'segmentlengde': 'Lengde kjøreveg (m)'}, inplace=True) tellingG.rename(columns={'segmentlengde': 'Lengde gang/sykkelveg (m)'}, inplace=True) skrivdataframe.skrivdf2xlsx( [tellingK, tellingG], '../../output/Kostra 03 - Fylkesveg uten fast dekke.xlsx', sheet_name=['Fv grus kjørende', 'Fv grus G S'], metadata=mittfilter) tidsbruk = datetime.now() - t0
import pandas as pd import numpy as np import STARTHER import lastnedvegnett import skrivdataframe import nvdbapiv3 t0 = datetime.now() sterkfilter = lastnedvegnett.kostraFagdataFilter( mittfilter={'egenskap': '9500=13384'}) vegmerksok = nvdbapiv3.nvdbFagdata(836) vegmerksok.filter(sterkfilter) vegmerk = pd.DataFrame(vegmerksok.to_records()) vegmerklendge = vegmerk.groupby(['fylke']).agg({ 'nvdbId': 'nunique', 'segmentlengde': 'sum' }).reset_index() vegmerklendge.rename(columns={ 'nvdbId': 'Antall', 'segmentlengde': 'Lengde (m)' }, inplace=True) skrivdataframe.skrivdf2xlsx( vegmerklendge, '../../output/Kostra 23 - Fylkesveg med forsterket midtoppmerking.xlsx', sheet_name='FV med forsterket vegmerking', metadata=sterkfilter) tidsbruk = datetime.now() - t0
import STARTHER import lastnedvegnett import skrivdataframe import nvdbapiv3 import nvdbgeotricks t0 = datetime.now() mittfilter = lastnedvegnett.kostraFagdataFilter( mittfilter={ 'egenskap' : '5277 < 4 AND 5270=8151' } ) # mittfilter = lastnedvegnett.kostraFagdataFilter( mittfilter={ 'egenskap' : ' 5277 < 4 AND ( 5270=8168 OR 5270=8149 ) ', 'overlapp' : '60(1263=7304)'} ) # mittfilter = lastnedvegnett.kostraFagdataFilter( mittfilter={ 'overlapp' : '591(5277 < 4 AND ( 5270=8168 OR 5270=8149 ) ) ', 'egenskap' : '1263=7304'} ) sok = nvdbapiv3.nvdbFagdata( 591 ) sok.filter( mittfilter ) myGdf = nvdbgeotricks.records2gdf( sok.to_records( ) ) # myGdf.to_file( 'brudebug.gpkg', layer='nyeHoydeBegrBruer', driver='GPKG') # Debugger hvilken effekt overlapp med bru evt måtte ha... filter2 = deepcopy( mittfilter ) filter2['overlapp'] = '60' sok = nvdbapiv3.nvdbFagdata( 591 ) sok.filter( filter2 ) testGdf = nvdbgeotricks.records2gdf( sok.to_records()) telling = myGdf.groupby( ['fylke' ]).agg( { 'nvdbId': 'nunique' } ).astype(int).reset_index() telling.rename( columns={ 'nvdbId' : 'Antall', 'lengde' : 'Lengde (m)' }, inplace=True ) skrivdataframe.skrivdf2xlsx( telling, '../../output/Kostra 09 - Undergang lavere enn 4m.xlsx', sheet_name='Undergang lavere enn 4m', metadata=mittfilter) tidsbruk = datetime.now() - t0
sok = nvdbapiv3.nvdbFagdata( 904 ) sok.filter( mittfilter ) myGdf = nvdbgeotricks.records2gdf( sok.to_records( ) ) myGdf_G = myGdf[ myGdf['trafikantgruppe'] == 'G'].copy() myGdf = myGdf[ myGdf['trafikantgruppe'] == 'K'] lengde = myGdf.groupby( ['fylke', 'vegkategori', 'nummer' ]).agg( {'segmentlengde' : 'sum' } ).reset_index() lengde['Veg'] = 'FV' + lengde['nummer'].astype(str) lengde['Lengde (m)'] = lengde['segmentlengde'] lengde = lengde[[ 'fylke', 'Veg', 'Lengde (m)']] telling = myGdf.groupby( ['fylke' ]).agg( { 'segmentlengde' : 'sum'} ).astype(int).reset_index() telling.rename( columns={ 'segmentlengde' : 'Lengde (m)' }, inplace=True) # Henter et kontrolldatasett uten "adskilte løp" # filter2 = { 'tidspunkt' : '2020-12-31', 'vegsystemreferanse': 'Fv', 'egenskap' : egenskapfilter } # filter2.pop( 'adskiltelop', None ) # filter2.pop( 'sideanlegg', None ) # sok2 = nvdbapiv3.nvdbFagdata( 904 ) # sok2.filter( filter2 ) # mydf2 = pd.DataFrame( sok2.to_records( ) ) # print( "Lengdedifferanse MED og UTEN filter for adskilte løp:\t", myGdf['segmentlengde'].sum()- mydf2['segmentlengde'].sum()) skrivdataframe.skrivdf2xlsx( telling, '../../output/Kostra 05 - Fylkesveg aksellast u 10t.xlsx', sheet_name='Fv aksellast u 10t', metadata=mittfilter) tidsbruk = datetime.now() - t0
'segmentlengde': 'sum' }).astype(int).reset_index() lengde['Veg'] = lengde['vegkategori'] + 'v' + lengde['nummer'].astype(str) nyttnavn = 'Lengde midtrekkverk totalt per vegnummer (m)' lengde.rename(columns={'segmentlengde': nyttnavn}, inplace=True) lengde = lengde[['fylke', 'Veg', 'kjfelt', nyttnavn]] telling = myGdf.groupby(['fylke']).agg({ 'segmentlengde': 'sum' }).astype(int).reset_index() telling.rename(columns={'segmentlengde': 'Lengde midtrekkverk totalt (m)'}, inplace=True) kun23felt = myGdf[myGdf['kjfelt'] == '2-3felt'] telling2 = kun23felt.groupby(['fylke']).agg({ 'segmentlengde': 'sum' }).astype(int).reset_index() telling2.rename(columns={'segmentlengde': 'Lengde midtrekkverk 2-3felt (m)'}, inplace=True) skrivdataframe.skrivdf2xlsx( [telling2, telling, lengde], '../../output/Kostra 20 - Midtrekkverk to og trefelts Fv.xlsx', sheet_name=[ 'Midtrekkverk 2-3felt', 'Alle midtrekkverk', 'Midtrekkverk per vegnummer' ], metadata=mittfilter) tidsbruk = datetime.now() - t0
mittfilter['adskiltelop'] = 'med,nei' mittfilter['sideanlegg'] = 'false' sok = nvdbapiv3.nvdbFagdata(105) sok.filter(mittfilter) myGdf = nvdbgeotricks.records2gdf(sok.to_records()) myGdf_G = myGdf[myGdf['trafikantgruppe'] == 'G'].copy() myGdf = myGdf[myGdf['trafikantgruppe'] == 'K'] # For debugging lengde = myGdf.groupby(['fylke', 'vegkategori', 'nummer']).agg({ 'segmentlengde': 'sum' }).reset_index() lengde['Veg'] = 'FV' + lengde['nummer'].astype(str) lengde['Lengde (m)'] = lengde['segmentlengde'] lengde = lengde[['fylke', 'Veg', 'Lengde (m)']] telling = myGdf.groupby(['fylke']).agg({ 'segmentlengde': 'sum' }).astype(int).reset_index() telling.rename(columns={'segmentlengde': 'Lengde (m)'}, inplace=True) skrivdataframe.skrivdf2xlsx( telling, '../../output/Kostra 07 - Fylkesveg maks 50kmt.xlsx', sheet_name='Fv 50km eller lavere', metadata=mittfilter) tidsbruk = datetime.now() - t0
import nvdbapiv3 import nvdbgeotricks t0 = datetime.now() filter2 = lastnedvegnett.kostraFagdataFilter(mittfilter={}) filter2['egenskap'] = '4623>=5000' sok = nvdbapiv3.nvdbFagdata(540) sok.filter(filter2) myGdf = nvdbgeotricks.records2gdf(sok.to_records()) myGdf.to_file('debug_grus.gpkg', layer='AADT alt over 5000', driver='GPKG') # Debugger, sjekker lengde per vegnummer lengde = myGdf.groupby(['fylke', 'vegkategori', 'nummer']).agg({ 'segmentlengde': 'sum' }).reset_index() lengde['Veg'] = 'FV' + lengde['nummer'].astype(str) lengde['Lengde (m)'] = lengde['segmentlengde'] lengde = lengde[['fylke', 'Veg', 'Lengde (m)']] telling = myGdf.groupby(['fylke']).agg({'segmentlengde': 'sum'}).reset_index() skrivdataframe.skrivdf2xlsx( telling, '../../output/Kostra 12 - Fylkesveg ÅDT over 5000.xlsx', sheet_name='Fv over 5000ÅDT', metadata=filter2) tidsbruk = datetime.now() - t0
mittfilter['egenskap'] = egenskapfilter mittfilter['adskiltelop'] = 'med,nei' mittfilter['sideanlegg'] = 'false' sok = nvdbapiv3.nvdbFagdata(904) sok.filter(mittfilter) myGdf = nvdbgeotricks.records2gdf(sok.to_records()) myGdf_G = myGdf[myGdf['trafikantgruppe'] == 'G'].copy() myGdf = myGdf[myGdf['trafikantgruppe'] == 'K'] # For debugging lengde = myGdf.groupby(['fylke', 'vegkategori', 'nummer']).agg({ 'segmentlengde': 'sum' }).reset_index() lengde['Veg'] = 'FV' + lengde['nummer'].astype(str) lengde['Lengde (m)'] = lengde['segmentlengde'] lengde = lengde[['fylke', 'Veg', 'Lengde (m)']] telling = myGdf.groupby(['fylke']).agg({ 'segmentlengde': 'sum' }).astype(int).reset_index() telling.rename(columns={'segmentlengde': 'Lengde (m)'}, inplace=True) skrivdataframe.skrivdf2xlsx(telling, '../../output/Kostra 08 - maks lengde u 19m.xlsx', sheet_name='Fv lengde u 19,5m', metadata=mittfilter) tidsbruk = datetime.now() - t0
# mittfilter = lastnedvegnett.kostraFagdataFilter( mittfilter={ 'overlapp' : '591(5277 < 4 AND ( 5270=8168 OR 5270=8149 ) ) ', 'egenskap' : '1263=7304'} ) sok = nvdbapiv3.nvdbFagdata(60) sok.filter(mittfilter) bruGdf = nvdbgeotricks.records2gdf(sok.to_records()) bruGdf.to_file('brudebug.gpkg', layer='nyeHoydeBegrBruer', driver='GPKG') # Oppsummerer bru. Her må vi ta hensyn til at noen av bruene mangler egenskapen "Lengde" bruGdf_medLengde = bruGdf[~bruGdf['Lengde'].isnull()].drop_duplicates( subset='nvdbId') bruGdf_uLengde = bruGdf[bruGdf['Lengde'].isnull()].copy() bruGdf_uLengde['Lengde'] = bruGdf_uLengde['segmentlengde'] bru_alleharLengde = pd.concat([bruGdf_medLengde, bruGdf_uLengde]) telling = bru_alleharLengde.groupby(['fylke']).agg({ 'nvdbId': 'nunique', 'Lengde': 'sum' }).reset_index() telling.rename(columns={ 'nvdbId': 'Antall', 'lengde': 'Lengde (m)' }, inplace=True) skrivdataframe.skrivdf2xlsx( telling, '../../output/Kostra 19 - Bruer hoyde mindre enn 4m.xlsx', sheet_name='Bru høydebegrensning under 4m', metadata=mittfilter) tidsbruk = datetime.now() - t0
'typeVeg_left': 'typeVeg', 'kommune_left': 'kommune', 'fylke_left': 'fylke', 'vref_left': 'vref', 'vegkategori_left': 'vegkategori', 'fase_left': 'fase', 'nummer_left': 'nummer', 'adskilte_lop_left': 'adskilte_lop', 'trafikantgruppe_left': 'trafikantgruppe' } geojoin.rename(columns=oversett, inplace=True) tunnelGdfV2 = pd.concat([harLengde, geojoin[col]]) telling = tunnelGdfV2.groupby(['fylke']).agg({ 'nvdbId': 'nunique', 'Lengde, offisiell': 'sum' }).reset_index() telling.rename(columns={ 'nvdbId': 'Antall', 'Lengde, offisiell': 'Lengde (m)' }, inplace=True) skrivdataframe.skrivdf2xlsx(telling, '../../output/Kostra 16 - tunnell u 4m.xlsx', sheet_name='Tunnel u 4m', metadata=mittfilter) tidsbruk = datetime.now() - t0
import geopandas as gpd import STARTHER import lastnedvegnett import skrivdataframe import nvdbgeotricks import nvdbapiv3 t0 = datetime.now() mittfilter = { 'tidspunkt' : '2020-12-31', 'trafikantgruppe' : 'G', 'detaljniva' : 'VT,VTKB', 'adskiltelop' : 'med,nei', 'historisk' : 'true', 'vegsystemreferanse' : 'Fv', 'veglenketype' : 'hoved', 'typeveg' : 'kanalisertVeg,enkelBilveg,rampe,rundkjøring,gangOgSykkelveg,sykkelveg,gangveg,gatetun' } myGdf = nvdbgeotricks.vegnett2gdf( mittfilter=mittfilter ) statistikk = myGdf.groupby( ['fylke'] ).agg( { 'lengde' : 'sum' } ).reset_index() skrivdataframe.skrivdf2xlsx( statistikk, 'Kostra 21 gang og sykkelveg.xlsx', sheet_name='Fylkesveg gang og sykkelveg', metadata=mittfilter) myGdf.to_file( 'sykkelveg.gpkg', layer='gangsykkelveg', driver='GPKG') tidsbruk = datetime.now() - t0
# overlappfilter = '904(10901=18186 OR 10901=18187 OR 10901=18188 OR 10901=18189 OR 10901=18190)' mittfilter = lastnedvegnett.kostraFagdataFilter( mittfilter={'egenskap': '1263=7304 OR 1263=7305'}) sok = nvdbapiv3.nvdbFagdata(60) sok.filter(mittfilter) bruGdf = nvdbgeotricks.records2gdf(sok.to_records()) # Oppsummerer bru. Her må vi ta hensyn til at noen av bruene mangler egenskapen "Lengde" bruGdf_medLengde = bruGdf[~bruGdf['Lengde'].isnull()].drop_duplicates( subset='nvdbId') bruGdf_uLengde = bruGdf[bruGdf['Lengde'].isnull()].copy() bruGdf_uLengde['Lengde'] = bruGdf_uLengde['segmentlengde'] bru_alleharLengde = pd.concat([bruGdf_medLengde, bruGdf_uLengde]) telling = bru_alleharLengde.groupby(['fylke']).agg({ 'nvdbId': 'nunique', 'Lengde': 'sum' }).reset_index() telling.rename(columns={ 'nvdbId': 'Antall', 'lengde': 'Lengde (m)' }, inplace=True) skrivdataframe.skrivdf2xlsx(telling, '../../output/Kostra 17 - Bruer fylkesveg.xlsx', sheet_name='Bruer fylkesveg', metadata=mittfilter) tidsbruk = datetime.now() - t0
'vref_left' : 'vref', 'vegkategori_left' : 'vegkategori', 'fase_left' : 'fase', 'nummer_left' : 'nummer', 'adskilte_lop_left' : 'adskilte_lop', 'trafikantgruppe_left' : 'trafikantgruppe', 'Prosjektreferanse_left' : 'Prosjektreferanse', 'Brutus_Id_left' : 'Brutus_Id', 'sluttdato_left' : 'sluttdato' } lop_manglerLengde.rename( columns=oversett, inplace=True ) lop_harLengde.rename( columns=oversett, inplace=True ) tunnelGdfV2 = pd.concat( [ harLengde, lop_manglerLengde[col], lop_harLengde[col] ] ) telling = tunnelGdfV2.groupby( ['fylke' ]).agg( { 'nvdbId': 'nunique', 'Lengde, offisiell' : 'sum'} ).astype(int).reset_index() telling.rename( columns={ 'nvdbId' : 'Antall', 'Lengde, offisiell' : 'Lengde (m)' }, inplace=True ) skrivdataframe.skrivdf2xlsx( telling, '../../output/Kostra 13 og 14 - tunnell fylkesveg.xlsx', sheet_name='Tunnel Fv', metadata=mittfilter) langeTunneller = tunnelGdfV2[ tunnelGdfV2['Lengde, offisiell'] >= 500 ] telling = langeTunneller.groupby( ['fylke' ]).agg( { 'nvdbId': 'nunique', 'Lengde, offisiell' : 'sum'} ).astype(int).reset_index() telling.rename( columns={ 'nvdbId' : 'Antall', 'Lengde, offisiell' : 'Lengde (m)' }, inplace=True ) skrivdataframe.skrivdf2xlsx( telling, '../../output/Kostra 15 - tunnell lengre enn 500m.xlsx', sheet_name='Tunnel lengre enn 500m', metadata=mittfilter) tidsbruk = datetime.now() - t0