MAASTOTIETOKANTA (GeoPackage)

Aineiston tuottaja: Maanmittauslaitos
Ajankohta: 2020, tarkemmin katso tiedoston nimestä
Lisenssi: CC-4.0-BY, https://www.maanmittauslaitos.fi/avoindata-lisenssi-cc40
Maastotietokanta tuotekuvaus ja mm. kohdeluokkien selitykset: https://www.maanmittauslaitos.fi/kartat-ja-paikkatieto/asiantuntevalle-kayttajalle/tuotekuvaukset/maastotietokanta-0
Formaatti: GeoPackage http://www.geopackage.org/

Data
####
Tässä maastotietokannan versiossa dataa ei ole jaettu karttalehdittäin, vain koko Suomen saman kohdeluokan datat ovat yhdessä tiedostossa. 

Vektoridataa sisältävät GeoPackaget (gpkg) on generoitu ajastettuna prosessina MML:n visualisointitietokannasta (Postgresql/PostGIS) GDAL työkaluilla.
Visualisointikannassa oleva aineisto sisältää kartanpiirtoteknisistä syistä pistetihennyksiä. Tihennyspisteet on tunnistettavissa Z-koordinaatin arvosta -999.999.

Kohdeluokkien jako tiedostoihin
######################################
Aineistot on jaoteltu seuraaviksi osakokonaisuuksiksi:

MTK-maastokuvionreuna
*********************
1: maasto2kuvionreuna (3D Line String), kohdeluokat: 30211, 30212, 30999
2: maastokuvionreuna (3D Line String), kohdeluokat: 30100, 30211, 30212, 30900, 30999

MTK-suo
*******
1: soistuma (3D Polygon), kohdeluokat:  35300
2: suo (3D Polygon), kohdeluokat:  35411, 35412, 35421, 35422

MTK-virtavesi
*************
1: virtavesialue (3D Polygon), kohdeluokat: 36313
2: virtavesikapea (3D Line String), kohdeluokat: 36311, 36312

MTK-kallio
**********
1: kallioalue (3D Polygon), kohdeluokat: 34100

MTK-vakavesi
************
1: jarvi (3D Polygon), kohdeluokat: 36200
2: meri (3D Polygon), kohdeluokat: 36211

MTK-tie
*******
1: tienroteksti (3D Point), kohdeluokat: 12106, 12181, 12182, 12183
2: tiesymboli (3D Point), kohdeluokat: 12192, 12193, 12200
3: tieviiva (3D Line String), kohdeluokat: 12111, 12112, 12121, 12122, 12131, 12132, 12141, 12151, 12152, 12311, 12312, 12313, 12314, 12316
MTK-rakennus
************
1: aallonmurtaja (3D Line String), kohdeluokat: 44100
2: aita (3D Line String), kohdeluokat: 44211, 44213
3: allas (3D Polygon), kohdeluokat: 44300
4: ilmaradankannatinpylvas (3D Point), kohdeluokat: 44591
5: ilmarata (3D Line String), kohdeluokat: 44500
6: kellotapuli (3D Point), kohdeluokat: 44600
7: lahestymisvalo (3D Point), kohdeluokat: 44700
8: masto (3D Point), kohdeluokat: 44800
9: mastonkorkeus (3D Point), kohdeluokat: 44803
10: muistomerkki (3D Point), kohdeluokat:  44900
11: nakotorni (3D Point), kohdeluokat: 45000
12: pistolaituriviiva (3D Line String), kohdeluokat: 45111, 45112
13: portti (3D Point), kohdeluokat: 45200
14: rakennelma (3D Line String), kohdeluokat: 45700
15: rakennus (3D Polygon), kohdeluokat: 42210, 42211, 42212, 42220, 42221, 42222, 42230, 42231, 42232, 42240, 42241, 42242, 42250, 42251, 42252, 42260, 42261, 42262, 42270
16: rakennusreunaviiva (3D Line String) kohdeluokat: 42110, 42111, 42112, 42120, 42121, 42122, 42130, 42131, 42132, 42140, 42141, 42142, 42150, 42151, 42152, 42160, 42161, 42162, 42170, 42200, 44300
17: savupiippu (3D Point), kohdeluokat: 45300
18: savupiipunkorkeus (3D Point), kohdeluokka: 45303
19: tervahauta (3D Point), kohdeluokat: 45400
20: tulentekopaikka (3D Point), kohdeluokat: 45710
21: tuulivoimala (3D Point), kohdeluokat: 45500
22: vesitorni (3D Point), kohdeluokat: 45800

