def hentAadt( vegObjekt): objektTyper = [ {'id': 540, 'antall': 2500} ] lokasjon = { 'veglenker': vegObjekt.veglenker() } params = { 'geometriType' : 'WGS84' } trafikkmengde = nvdb.query_search( objektTyper, lokasjon = lokasjon, params = params) return trafikkmengde
def hentbomstasjon( sokeObjekt='', lokasjon = '', params = ''): """ Henter alle bomstasjoner fra NVDB api'et. Burde vært datakatalog-drevet, men er det ikke. Koden kan altså knekke hvis fremtidige revisjoner av datakatalogen endrer på bomstasjonenes egenskaper. Funker mot versjon 1.93. Sjekk gjeldende versjon her http://www.vegvesen.no/F*g/Teknologi/Nasjonal+vegdatabank/Datakatalogen evt programatisk mot api'et https://www.vegvesen.no/nvdb/api/datakatalog """ if not sokeObjekt: sokeObjekt = {'objektTyper': [ {'id': 45, 'antall': 250} ] } if not params: params = { 'geometriType' : 'WGS84' } data = nvdb.query_search( sokeObjekt, lokasjon = lokasjon, params = params) # newdata er en liste med lister - en per bomstasjon pluss header newdata, bomGeoJson, aadtGeojson = getRelevantData( data) newdata.reverse() # Snur listen to ganger for å starte med header newdata.append( [ 'bnavn1', 'tliten', 'tstor, vegnummer', 'lat', 'lon', 'harAp', 'apBeskr', 'kommunenr', 'bomstasjonId', 'aadtTotal', 'aadtLGV', 'aadtYear', 'aadtId' ] ) newdata.reverse() csvfil = 'bomstasjoner.csv' nvdb.csv_skriv( csvfil, newdata) # Skriver geojson til fil with open('bomGeoJson.json', 'wb') as fb: json.dump(bomGeoJson, fb) # Skriver geojson til fil with open('aadtGeoJson.json', 'wb') as fa: json.dump(bomGeoJson, fa)
# -*- coding: utf-8 -*- import logging from nvdb import query from nvdb import query_search from nvdb import csv_skriv from nvdb import Objekt logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) requests_log = logging.getLogger("requests") requests_log.setLevel(logging.WARNING) objekttyper = [{'id': 581, 'antall': 10000}] lokasjon = {'fylke': [17]} tunneler = query_search(objekttyper, lokasjon) csv_list = [] tunnel_nr = 0 for tunnel in tunneler.objekter(): tunnel_nr += 1 logger.info('Bearbeider tunnel %s av %s' % (tunnel_nr, tunneler.antall)) tunnel = Objekt(tunnel) row = { 'lengde': 0, 'ulykker': 0, 'drept': 0, 'meget_alvorlig_skadd': 0,
from nvdb import query from nvdb import query_search from nvdb import csv_skriv from nvdb import Objekt from nvdbinbrowser import visNvdbId logging.basicConfig(level=logging.INFO) # logging.basicConfig(level=logging.WARNING) logger = logging.getLogger(__name__) requests_log = logging.getLogger("requests") requests_log.setLevel(logging.WARNING) objekttyper = [{'id': 67, 'antall': 10000}] lokasjon = {'region': [1, 2, 3, 4, 5]} alletunnellop = query_search(objekttyper, lokasjon) csv_list = [] tunnellop_nr = 0 fellestrafikk = { } # Debugging names = [ 'Strind', 'Grills'] nyliste = [] for tunnellop in alletunnellop.objekter(): tunnellop2 = Objekt(tunnellop) navn = tunnellop2.egenskap(1081, verdi=None) if navn and navn[0:6] in names: nyliste.append( tunnellop) #for tunnellop in nyliste:
def hentbomstasjon(): objektTyper = [{"id": 45, "antall": 10000}] bomstasjon = nvdb.query_search(objektTyper) bomstasjon_liste = bomstasjon.objekter() # Empty geojson object, this is where we store our NVDB data. geojson = {"type": "FeatureCollection", "features": []} for bomst in bomstasjon_liste: # Converting JSON structure to NVDB object class (defined in nvdb.py) nvdbObj = nvdb.Objekt(bomst) try: geom = loads(nvdbObj.geometri(geometritype="geometriWgs84")) geomstring = mapping(geom) veglenker = nvdbObj.veglenker() except KeyError, e: print "Ingen geometri", nvdbObj.id # Har noen bruer der vegen er lagt ned => intet lokasjonsobjekt # i NVDB api'et. Trenger bedre håndtering av historikk... else: direction = visveginfo_direction(veglenker[0]["id"], veglenker[0]["fra"], nvdbObj.id) # Assigning to single geojson feature: feature = { "type": "Feature", "geometry": geomstring, "properties": { "bomstasjontype": nvdbObj.egenskap(egenskapstype=9390, verdi=None), "bomst_name_CS": nvdbObj.egenskap(egenskapstype=10714, verdi=None), "anlegg_name": nvdbObj.egenskap(egenskapstype=9391, verdi=None), "bomst_name": nvdbObj.egenskap(egenskapstype=1078, verdi=None), "valid_year": nvdbObj.egenskap(egenskapstype=9413, verdi=None), "url": nvdbObj.egenskap(egenskapstype=10715, verdi=None), "Innkrevningsretning": nvdbObj.egenskap(egenskapstype=9414, verdi=None), "Bomstasjon_Id": nvdbObj.egenskap(egenskapstype=9595, verdi=None), "Bompengeanlegg_Id": nvdbObj.egenskap(egenskapstype=9596, verdi=None), "Takst_liten_bil": nvdbObj.egenskap(egenskapstype=1820, verdi=None), "Takst_stor_bil": nvdbObj.egenskap(egenskapstype=1819, verdi=None), "rushtidtakst_liten": nvdbObj.egenskap(egenskapstype=9410, verdi=None), "Tidsdifferensiert_takst": nvdbObj.egenskap(egenskapstype=9409, verdi=None), "rushtidtakst_liten": nvdbObj.egenskap(egenskapstype=9411, verdi=None), "Rushtid_morgen_fra": nvdbObj.egenskap(egenskapstype=9407, verdi=None), "Rushtid_morgen_til": nvdbObj.egenskap(egenskapstype=9408, verdi=None), "Rushtid_ettermiddag_fra": nvdbObj.egenskap(egenskapstype=9405, verdi=None), "Rushtid_ettermiddag_til": nvdbObj.egenskap(egenskapstype=9406, verdi=None), "Timesregel": nvdbObj.egenskap(egenskapstype=9412, verdi=None), "Gratis_HC": nvdbObj.egenskap(egenskapstype=9404, verdi=None), "Etableringsyear": nvdbObj.egenskap(egenskapstype=10271, verdi=None), "Eier": nvdbObj.egenskap(egenskapstype=7992, verdi=None), "Vedlikeholdsansvarlig": nvdbObj.egenskap(egenskapstype=5799, verdi=None), "RoadnetHeading": direction, }, } # Appending feature to geojson feature list geojson["features"].append(feature)
def hentUlykker( kommuneNr): global ulykker global ulykker_feilUTM # Henter kun ulykker med egengeometri, per kommune ulFilter = [{ "type": "Geometri, punkt", "operator": "!=", "verdi": None }] lokasjon = {"kommune": [ kommuneNr ]} # Jukser litt for å få ulykker med feil UTM sone å jobbe/teste med: # lokasjon = {"bbox": "382914,6480154,844856,6705029"} # Sørøst i Sverige # lokasjon = {"bbox": "-547717,7584617,376168,8034367"} # Utenfor Lofoten ulSok = [{"id":"570","antall":"100000","filter": ulFilter}] # fylker = nvdb.query( '/omrader/fylker' ) # resultat = [ [ 'fylke', 'bruNummer', 'navn', 'NVDB Id' ]] ulData = nvdb.query_search( ulSok , lokasjon ) # Mulige projeksjoner outProj = Proj(init='epsg:25833') inProjs = [ Proj(init='epsg:25832'), Proj(init='epsg:25834'), Proj(init='epsg:25835'), Proj(init='epsg:25836') ] # Tellere for antall ulykker som tilfredsstiller våre kriterier. countNyUTM = 0 countUlykke = 0 if ulData.antall > 0: for ul in ulData.data['resultater'][0]['vegObjekter']: ulObj = nvdb.Objekt( ul) referanselokasjon = ulObj.referanseLokasjonPunkt() # if ul['lokasjon']['vegReferanser'][0]['nummer'] != 99999: uldict = { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [] }, "properties": { 'egenGeom' : str(ulObj.egenskap(5123)), 'refGeom' : referanselokasjon['punktPaVegReferanseLinjeUTM33'], 'referansetekst' : referanselokasjon['visningsNavn'], 'nvdbObjId' : ulObj.id, 'kommunenr' : ul['lokasjon']['kommune']['nummer'] } } # Sjekker avstand; loads er fra shapely-modulen p1 = loads( uldict['properties']['egenGeom'] ) p2 = loads( uldict['properties']['refGeom'] ) uldict['properties']['avstandRef2Egen'] = p1.distance(p2) # print p1.coords linje = LineString( [(p1.x, p1.y), (p2.x, p2.y)]) uldict['geometry']['coordinates'] = list(linje.coords) # Skal ha egenskapsverdier for avstand referanse - egengeometri og logikk # for sjekk om grove avvik går opp med feil i UTMsone. (og et eget flagg for dette) minDistance = uldict['properties']['avstandRef2Egen'] gmlDistance = minDistance reproj = False for inProj in inProjs: x3,y3 = transform(inProj,outProj,p1.x,p1.y) p3 = Point( x3, y3) newDist = p3.distance(p2) if newDist < minDistance: reproj = True srs = inProj.srs minDistance = newDist newP = p3 uldict['properties']['reproject'] = reproj if reproj: uldict['properties']['fromProj'] = srs uldict['properties']['GMLavstandRef2Egen'] = gmlDistance uldict['properties']['avstandRef2Egen'] = minDistance uldict['properties']['newX'] = newP.x uldict['properties']['newY'] = newP.y linje = LineString( [(newP.x, newP.y), (p2.x, p2.y)]) uldict['geometry']['coordinates'] = list(linje.coords) ulykker_feilUTM['features'].append( uldict) countNyUTM += 1 # print referanselokasjon['visningsNavn'] else: if uldict['properties']['avstandRef2Egen'] > 5: ulykker['features'].append( uldict) countUlykke += 1 # referanselokasjon['visningsNavn'] print "Kommune ", kommuneNr, " : ", ulData.antall, "ulykker hvorav ", \ countUlykke, " > 5m avstand og ", countNyUTM, "i feil UTM sone"
def hentNvdbBruer(lengde=1000): lengde = str(lengde) objektTyper = [{ "id": 60, "antall" : 10000, "filter": [{ "type": "Lengde", "operator": ">=", "verdi": [lengde] },{ "type": "Brukategori", "operator": "=", "verdi": ["Vegbru"] } ] }] bruer = nvdb.query_search(objektTyper ) bruliste = bruer.objekter() header = [ 'Fylke', 'NVDBnavn', 'Lengde', 'E', 'N', 'NvdbId', 'Match' ] resultat = [] resultat.append(header) for bru in bruliste: nvdbObj = nvdb.Objekt( bru) brunavn = nvdbObj.egenskap( egenskapstype=1080) brunavn2 = re.sub('[(){}<>+-?*]', '', brunavn) brunavn3 = brunavn2.strip() try: geom = loadswkt( nvdbObj.geometri(geometritype='geometriUtm33')) except KeyError, e: print "Ingen geometri", brunavn, nvdbObj.id, "lengde=", nvdbObj.egenskap(egenskapstype=1313) # Har noen bruer der vegen er lagt ned => intet lokasjonsobjekt # i NVDB api'et. Trenger bedre håndtering av historikk... else: bbox = geom.buffer(1000).bounds pt = geom.centroid ssrtreff = askSSR( brunavn3, bbox) print ssrtreff, "treff for", brunavn, 'lengde=', nvdbObj.egenskap(egenskapstype=1313) if ssrtreff == 1: match = 'EKSAKT' navn2 = '' elif ssrtreff == 0: # Mer liberale søk i SSR navn2 = brunavn3.rsplit(' ', 1)[0].strip() + '*' ssrtreff = askSSR( navn2, bbox) print "\t", ssrtreff, "treff for", navn2, 'lengde=', nvdbObj.egenskap(egenskapstype=1313) if ssrtreff > 0: match = navn2 else: match = 'INGEN' elif ssrtreff > 1: match = 'FLERE?' # Reprojiserer, utm33 = pyproj.Proj('+init=EPSG:25833') utm32 = pyproj.Proj('+init=EPSG:25832') x2,y2 = pyproj.transform(utm33, utm32, pt.x, pt.y) liste = [ nvdbObj.data['lokasjon']['fylke']['nummer'], brunavn, int(round( float( nvdbObj.egenskap(egenskapstype=1313)))) , # Lengde int(round(x2)), int(round(y2)), # Nord/øst koordiant nvdbObj.id, match ] resultat.append( liste)
# -*- coding: utf-8 -*- import logging from nvdb import query from nvdb import query_search from nvdb import csv_skriv from nvdb import Objekt logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) requests_log = logging.getLogger("requests") requests_log.setLevel(logging.WARNING) objekttyper = [{'id': 581, 'antall': 10000}] lokasjon = {'fylke': [17]} tunneler = query_search(objekttyper, lokasjon) csv_list = [] tunnel_nr = 0 for tunnel in tunneler.objekter(): tunnel_nr += 1 logger.info('Bearbeider tunnel %s av %s' % (tunnel_nr, tunneler.antall)) tunnel = Objekt(tunnel) row = { 'lengde': 0, 'pe_skum': None, 'pe_skum_lengde': 0, 'pe_skum_reg_lengde': 0,
def hentNvdbBruer(lengde=1000): lengde = str(lengde) objektTyper = [{ "id": 60, "antall" : 10000, "filter": [{ "type": "Lengde", "operator": ">=", "verdi": [lengde] },{ "type": "Brukategori", "operator": "=", "verdi": ["Vegbru"] } ] }] bruer = nvdb.query_search(objektTyper ) bruliste = bruer.objekter() # Empty geojson object, this is where we store our NVDB data. geojson = { "crs": {"type": "name", "properties": {"name": "urn:ogc:def:crs:EPSG::25833"}}, 'type' : 'FeatureCollection', 'features' : [ ] } for bru in bruliste: # Converting JSON structure to NVDB object class (defined in nvdb.py) nvdbObj = nvdb.Objekt( bru) # Reading properties into temporary variables brunavn = nvdbObj.egenskap( egenskapstype=1080) lengde = nvdbObj.egenskap( egenskapstype=1313) nvdbId = nvdbObj.id try: geom = loads( nvdbObj.geometri(geometritype='geometriUtm33')) geomstring = (mapping(geom)) except KeyError, e: print "Ingen geometri", brunavn, nvdbObj.id, "lengde=", nvdbObj.egenskap(egenskapstype=1313) # Har noen bruer der vegen er lagt ned => intet lokasjonsobjekt # i NVDB api'et. Trenger bedre håndtering av historikk... else: # Assigning to single geojson feature: feature = { "type": "Feature", "geometry": geomstring, "properties": { "lengde" : lengde, "brunavn" : brunavn, "nvdbId" : nvdbId } } # Appending feature to geojson feature list geojson['features'].append( feature )