Suomen postinumerodatan lukeminen ja visualisointi kartalla Pythonissa. Pythonissa on useita paketteja paikkatietodatan käsittelyyn, esimerkiksi geopandas.

Lataa data Suomen postinumeroalueista

Lataa täältä data Suomen postinumeroalueista.

Python-työympäristö postinumeroiden visualisointiin

Esimerkit toimivat parhaiten Jupyter notebook ympäristöissä.

Jos et halua alkaa asentamaan Pythonia ja vaadittavia kirjastoja tietokoneellesi, voit valita esimerkiksi näistä vaihtoehdoista ilmaisen selainpohjaisen Python-työympäristön.

Datan lukeminen Pythoniin

Postinumerodatan voi lukea Pythoniin geopanads-kirjastolla GetJSON-tiedostomuodossa.

Tästä voit kopioida Python-koodin, jolla pääsee alkuun postinumeroiden kanssa.

import matplotlib.pyplot as plt
import geopandas as gpd

input_file = "finland-postal-codes-sample.geojson"

gdf = gpd.read_file(input_file)
#Derive a silly value from postal code to colorize the regions  
gdf["fake_value"] = (gdf["postinumeroalue"].astype("int")-10000) / 30000

fig, ax = plt.subplots(figsize=(10,10))
#Set longitude limits to show in the map
plt.xlim(21.2, 24.5)
#Set latitude limits to show in the map
plt.ylim(59.8, 62)

#Use Finland map as a background
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
finland = world[(world.pop_est>0) & (world.name=="Finland")].copy()
finland.plot(ax=ax, color="lightgray", edgecolor='gray')

#Plot the postal code on top
gdf.plot(ax=ax, edgecolor="white", alpha=gdf.fake_value)

Yksinkertainen postinumerodatan visualisointi Pythonin matplotlib-kirjastolla näyttää tältä:

Muutamia postinumeroalueita kartalla Pythonissa.
Muutamia postinumeroalueita kartalla Pythonissa.

Käyttämällä kaikkien postinumeroiden dataa saat visualisoitua koko Suomen kartan, kuten alla. Tällöin myös kuvaajan x- ja y-rajaus sekä mahdollisesti ja taustakartta tulee jättää pois.

Kaikki Suomen postinumeroalueet kartalla Pythonissa.
Kaikki Suomen postinumeroalueet kartalla Pythonissa.

Interaktiivinen kartta postinumerodatasta Pythonissa

Interaktiivisen kartan luominen Python notebookeissa onnistuu seuraavalla skriptillä. Koodi vaatii folium-kirjaston asentamisen.

import folium

m = folium.Map(
    location=[61.1, 23.1],
    tiles="cartodbpositron",
    zoom_start=8,
)

input_file = "finland-postal-codes-sample.geojson"

folium.GeoJson(input_file, name="geojson").add_to(m)

folium.LayerControl().add_to(m)

m

Karttaa voi zoomata notebookissa ja liikutella hiirellä.

Interaktiivinen kartta postinumeroista Pythonin folium-kirjastolla.
Interaktiivinen kartta postinumeroista Pythonin folium-kirjastolla.