Beispiel #1
0
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
Beispiel #2
0
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"
Beispiel #7
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()
    
    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,
Beispiel #9
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 )