Superenkel oppskrift for å få NVDB - data inn i Excel med bruk av dette python-biblioteket
https://github.com/LtGlahn/nvdbapi-V3
Start python versjon 3, i python shell:
# Merk bindestrek
pip install nvdbapi-v3
""" | |
Leser områdedefinisjon for fylker fra NVDB, henter hvert fylkes-objekt og finner BoundingBox | |
""" | |
import requests | |
import geopandas as gpd | |
from shapely import wkt | |
fylker = requests.get( 'https://nvdbapiles-v3.atlas.vegvesen.no/omrader/fylker' ).json() | |
for fylke in fylker: | |
fylkedata = requests.get( 'https://nvdbapiles-v3.atlas.vegvesen.no/vegobjekter/945/' + str( fylke['id'] ) ).json() |
""" | |
Finner veglenkesekvenser (veglenker) som er kommet til etter angitt dato | |
Laster ned ALT av segmentert vegnett (HELE historikken til segmentert vegnett) og sorterer ut | |
de veglenkesekvensene som A) har veglenker nyere enn angitt dato, B) ikke har historiske veglenker | |
På kvelden 30.4 så det slik ut når jeg ba om vegnett fra 29.4 eller nyere (dvs vegnett som oppstod i går eller i dag): | |
Fant 187 nye vegsementer fordelt på 65 nye veglenkesekvenser etter å ha gått gjennom 10737373 vegsegmenter / 1314106 veglenkesekvens ID. | |
Dette tok ca 1 time på et ikke spesielt sprekt hjemmenettverk, men på et tidspunkt der vi forventer liten belastning | |
på NVDB api LES. |
import pandas as pd | |
import nvdbapiv3 | |
# Dette regnearket leser vi typisk med | |
# pd.read_excel( 'filnavn.xlsx', sheet_name='Navn på fane med data', | |
# skiprows=6 ) | |
# skiprows = antall linjer med drit i headeren på regnearket før raden med kolonnenavn | |
# Men her faker vi et regneark med to rader | |
statusregneark = pd.DataFrame([ { 'Navn' : 'R70022 - Fv. 237 Desetvegen, Osmoen-Deset', | |
'Status i fagsystem' : 'Planstadiet', |
Superenkel oppskrift for å få NVDB - data inn i Excel med bruk av dette python-biblioteket
https://github.com/LtGlahn/nvdbapi-V3
Start python versjon 3, i python shell:
# Merk bindestrek
pip install nvdbapi-v3
""" | |
Demo innlogging Datafangst 2.0. | |
Innlogging dokumentasjon | |
https://nvdbapiles-v3.atlas.vegvesen.no/dokumentasjon/openapi/#/Autentisering/post_auth_login | |
Datafangst dokumentasjon | |
https://datafangst-api-gateway.atlas.vegvesen.no/ | |
""" | |
import requests | |
import getpass |
import json | |
from time import sleep | |
from datetime import datetime | |
from types import SimpleNamespace | |
import STARTHER | |
import nvdbapiv3 | |
import skrivnvdb | |
def lagSkrivemal( backupdata, nvdbId=None, oppdaterVersjon=None ): |
import requests | |
import json | |
import sys | |
from datetime import datetime, timedelta | |
# import pandas as pd | |
# import geopandas as gpd | |
# from shapely.geometry import Point | |
# from shapely import wkt |
Geojson skal i følge spesifikasjonen strengt tatt være (lon, lat) i koordinatsystem EPSG:4326. Uten å ta opp diskusjonen om hva som er korrekt rekkefølge så må vi bytte om på koordinatene fra LES, som kommer i rekkefølgen (lat, lon)
import pandas as pd
import geopandas as gpd
Dette med rekkefølgen (lon,lat) eller (lat,lon) for koordinatsystemet EPSG:4326 er traurig og fruktesløs diskusjon. Her er kode for å flippe mellom disse to variantene, dvs bytte (X,Y) => (Y,X).
Geometrien her er shapely geometriobjekter.
Denne oppskriften funket tidligere på 3D objekter uavhengig av geometritype, det kan godt hende det funker fint for din shapely-versjon:
Konverterer python shapely-objekter (i 2D eller 3D) til 2D
from shapely import wkb, wkt
# myGeom er her et shapely-objekt av hvilken som helst geometritype, med 2D eller 3D koordinater.
my2Dgeom = wkb.loads( wkb.dumps( myGeom , output_dimension=2 ))
Trickset her er at wkb.dumps
(som returnerer dataformatet Well Known Binary )