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 / 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 / sjekkVDtall.py
Last active August 24, 2022 14:00
henter data fra NVDB api LES for å kontrollere VD sine tall
import pandas as pd
import geopandas as gpd
import STARTHER
import nvdbapiv3
import nvdbgeotricks
if __name__ == '__main__':
@LtGlahn
LtGlahn / nvdb2geojson.py
Last active April 26, 2022 21:38
Lag geojson fra Nasjonal vegdatabank via python-biblioteket nvdbapiv3
# Kode for å lagre nvdb-objekt som geojson via dette biblioteket + (geo)pandas
# https://github.com/LtGlahn/nvdbapi-V3/
import nvdbapiv3
import geopandas as gpd
import pandas as pd
import shapely
from shapely import wkt
sok = nvdbapiv3.nvdbFagdata( 923 ) # Objekttypen 923 Beredskapsveg er et søtt, lite datasett: 38 objekter
@LtGlahn
LtGlahn / python-conda-GIS-installation.md
Last active November 16, 2021 07:59
Isolere python GIS-programvare i et separat kjøremiljø

En del python GIS-programvare er basert på C-rutiner kompilert for og med python-bindinger. Installasjon av disse C-baserte pythonpakkene kan være litt trælete, og gi versjonskonflikter med andre python-pakker du ønsker å bruke. Anbefalingen er derfor å isolere det du trenger til egne python environments. Når ulike python-pakker finnes i separate kjøremiljø så minimerer du sjangsen for versjonskonflikt - og hvis det verste skulle skje så har du et utrolig mye bedre utgangspunkt for å rydde opp. Å lage et nytt kjøremiljø med ny installasjon av det du trenger er enkelt, og løser de fleste konflikter - mens det å rydde opp i versjonskonflikter på eksisterende installasjon definitivt ikke er noe for uøvde.

Slike kjøremiljø kan lages på flere måter, men fremgangsmåten vist her er det som er gjengs praksis innafor Data science - miljøet.

Steg 0 - bruk Anaconda python installasjon

@LtGlahn
LtGlahn / reversiblefelt.py
Created November 12, 2021 13:44
Har vi reversible kjørefelt i NVDB?
# Først må du grabbe reposet mitt https://github.com/LtGlahn/nvdbapi-V3
# og så må du minimum få installert pandas (regneark på steroider, men i kommandolinjen eller i notebook.
# Mener pip install pandas skal funke greit for akkurat dette behovet.
# Eller du kan gå "all-inn" og ha en litt tregere installasjonsprosess, men ha en utrolig fin verktøykasse.
#
# Jeg anbefaler å gå all-inn og bruke conda til å håndtere pakker, sette opp miljøer (separate sandkasser)
# og dermed minimere smertepunkt knyttet til versjonskonflikter etc. som ellers kommer før eller siden
# hvis man flittig føyer til nye, kule ting med pip install.
#
# Min favorittoppskrift på "conda" oppsett med kule GIS-ting finnes her:
@LtGlahn
LtGlahn / demo_mangler_komr.py
Last active September 21, 2021 09:13
Finner NVDB vegnett der det ikke er registret kontraktsområde, ref https://www.vegdata.no/2021/09/21/hvor-mangler-vi-kontraktsomrade
"""
Hvordan finne de bitene av vegnettet som mangler kontraktsområde?
https://www.vegdata.no/2021/09/21/hvor-mangler-vi-kontraktsomrade/
"""
import requests
# Setter filter
mittfilter = { 'vegsystemreferanse' : 'Fv', 'fylke' : 34}
@LtGlahn
LtGlahn / v2problem.py
Created January 13, 2021 08:17
Test av feilmelding varierende (og feil) antall objekt for spørring mot V2 av NVDB api. Krever dette bibiloteket https://github.com/LtGlahn/nvdbapi-V3
"""
Sammenligner antall objekt for et kontraktsområde fra V2 og V3, samt om
V2 gir resultater som varierer
"""
import requests
from datetime import datetime
import json
from copy import deepcopy
@LtGlahn
LtGlahn / tunnelnavnssr.py
Created November 11, 2020 10:30
Stedsnavn i SSR versus navn på tunneller i NVDB
"""
Script som sammenligner navn på tunneller i NVDB med stedsnavn i SSR
Logikken er som følger:
- Søk i SSR skjer innafor boundingbox laget fra 500 meter buffer rundt tunnelløpene
(de forekomstene av objekttype 67 Tunnelløp som er datterobjekter av denne forekomsten av 581 Tunnel)
- Hvis nødvendig, søker vi flere ganger i SSR:
1. Først på eksakt match på NVDB navnet
2. Deretter wildcard-søk etter *tunnel* (innafor boundingbox)
@LtGlahn
LtGlahn / vegrefendring2010oslo.py
Last active August 28, 2020 10:42
Hvilke veger fikk endret status og eierskap i Oslo ved forvaltningsreformen? Dvs fra europa-, riks- og fylkesveg => kommunalveg?
"""
Analyserer hvilke europa, riks og fylkesveger som ble til kommunalveger nyttår 2010 i Oslo
Forutsetter at du har geopandas og dette biblioteket tilgjengelig https://github.com/LtGlahn/nvdbapi-V3
"""
import sqlite3
import geopandas as gpd
import pandas as pd
@LtGlahn
LtGlahn / framtidigtunnel.py
Last active August 19, 2020 14:32
Finne NVDB-objekter med startdato inn i framtida
"""
Konseptutvikling / demonstrasjon av hvordan du finner vegobjekt med framtidig startdato i NVDB
Eksemplet leter etter tunneler (587) som har startdato > dagen i dag.
Per 19. august vet vi om ett objekt med startdato = 10. september 2020.
(https://nvdbapiles-v3.atlas.vegvesen.no/vegobjekter/581/1008940122/1)
Vi har funnet to metoder som begge virker:
- Metode 1: Hente alle versjoner (alle start/sluttdatoer) for en objekttype
- Metode 2: Hent alle forekomster som antas å være gyldig en gang langt inn i framtida