Last active
August 19, 2020 14:32
-
-
Save LtGlahn/a522be7c31e202ccd3d1f316978fe249 to your computer and use it in GitHub Desktop.
Finne NVDB-objekter med startdato inn i framtida
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
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 | |
Begge metodene får med de objektene som er gyldige i dag, så du må filtrere på startdato > i dag. | |
(metode 2 får kun dem som ikke har sluttdato < langt inn i framtida) | |
Eksemplet bruker dette bibiloteket: https://github.com/LtGlahn/nvdbapi-V3 | |
Men | |
""" | |
from datetime import datetime | |
import nvdbapiv3 | |
# Dagens dato | |
idag = datetime.now() | |
idag = idag.replace(hour=0, minute=0, second=0, microsecond=0) | |
print( "\nFinner framtidige tunnelløp, metode 1: Hent alle versjoner (all tid)") | |
tun = nvdbapiv3.nvdbFagdata( 581) | |
tun.addfilter_geo( { 'alle_versjoner' : True }) | |
treff = [ ] | |
t0 = datetime.now() | |
t1 = tun.nesteForekomst( ) | |
count = 0 | |
while t1: | |
startdato = datetime.strptime( t1['metadata']['startdato'], '%Y-%m-%d' ) | |
if startdato > idag: | |
print( 'Fant objekt med startdato', startdato, t1['href']) | |
treff.append( t1 ) | |
count += 1 | |
t1 = tun.nesteForekomst() | |
dt = datetime.now() - t0 | |
print( 'Metode 1: ', dt.total_seconds(), 'sekund på å lete blant', count, "objekt for å finne", len( treff ), 'objekt med framtidig startdato') | |
print( "\n===============================================\n") | |
print( "Finner framtidige tunnelløp, metode 2: Tidspunkt langt fram") | |
tun = nvdbapiv3.nvdbFagdata( 581) | |
tun.addfilter_geo( { 'tidspunkt' : '2050-09-10' }) | |
treff = [ ] | |
t0 = datetime.now( ) | |
t1 = tun.nesteForekomst( ) | |
count = 0 | |
while t1: | |
startdato = datetime.strptime( t1['metadata']['startdato'], '%Y-%m-%d' ) | |
if startdato > idag: | |
print( 'Fant objekt med startdato', startdato, t1['href']) | |
treff.append( t1 ) | |
count += 1 | |
t1 = tun.nesteForekomst() | |
dt = datetime.now() - t0 | |
print( 'Metode 2: ', dt.total_seconds(), 'sekund på å lete blant', count, "objekt for å finne", len( treff ), 'objekt med framtidig startdato') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Output fra koden (kjørt 19.august 2020)
Finner framtidige tunnelløp, metode 1: Hent alle versjoner (all tid)
Fant objekt med startdato 2020-09-10 00:00:00 https://nvdbapiles-v3.atlas.vegvesen.no/vegobjekter/581/1008940122/1
Metode 1: 5.251668 sekund på å lete blant 4391 objekt for å finne 1 objekt med framtidig startdato
===============================================
Finner framtidige tunnelløp, metode 2: Tidspunkt langt fram
Fant objekt med startdato 2020-09-10 00:00:00 https://nvdbapiles-v3.atlas.vegvesen.no/vegobjekter/581/1008940122/1
Metode 2: 8.786157 sekund på å lete blant 1226 objekt for å finne 1 objekt med framtidig startdato