MTK-korkeussuhteet
******************
1: korkeuskayra (3D Line String), kohdeluokat: 52100
2: korkeuskayrankorkeusarvo (3D Point), kohdeluokat: 52191

MTK-muut
********
1: aidansymboli (3D Point), kohdeluokat: 9325
2: aluemerenulkoraja (3D Line String), kohdeluokat: 82100
3: ampumaalue (3D Line String), kohdeluokat: 62100
4: ankkuripaikka (3D Point), kohdeluokat: 16600
5: autoliikennealue (3D Polygon), kohdeluokat: 32421
6: harvalouhikko (3D Point), kohdeluokat:  34200
7: hautausmaa (3D Polygon), kohdeluokat: 32200
8: hietikko (3D Polygon), kohdeluokat: 34300
9: hylky (3D Point), kohdeluokat: 16712, 16721, 16722
10: hylynsyvyys (3D Point), kohdeluokat: 16703
11: jyrkanne (3D Line String), kohdeluokat: 34400
12: kaatopaikka (3D Polygon), kohdeluokat: 32300
13: kaislikko (3D Point), kohdeluokat: 38100
14: kalliohalkeama (3D Line String), kohdeluokat: 34500
15: kalliosymboli (3D Point), kohdeluokat: 34100
16: kansallispuisto (3D Polygon), kohdeluokat: 72202
17: karttasymboli (3D Point), kohdeluokat: 32191, 32192, 32291, 32591, 32891, 33091, 38991
18: kivi (3D Point), kohdeluokat: 34600
19: kivikko (3D Polygon), kohdeluokat: 34700
20: korkeuspiste (3D Point), kohdeluokat: 52210
21: koski (3D Line String), kohdeluokat: 38200
22: kunnanhallintokeskus (3D Point), kohdeluokat: 84302, 84303
24: lahde (3D Point), kohdeluokat: 36100
25: lentokenttaalue (3D Polygon), kohdeluokat: 32411, 32412, 32413, 32414, 32415, 32416, 32417, 32418
26: louhos (3D Polygon), kohdeluokat: 32500
27: luiska (3D Line String), kohdeluokat: 34800
28: luonnonpuisto (3D Polygon), kohdeluokat: 72201
29: luonnonsuojelualue (3D Polygon), kohdeluokat: 72200
30: maaaineksenottoalue (3D Polygon), kohdeluokat: 32111,32112, 32113
31: maatalousmaa (3D Polygon), kohdeluokat: 32611, 32612
32: maatuvavesialue (3D Polygon), kohdeluokat: 38300
33: matalikko (3D Polygon), kohdeluokat:  38700
34: merkittavaluontokohde (3D Point), kohdeluokat: 34900
35: metsamaankasvillisuus (3D Point), kohdeluokat: 32710, 32713, 32714, 32715, 32719
36: metsamaanmuokkaus (3D Point), kohdeluokat: 32721
37: metsanraja (3D Line String), kohdeluokat: 39500
38: muuavoinalue (3D Polygon), kohdeluokat: 39110, 39120, 39130
39: muuntaja (3D Point), kohdeluokat: 22100
40: muuntoasema (3D Line String), kohdeluokat: 22200
41: niitty (3D Polygon), kohdeluokat: 32800
42: osoitepiste (3D Point), kohdeluokat: 96001, 96002
43: paikannimi (3D Point), kohdeluokat: 12101, 12301, 14201, 16101, 32101, 32201, 32301, 32401, 32501, 32901, 33001, 33101, 34601, 34901, 35010, 35020, 35030, 35040, 35050, 35060, 35070, 35080, 35090, 35101, 36101, 36201, 36301, 36410, 36420, 36490, 38201, 38501, 38901, 42101, 42201, 44301, 44901, 48111, 48112, 48120, 48130, 48190, 72201, 72303, 72403, 72502, 72601, 72701, 72801, 82501, 92401
44: pato (3D Line String), kohdeluokat: 30300
45: pelastuskoodipiste (3D Point), kohdeluokka: 96010
46: puisto (3D Polygon), kohdeluokat: 32900
47: puu (3D Point), kohdeluokat: 35100
48: puurivi (3D Line String), kohdeluokat: 35200
49: rajavyohykkeentakaraja (3D Line String), kohdeluokat: 82200
50: rauhoitettukohde (3D Point), kohdeluokat: 72310, 72320, 72330, 72340
51: rautatie (3D Line String), kohdeluokat: 14111, 14112, 14121, 14131
52: rautatieliikennepaikka (3D Point), kohdeluokat: 14200
53: rautatiensymboli (3D Point), kohdeluokat: 14191, 14192
54: retkeilyalue (3D Polygon), kohdeluokat: 72800
55: sahkolinja (3D Line String), kohdeluokat: 22311, 22312
56: sahkolinjansymboli (3D Point), kohdeluokat: 22391, 22394, 22395
57: selite (3D Point), kohdeluokat: 12302, 16102, 32102, 32202, 32302, 32402, 32502, 32602, 32902, 33002, 33102, 34902, 35102, 36500, 38902, 39502, 42102, 42202, 44202, 44302, 44402, 44902, 45002, 45402, 45502, 45702, 45802, 62102, 62202, 72202, 72304, 72404, 72501, 72603, 72604, 72802, 82102, 82202, 82402, 85100, 95302
58: sisaistenaluevesienulkoraja (3D Line String), kohdeluokat: 82300
59: sulkuportti (3D Line String), kohdeluokat: 30400
60: suojaalue (3D Polygon), kohdeluokat: 62200
61: suojaalueenreunaviiva (3D Line String), kohdeluokat: 62200
62: suojametsa (3D Polygon), kohdeluokka: 72500
63: suojametsanreunaviiva (3D Line String), kohdeluokat: 72500
64: suojanne (3D Line String), kohdeluokat: 35500
65: suojelualueenreunaviiva (3D Line String), kohdeluokat: 30999, 72000, 72420, 72440, 72700, 74330
66: suurjannitelinjanpylvas (3D Point), kohdeluokat: 22392
67: taajaanrakennettualue (3D Polygon), kohdeluokat: 40200
68: taajaanrakennetunalueenreuna (3D Line String), kohdeluokat: 40100
69: taytemaa (3D Polygon), kohdeluokat: 33000
70: tulvaalue (3D Polygon), kohdeluokat: 38400
71: tunnelinaukko (3D Point), kohdeluokat: 16800
72: uittolaite (3D Point), kohdeluokat: 38800
73: uittoranni (3D Line String), kohdeluokat: 39000
74: ulkojasisasaaristonraja (3D Line String), kohdeluokat:  82400
75: urheilujavirkistysalue (3D Polygon), kohdeluokat: 33100
76: valtakunnanrajapyykki (3D Point), kohdeluokat: 82500
77: varastoalue (3D Polygon), kohdeluokat: 38900
78: vedenottamo (3D Point), kohdeluokat: 26200
79: vedenpinnankorkeusluku (3D Point), kohdeluokat: 36291
80: vesiasteikko (3D Point), kohdeluokat: 95300
81: vesikivi (3D Point), kohdeluokat: 38511, 38512, 38513
82: vesikivikko (3D Polygon), kohdeluokat: 38600
83: vesikuoppa (3D Point), kohdeluokat: 36400
84: virtausnuoli (3D Point), kohdeluokat: 36391, 36392, 36393

