Paikkatietoaineistot KML-muotoon

Monilla web-kehittäjillä on äärimmäinen tarkoitus saada paikkatietoaineistot tallennettua KML-muotoon. Tässä ohjeissa kerrotaan KML-tiedostomuodosta ja kuinka voi aineiston muuttaa KML-muotoon. Lopussa on myös yksinkertainen web-sovellus tehdystä aineistoista.

KML-tiedostomuoto

KML (Keyhole Markup Language) on erityisesti Googlen käyttämä tiedostomuoto. Se on myös nykyään OGC:n standardi. Näistä huolimatta KML on suhteellisen huono tallennustapa paikkatiedoilla: XML-pohjaisena tietoformattina KML on tehoton tapa tallentaa paikkatietoja. Toiseksi kaikkien perusoppien vastaisesti tiedostoformaatissa on paikkatiedot (geometria- ja ominaisuustiedot) liitetty kiinteästi kuvaustekniikkaan. Kuvaustekniikan muuttaminen ohjelmistossa on sitten hiukan monimutkaista. Lisätietoja: wikipedian artikkeli KML:stä ja OGC:n standardi.

Mutta koska niin monet tahot käyttävät ja kaipaavat KML-muotoisia tiedostoja, niin tässä lyhyt ohje kuinka Quantum GIS-ohjelmistolla voi muodostaa KML-aineistoja.

Tässä ohjeessa käytetään pääkaupunkiseudun äänestysaluerajoja. Tiedot voi ladata HRI:n sivuilta. Jo tässä vaiheessa todetaan että aineistoa koskevienkäyttöoikeusehtojen mukaisesti: ”© Helsingin, Espoon, Kauniaisten ja Vantaan kaupungit, 01.01.2012”. Aineisto on tallennettu MapInfo TAB-muotoon ja koordinaattijärjestelmänä on KKJ2 (EPSG:2392).

Quantum GIS-ohjelmiston valikosta valitaan Add Vector Layer:

Pic01_AddVectorLayer

Ja avautuvaan ikkunaan haetaan tuo tab-tiedosto. Merkistön saamiseksi oikein on monessa tapauksessa arpapeliä. Valitulla ISO-8859-15 asetuksella menee tässä tapauksessa kuntoon.

Pic02_AddLayer
KMl-tiedosto tallennetaan aina WGS84-koordinaateissa, siis levys- ja pituuasteina. Eli tiedoston muodostuksessa tehdään koordinaattijärjestelmän muutos. Kun tuo lähtöaineisto on vanhassa suomalaisessa KKJ-järjestelmässä, niin muunnokseen tulee aina virhettä. Tässä tapauksessa emme rupea hifistelemään vaan tyydymme yleisiin koko maata koskeviin muunnosparametreihin. Parametrit ovat valmiina QuantumGIS:ssä, mutta ongelma on se, että tuo MapInfon tapa tallentaa koordinaatteja ei noudata alan yleisintä standardia, EPSG. Käy siis määrittelemässä tälle tasolle koordinaatistojärjestelmä seuraavasti:

Avaa Set Layer CRS-valikko painamalla hiiren oikeata näppäintä tason päällä:

Pic04_LayerCRS

Etsi koordinaatistoluettelosta KKJ2 (EPSG koodi/ID on se 2392):

Pic05-SetLayerCRS

No niin, seuraavaksi olemme valmiit tallentamaan aineiston KML-muotoon. Taas hiiren oikealla näppäimellä alasvetovalikosta Save as..

Pic06 - SaveAs

Tallennusikkunaan valitaan formaatksi KML ja sitten tiedoston nimi. Tuota CRS-kenttää pääsee kyllä muuttamaan, mutta lopputuloksena on aina kumminkin EPSG:4326 -koordinaatiston mukaiset pituus- ja leveysasteet:

Pic07-SaveKML

Lopputulosta voi sitten vaikka tarkastella tekstieditorissa, alun pitäisi näyttää suunnilleen tältä:

?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document><Folder><name>MunAlue</name>
<Schema name="MunAlue" id="MunAlue">
    <SimpleField name="Name" type="string"></SimpleField>
    <SimpleField name="Description" type="string"></SimpleField>
    <SimpleField name="ID" type="int"></SimpleField>
    <SimpleField name="KUNTA" type="string"></SimpleField>
    <SimpleField name="TKNIMI" type="string"></SimpleField>
    <SimpleField name="TKTUNNUS" type="string"></SimpleField>
    <SimpleField name="Tunnus" type="string"></SimpleField>
    <SimpleField name="Nimi" type="string"></SimpleField>
</Schema>
  <Placemark>
    <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#MunAlue">
        <SimpleData name="ID">1</SimpleData>
        <SimpleData name="KUNTA">049</SimpleData>
        <SimpleData name="TKNIMI">049 020  Kalajärvi</SimpleData>
        <SimpleData name="TKTUNNUS">02049020</SimpleData>
        <SimpleData name="Tunnus">020</SimpleData>
        <SimpleData name="Nimi">Kalajärvi</SimpleData>
    </SchemaData></ExtendedData>
      <Polygon><outerBoundaryIs><LinearRing><coordinates>24.599169714279611,60.327417524562641 24.600903076795262,60.329006177162213 24.6....

KML-tiedoston visualisointi OpenStreetMap -aineiston kanssa

Aloitteleville web-koodaajille jätetään kotiläksyksi tehdyn KML-tiedoston integrointi Google Maps-karttapalveluun. Edistyneemmät koodaajat voivat parannella oheista OpenLayers & OpenStreetMap-aineistoa hyödyntävää demoani: