Last active
August 28, 2020 10:42
-
-
Save LtGlahn/0ffc4ea310a2694b62ba12efb85b4a5f to your computer and use it in GitHub Desktop.
Hvilke veger fikk endret status og eierskap i Oslo ved forvaltningsreformen? Dvs fra europa-, riks- og fylkesveg => kommunalveg?
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
""" | |
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 | |
from shapely import wkt | |
import nvdbapiv3 # https://github.com/LtGlahn/nvdbapi-V3 | |
def pandas2gpkg( mindf, filnavn, lagnavn): | |
""" | |
Lagrer pandas dataFrame med NVDB-objekt til geopackage | |
ARGUMENTS: | |
mindf - pandas dataframe med NVDB-objekt | |
filnavn - navn på .gpkg-fil vi skal skrive til | |
lagnavn - navn på tabellen vi skal lagre | |
KEYWORDS: | |
Nada | |
RETURNS: | |
Nada | |
""" | |
mindf = mindf.copy() | |
mindf['geometry'] = mindf['geometri'].apply( wkt.loads ) | |
minGdf = gpd.GeoDataFrame( mindf, geometry='geometry', crs=25833 ) | |
minGdf.to_file(filnavn, layer=lagnavn, driver="GPKG") | |
if __name__ == '__main__': | |
oslo = 301 | |
sokVegref2009 = nvdbapiv3.nvdbFagdata( 532) | |
sokVegref2009.filter( { 'kommune' : oslo, 'vegsystemreferanse' : [ 'E', 'R', 'F' ], 'tidspunkt' : '2009-12-31' }) | |
temp2009 = pd.DataFrame( sokVegref2009.to_records() ) | |
sokVegref2010 = nvdbapiv3.nvdbFagdata( 532) | |
sokVegref2010.filter( { 'kommune' : oslo, 'vegsystemreferanse' : [ 'K' ], 'tidspunkt' : '2010-01-02' }) | |
temp2010 = pd.DataFrame( sokVegref2010.to_records() ) | |
temp2009 = temp2009.add_prefix( 'd2009_') | |
# Lager virituell database, slik at vi kan gjøre SQL-spørringer | |
conn = sqlite3.connect( ':memory:') | |
temp2010.to_sql( 'v2010', conn, index=False ) | |
temp2009.to_sql( 'v2009', conn, index=False ) | |
# Finner overlapp mellom ERF-veger per 31.12.2009 og K-veger per 1.1.2010 | |
# Overlapp = samme plassering på samme veglenkesekvens | |
qry = """ | |
select max( v2010.startposisjon, v2009.d2009_startposisjon ) as frapos, | |
min( v2010.sluttposisjon, v2009.d2009_sluttposisjon ) as tilpos, | |
* from v2009 | |
INNER JOIN v2010 ON | |
v2009.d2009_veglenkesekvensid = v2010.veglenkesekvensid and | |
v2009.d2009_startposisjon < v2010.sluttposisjon and | |
v2009.d2009_sluttposisjon > v2010.startposisjon | |
""" | |
joined = pd.read_sql_query( qry, conn) | |
# Pynter litt på kolonnenavn, gidder ikke ta med alle kolonnene etc | |
joined.rename( columns={'d2009_vref' : 'vegref2009', 'vref' : 'vegref2010' }, inplace=True ) | |
utskrift = joined[ [ 'd2009_Vegkategori', 'd2009_Vegstatus', 'd2009_Vegnummer', 'd2009_detaljnivå', 'vegref2009', 'Vegkategori', 'Vegstatus', 'Vegnummer', 'vegref2010', 'geometri' ] ] | |
# Lagrer som geopackage | |
pandas2gpkg( utskrift, 'refomr2010oslo.gpkg', 'endringer2010') | |
# Skriver ut brukervennlig oppsummering, se kommentar nedenfor | |
print( joined[['vegref2010', 'vegref2009']].drop_duplicates().to_string(index=False ) ) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Oppsummert - disse vegene skiftet eier nyttår 2010:
print( joined[['vegref2010', 'vegref2009', 'Vegstatus']].drop_duplicates().to_string(index=False ) )
Merk at vi har en liten snag i "vegref"-kolonnen: Gang/-sykkelveg skal strengt tatt være Rg150, ikke RV150. Dette er retta manuelt i denne tabellen.