Skip to content

Instantly share code, notes, and snippets.

View LtGlahn's full-sized avatar

Jan Kristian Jensen LtGlahn

  • Norwegian Public Road Adminstration
  • Trondheim, Norway
  • X @LtGlahn
View GitHub Profile
@LtGlahn
LtGlahn / fylkeBBox.py
Last active May 24, 2024 12:32
Finne boundingbox for fylker
"""
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()
@LtGlahn
LtGlahn / script_finnNyeVeglenker.py
Last active May 1, 2024 10:49
Finn nytt vegnett - brute force metode
"""
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.
@LtGlahn
LtGlahn / avikdemo.py
Last active November 8, 2023 22:58
Demo på hvordan du kan koble regneark fra fagsystem med NVDB data
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',
@LtGlahn
LtGlahn / nvdb2excel.md
Created November 8, 2023 22:14
Superenkel oppskrift for å få NVDB - data inn i Excel med bruk av dette python-biblioteket https://github.com/LtGlahn/nvdbapi-V3

NVDB data som regneark

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
@LtGlahn
LtGlahn / innloggingdemo.py
Last active January 2, 2024 09:15
datafangst20demo
"""
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
@LtGlahn
LtGlahn / gjenopprett.py
Created July 31, 2023 07:26
Gjenoppretter objekter som er fjernet ved inkurie
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
@LtGlahn
LtGlahn / nvdbdata2geojson.md
Last active January 12, 2023 09:10
Lagre NVDB data som geojson i ulike koordinatsystem

Geojson - strengt tatt lon, lat koordinater

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 
@LtGlahn
LtGlahn / swapLatLon.md
Last active January 11, 2023 21:46
Bytt rekkefølge på X,Y - koordinater (lat, lon) => (lon, lat)

(lat,lon) eller (lon,lat) - slik bytter du rekkefølge i shapely geometriske objekter

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:

@LtGlahn
LtGlahn / fra3Dtil2Dshapely.md
Last active September 17, 2023 08:30
Fra 3D til 2D shapely geometriobjekter

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 )