Työkaluja
##########
Useimmat GIS-työkalut tukeevat GeoPackage-formaattia, mm. QGIS ja ArcGIS. 
Tiedostojen koot ovat 2-37 Gb, joten varmista että käytössäsi on riittävästi muistia tai käsittele kerralla vain osa tiedoston datasta.
QGIS:ssa auttaa zoomaus pienemmälle alueelle ja mittakaavarajoitusten käyttö.

Komentorivityökaluista GDAL osaa hyvin tehdä tiedostoista valintoja tai vaihtaa formaattia tai koordinaattijärjestelmää.

Myös Python ja R skripteihin voi lukea ja kirjoittaa dataa GeoPackage formaatista, esimerkkejä löytyy täältä:
https://github.com/csc-training/geocomputing/tree/master/R/geopackage
https://github.com/csc-training/geocomputing/tree/master/python/geopackage

Lisätietoja: http://www.geopackage.org/implementations.html
  
GDAL
####
GDAL: https://www.gdal.org/
GDAL-kirjaston ajuri (vektori): https://www.gdal.org/drv_geopackage.html
GDAL-kirjaston ajuri (rasteri): https://www.gdal.org/drv_geopackage_raster.html

Aineiston tarkastelu komentorivipohjaisesti
###########################################
GDAL-kirjastoon kuuluva ogrinfo on hyvä työkalu aineistojen komentorivipohjaiseen tarkasteluun.
https://www.gdal.org/ogrinfo.html

