Frictionless data -projektissa pyritään luomaan (taas kerran) tekstipohjainen paketointiformaatti, joka on yhteensopiva eri alustojen ja ohjelmistojen kesken. Syyskuussa 2020 työkalut löytyvät jo seuraaviin ohjelmointikieliin:
Ideana siis on että paketti sisältää json-muotoiset metadatat pakettiin kuuluvien datojen sisällöstä, sijainnista, lisensseistä sekä teknisistä spesifikaatioista. Eri kielille hehitetyillä työkaluilla nämä tiedot on helppo lukea kullekin kielelle ominaisella tavalla.
Seuraavaksi katsotaan DVV:n uutta dataa tarkemmin R-kielen avulla.
Aluksi ladataan zipattu paketti levylle, puretaan se kansioon sekä listataan paketista löytyvät data.
# A tibble: 9 × 4
.id name type description
<chr> <chr> <chr> <chr>
1 fields building_id string Identifier for Finnish buildings
2 fields region string Identification number for Finnish regions. See…
3 fields municipality string Identification number for Finnish municipaliti…
4 fields street string Street name: an identifying name given to a st…
5 fields house_number string Unique number to each building in a street or …
6 fields postal_code string Series of digits included in a postal address …
7 fields latitude_wgs84 number Coordinate latitude in the WGS 84 standard. Th…
8 fields longitude_wgs84 number Coordinate longitude in the WGS 84 standard. T…
9 fields building_use integer Intended use of building. The identification c…
datapackage.json -tiedostossa puolestaan on yleistä metatietoa datasta ja julkaisijasta kuten datan lisenssi.
Koodi
jsonlite::prettify(readLines(jsons[3]))
{
"name": "finnish-addresses-postalcodes-and-coordinates",
"title": "Data of finnish addresses with postal codes and coordinates",
"description": "The data is provided for separately for each region (e.g.: xx_addresses_yyyy-mm-dd.csv) and alternatively as a single csv file (e.g.: Finland_addresses_yyyy-mm-dd.csv). See this link for region codes: https://dvv.fi/tilastot-ja-luettelot, file Maakunnat.xlsx",
"licenses": [
{
"url": "https://creativecommons.org/licenses/by/4.0/",
"name": "Creative Commons Attribution 4.0 International",
"version": "4.0"
},
{
"url": "http://www.jhs-suositukset.fi/suomi/jhs189",
"name": "Finnish public sector open data license"
}
],
"sources": [
{
"name": "DVV Population Information System",
"web": "http://dvv.fi/en/population-information-system"
}
],
"maintainers": [
{
"name": "Mika Honkanen",
"email": "mika.honkanen@dvv.fi",
"web": "https://www.avoindata.fi/en"
}
],
"publishers": [
{
"name": "Mika Honkanen",
"email": "mika.honkanen@dvv.fi",
"web": "https://www.avoindata.fi/en"
}
],
"resources": [
{
"name": "addresses",
"path": "./data/*.csv",
"format": "csv",
"mediatype": "text/csv",
"schema": {
"fields": [
{
"name": "building_id",
"type": "string",
"description": "Identifier for Finnish buildings"
},
{
"name": "region",
"type": "string",
"description": "Identification number for Finnish regions. See: https://dvv.fi/tilastot-ja-luettelot, file Maakunnat.xlsx"
},
{
"name": "municipality",
"type": "string",
"description": "Identification number for Finnish municipalities. See: http://tilastokeskus.fi/meta/luokitukset/kunta/001-2019/index.html"
},
{
"name": "street",
"type": "string",
"description": "Street name: an identifying name given to a street"
},
{
"name": "house_number",
"type": "string",
"description": "Unique number to each building in a street or area, with the intention of making it easier to locate a particular building"
},
{
"name": "postal_code",
"type": "string",
"description": "Series of digits included in a postal address for the purpose of sorting mail."
},
{
"name": "latitude_wgs84",
"type": "number",
"description": "Coordinate latitude in the WGS 84 standard. The World Geodetic System (WGS) is a standard for use in cartography, geodesy, and navigation including GPS."
},
{
"name": "longitude_wgs84",
"type": "number",
"description": "Coordinate longitude in the WGS 84 standard. The World Geodetic System (WGS) is a standard for use in cartography, geodesy, and navigation including GPS."
},
{
"name": "building_use",
"type": "integer",
"description": "Intended use of building. The identification codes with the corresponding letter codes from stat.fi are: 0 The intended use of building is lacking, 1 Residental building or business premises (A - H), and 2 Production building or other building (J - N). See: http://www.stat.fi/meta/luokitukset/rakennus/001-2018-07-12/index_en.html"
}
]
}
}
]
}
Katsotaan sitten tarkemmin datapackage.json:n resources-kohtaa
'data.frame': 1 obs. of 5 variables:
$ name : chr "addresses"
$ path : chr "./data/*.csv"
$ format : chr "csv"
$ mediatype: chr "text/csv"
$ schema :'data.frame': 1 obs. of 1 variable:
..$ fields:List of 1
.. ..$ :'data.frame': 9 obs. of 3 variables:
.. .. ..$ name : chr "building_id" "region" "municipality" "street" ...
.. .. ..$ type : chr "string" "string" "string" "string" ...
.. .. ..$ description: chr "Identifier for Finnish buildings" "Identification number for Finnish regions. See: https://dvv.fi/tilastot-ja-luettelot, file Maakunnat.xlsx" "Identification number for Finnish municipalities. See: http://tilastokeskus.fi/meta/luokitukset/kunta/001-2019/index.html" "Street name: an identifying name given to a street" ...
Sieltä käy ilmi mm. datatiedostojen sijainti (./data) sekä schema-kohdan alta vielä toistamiseen datojen kenttien tiedot.
Koodi
resources$schema$fields[[1]] %>%as_tibble()
# A tibble: 9 × 3
name type description
<chr> <chr> <chr>
1 building_id string Identifier for Finnish buildings
2 region string Identification number for Finnish regions. See: https…
3 municipality string Identification number for Finnish municipalities. See…
4 street string Street name: an identifying name given to a street
5 house_number string Unique number to each building in a street or area, w…
6 postal_code string Series of digits included in a postal address for the…
7 latitude_wgs84 number Coordinate latitude in the WGS 84 standard. The World…
8 longitude_wgs84 number Coordinate longitude in the WGS 84 standard. The Worl…
9 building_use integer Intended use of building. The identification codes wi…
Nyt kun on tiedossa datojen sijainnit, voimme ladata datat R:ään. Sivun alussa olevasta tiedostolistauksesta saattoi huomata että datat ovat sekä maakunnittaisina tiedostoina maakuntakoodilla merkittynä sekä koko maan tiedostona. Maakuntatatoista suurin on Uudenmaan data /home/aurelius/btsync/web/markuskainu19/local_data/dvv_kitkaton/data/Finland_addresses_2022-08-12.csv ja tehdään sen pohjalta pieni kartta.
Koska sarake-erottimena on pilkku, R:ssä meille riittää kun luetaan data normaalilla read.csv-funktiolla. Koska datat ovat melko suuria, käytän readr-paketin funktioita tässä esimerkissä
Datat näyttää oikein fiksulta, rakennuksia on yhteensä 3793204. Piiretään datan rakennuksista vielä loppuun kartta niin että siinä ovat kaikki Helsingin Mannerheimintiellä olevat rakennukset.
Koodi
manskun_rakennukset <- d %>%filter(municipality =="091", street =="Mannerheimintie") manskun_rakennukset
Datan sarakkeiden kuvauksessa kerrotaan building_use-sarakkeesta seuraavaa: Intended use of building. The identification codes with the corresponding letter codes from stat.fi are: 0 The intended use of building is lacking, 1 Residental building or business premises (A - H), and 2 Production building or other building (J - N). See: http://www.stat.fi/meta/luokitukset/rakennus/001-2018-07-12/index_en.html. Eli luetaan se mukaan osoitteesta: http://www.stat.fi/meta/luokitukset/rakennus/001-2018-07-12/tekstitiedosto.txt
Mannerheimintiellä rakennuksia on 179 ja kartalla ne sijoittuvat näin käyttötarkoituksen mukaan:
Aivan lopuksi piirretään vielä kartta kaikista datan Helsingin rakennuksista 500m x 500m kuusikulmio-ruuduissa. Tolpan pituus tarkoittaa kussakin ruudussa sijaitsevien rakennusten lukumäärää.