Aineiston muuntaminen muihin formaatteihin onnistuu esim. ogr2ogr työkalulla.
https://www.gdal.org/ogr2ogr.html

Esimerkkejä:

Selvitetään ogrinfo-työkalulla taulut, jotka geopackagesta MTK-rakennus löytyvät:
*********************************************************************************
$ ogrinfo MTK-rakennus_19-01-23.gpkg 

INFO: Open of `MTK-rakennus_19-01-23.gpkg'
      using driver `GPKG' successful.
1: aallonmurtaja (3D Line String)
2: aita (3D Line String)
3: allas (3D Polygon)
4: ilmaradankannatinpylvas (3D Point)
5: ilmarata (3D Line String)
6: kellotapuli (3D Point)
7: lahestymisvalo (3D Point)
8: masto (3D Point)
9: mastonkorkeus (3D Point)
10: muistomerkki (3D Point)
11: nakotorni (3D Point)
12: pistolaituriviiva (3D Line String)
13: portti (3D Point)
14: rakennelma (3D Line String)
15: rakennus (3D Polygon)
16: rakennusreunaviiva (3D Line String)
17: savupiippu (3D Point)
18: savupiipunkorkeus (3D Point)
19: tervahauta (3D Point)
20: tulentekopaikka (3D Point)
21: tuulivoimala (3D Point)
22: vesitorni (3D Point)


Selvitetään yleistiedot (-so, Summary Only) vesitorni taulusta:
***************************************************************
$ ogrinfo -so MTK-rakennus_19-01-23.gpkg vesitorni
INFO: Open of `MTK-rakennus_19-01-23.gpkg'
      using driver `GPKG' successful.

Layer name: vesitorni
Geometry: 3D Point
Feature Count: 363
Extent: (107116.000000, 6638780.000000) - (700667.000000, 7480290.000000)
Layer SRS WKT:
PROJCS["ETRS89 / TM35FIN(E,N)",
    GEOGCS["ETRS89",
        DATUM["European_Terrestrial_Reference_System_1989",
            SPHEROID["GRS 1980",6378137,298.257222101,
                AUTHORITY["EPSG","7019"]],
            TOWGS84[0,0,0,0,0,0,0],
            AUTHORITY["EPSG","6258"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4258"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",27],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AXIS["Easting",EAST],
    AXIS["Northing",NORTH],
    AUTHORITY["EPSG","3067"]]
FID Column = fid
Geometry Column = geom
id: Integer (0.0) NOT NULL
mtk_id: Integer (0.0) NOT NULL
gid: String (0.0) NOT NULL
dimension: Integer (0.0)
sijaintitarkkuus: Integer (0.0)
korkeustarkkuus: Integer (0.0)
aineistolahde: Integer (0.0)
alkupvm: Date (0.0)
suunta: Integer (0.0)
kohderyhma: Integer (0.0)
kohdeluokka: Integer (0.0)
versio: Integer (0.0)

Kysytään SQL-lauseella vesitornit rakennustaulusta (rajataan kysely kahteen kohteeseen):
****************************************************************************************
$ ogrinfo MTK-rakennus_19-01-23.gpkg -sql "SELECT * FROM vesitorni limit 2"
INFO: Open of `MTK-rakennus_19-01-23.gpkg'
      using driver `GPKG' successful.

Layer name: SELECT
Geometry: 3D Point
Feature Count: 2
Extent: (274152.335000, 6638776.395000) - (324392.736000, 6646558.804000)
Layer SRS WKT:
PROJCS["ETRS89 / TM35FIN(E,N)",
    GEOGCS["ETRS89",
        DATUM["European_Terrestrial_Reference_System_1989",
            SPHEROID["GRS 1980",6378137,298.257222101,
                AUTHORITY["EPSG","7019"]],
            TOWGS84[0,0,0,0,0,0,0],
            AUTHORITY["EPSG","6258"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4258"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",27],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AXIS["Easting",EAST],
    AXIS["Northing",NORTH],
    AUTHORITY["EPSG","3067"]]
FID Column = fid
Geometry Column = geom
id: Integer (0.0)
mtk_id: Integer (0.0)
gid: String (0.0)
dimension: Integer (0.0)
sijaintitarkkuus: Integer (0.0)
korkeustarkkuus: Integer (0.0)
aineistolahde: Integer (0.0)
alkupvm: Date (0.0)
suunta: Integer (0.0)
kohderyhma: Integer (0.0)
kohdeluokka: Integer (0.0)
versio: Integer (0.0)
OGRFeature(SELECT):1
  id (Integer) = 1
  mtk_id (Integer) = 192742673
  gid (String) = FI.Vesitorni.192742673
  dimension (Integer) = 3
  sijaintitarkkuus (Integer) = 3000
  korkeustarkkuus (Integer) = 201
  aineistolahde (Integer) = 1
  alkupvm (Date) = 2013/09/11
  suunta (Integer) = 0
  kohderyhma (Integer) = 47
  kohdeluokka (Integer) = 45800
  versio (Integer) = 0
  POINT Z (324392.736 6646558.804 19.896)

OGRFeature(SELECT):2
  id (Integer) = 2
  mtk_id (Integer) = 91440845
  gid (String) = FI.Vesitorni.91440845
  dimension (Integer) = 3
  sijaintitarkkuus (Integer) = 3000
  korkeustarkkuus (Integer) = 201
  aineistolahde (Integer) = 1
  alkupvm (Date) = 2013/09/02
  suunta (Integer) = 0
  kohderyhma (Integer) = 47
  kohdeluokka (Integer) = 45800
  versio (Integer) = 0
  POINT Z (274152.335 6638776.395 17.141)


Selvitetään MTK-rakennus geopackagesta rakennus taulun kohdeluokat ja järjestetään ne kohdeluokan (Integer) mukaan:
*******************************************************************************************************************
Huom: kohdeluokkien tietosisällöstä lisätietoa löytyy: 
https://www.maanmittauslaitos.fi/kartat-ja-paikkatieto/asiantuntevalle-kayttajalle/tuotekuvaukset/maastotietokanta-0


$ ogrinfo MTK-rakennus_19-01-23.gpkg -sql "SELECT DISTINCT kohdeluokka FROM rakennus ORDER by kohdeluokka"
INFO: Open of `MTK-rakennus_19-01-23.gpkg'
      using driver `GPKG' successful.

Layer name: SELECT
Geometry: None
Feature Count: 19
Layer SRS WKT:
(unknown)
kohdeluokka: Integer (0.0)
OGRFeature(SELECT):0
  kohdeluokka (Integer) = 42210

OGRFeature(SELECT):1
  kohdeluokka (Integer) = 42211

OGRFeature(SELECT):2
  kohdeluokka (Integer) = 42212

OGRFeature(SELECT):3
  kohdeluokka (Integer) = 42220

OGRFeature(SELECT):4
  kohdeluokka (Integer) = 42221

OGRFeature(SELECT):5
  kohdeluokka (Integer) = 42222

OGRFeature(SELECT):6
  kohdeluokka (Integer) = 42230

OGRFeature(SELECT):7
  kohdeluokka (Integer) = 42231

OGRFeature(SELECT):8
  kohdeluokka (Integer) = 42232

OGRFeature(SELECT):9
  kohdeluokka (Integer) = 42240

OGRFeature(SELECT):10
  kohdeluokka (Integer) = 42241

OGRFeature(SELECT):11
  kohdeluokka (Integer) = 42242

OGRFeature(SELECT):12
  kohdeluokka (Integer) = 42250

OGRFeature(SELECT):13
  kohdeluokka (Integer) = 42251

OGRFeature(SELECT):14
  kohdeluokka (Integer) = 42252

OGRFeature(SELECT):15
  kohdeluokka (Integer) = 42260

OGRFeature(SELECT):16
  kohdeluokka (Integer) = 42261

OGRFeature(SELECT):17
  kohdeluokka (Integer) = 42262

OGRFeature(SELECT):18
  kohdeluokka (Integer) = 42270


Vesitornien erottaminen geopackagesta ogr2ogr työkalulla ja tallentaminen ESRI shapefile -formaattiin
*****************************************************************************************************
$ ogr2ogr -f "ESRI Shapefile" vesitorni.shp MTK-rakennus_19-01-23.gpkg -sql "SELECT * FROM vesitorni"
Warning 6: Normalized/laundered field name: 'sijaintitarkkuus' to 'sijaintita'
Warning 6: Normalized/laundered field name: 'korkeustarkkuus' to 'korkeustar'
Warning 6: Normalized/laundered field name: 'aineistolahde' to 'aineistola'
Warning 6: Normalized/laundered field name: 'kohdeluokka' to 'kohdeluokk'