3D-Win / Tiedosto / Formaatit / Vektoritiedosto / GIS
Avainsanat: GML, KuntaGML
Artikkelin toiminnot 3D-Win 6.4.1 alkaen
Julkaistu 18.04.2018, Mikko Syrjä
GML on GIS-tiedostojen siirtämiseen tarkoitettu XML-pohjainen formaatti, jota käytetään yleisesti verkon karttapalveluissa. Se määrittelee geometristen rakenteiden (piste, viiva, alue) ja ominaisuustiedon esitystavat, mutta ei vielä varsinaisia kohdetyyppeja ja ominaisuuksia. Näitä varten palvelun on määriteltävä erillinen schema-tiedosto, jossa on kuvattu mahdolliset kohdetyypit sekä kullekin sallitut ominaisuustiedot arvojoukkoineen. Tällaisia määrittelyjä ovat esimerkiksi KuntaGML ja Maanmittauslaitoksen kiinteistötietojen kyselypalvelu.
3D-Win GML-muunnin osaa lukea useimpia GML-tiedostoja ja tulkata niiden schema-tiedostoista ominaisuustietojen määrittelyt. Ilman schema-määrittelyä olevista tiedostosta voidaan lukea kohteiden geometriat, mutta koodaus ja ominaisuudet jäävät tällöin puuttumaan. Maanmittauslaitoksen maastotietokannan GML-tiedostot poikkeavat hieman normaalista ja niitä varten on erillinen MtkGml-muunnin.
GML-tiedostojen kirjoittaminen ei tällä hetkellä ole mahdollista.
Asetukset
GML-muuntimen määrittelyn Muut-kohdan asetuksissa ylemmässä laatikossa ovat yleiset GIS-asetukset ja alemmasssa laatikossa GML-asetukset. Ominaisuuksien määrittelyt eivät ole käytössä, koska ne koskevat vain tiedostojen kirjoitusta. Merkkaa alueet ja Laske alueen piste -asetuksilla voidaan luettaessa normaalisti merkata sulkeutuvat viivat alueiksi tai laskea alueille referenssipiste.
Kieli-asetuksella voidaan valita joistakin monikielisistä GML-tieodostoista luettavaksi paikannimet halutulla kielellä.
Koodit ja Ominaisuudet -asetuksiin voidaan laittaa etukäteen luetusta schema-tiedostosta tulkatut koodien ja ominaisuuksien määrittelyt. Useimmissa tapauksissa tämä ei ole tarpeellista, koska schema voidaan lukea ja tulkata aina tarvittaessa. Jos schema kuitenkin on monimutkainen tai palvelu on hidas, voi käyttöä nopeuttaa näiden tiedostojen avulla. Tästä lisää alla.
Lue schema -asetuksella schema-tiedosto luetaan ja tulkataan aina GML-tiedoston luvun yhteydessä. Käyttäjä ja Salasana -asetukset voidaan tarvita joidenkin suojattujen palveluiden kanssa.
Scheman tulkkaus
Schemaa etsitään ensin luettavan tiedoston kanssa samasta hakemistosta. Schema-tiedostolla on oltava sama nimi kuin luettavalla tiedostolla ja sen tiedostopääte on oltava .xsd. Jos tätä ei löydy, schema luetaan GML-tiedoston otsikkotiedoissa annetusta URL-osoitteesta. Kummassakin tapauksessa schema yleensä sisältää viittauksia muihin schema-tiedostoihin, jotka sitten myös ladataan ja tulkataan. Tämä voi joskus olla hidasta.
Tulkatut kohdetyypit ja ominaisuudet kirjoitetaan aina käyttäjän asetushakemistossa oleviin tiedostoihin auto_code_tag.txt ja auto_attr_tag.txt. Ensimmäinen sisältä listan kohdetyypeistä ja toinen ominaisuuksista.
Esimerkiksi Vantaan WFS-palvelun kohdetyyppilistan auto_code_tag.txt alku:
! wfs_175409_kaupunginraja.gml.vantaa http://gis.vantaa.fi/geoserver/gis^ajokaistat http://gis.vantaa.fi/geoserver/gis^kantakartta_tarkka http://gis.vantaa.fi/geoserver/gis^kantakartta_yleiskuva http://gis.vantaa.fi/geoserver/gis^keskilinjat http://gis.vantaa.fi/geoserver/gis^kiinteistot http://gis.vantaa.fi/geoserver/gis^kiinteistot_kiha http://gis.vantaa.fi/geoserver/gis^kiinteistot_rajamerkit http://gis.vantaa.fi/geoserver/gis^kiinteistot_rakenteilla http://gis.vantaa.fi/geoserver/gis^kiinteistot_rasitteet http://gis.vantaa.fi/geoserver/gis^kiintopiste
Vastaavan ominaisuuslistan auto_attr_tag.txt alku:
! wfs_175409_kaupunginraja.gml.vantaa http://gis.vantaa.fi/geoserver/gis^ALKUPERAINEN_GLOBALID http://gis.vantaa.fi/geoserver/gis^ASEMAKAAVAGUID http://gis.vantaa.fi/geoserver/gis^GlobalID http://gis.vantaa.fi/geoserver/gis^KAAVAMAARAYSGUID http://gis.vantaa.fi/geoserver/gis^KAAVAMERKINTA http://gis.vantaa.fi/geoserver/gis^KAAVATUNNUS http://gis.vantaa.fi/geoserver/gis^KAYTTOTARKOITUS http://gis.vantaa.fi/geoserver/gis^KERROSLUKU http://gis.vantaa.fi/geoserver/gis^KOHTEENVAIHE http://gis.vantaa.fi/geoserver/gis^KORTTELINUMER
Kummassakin tapauksessa itse GML-tiedostossa käytetään lyhyempiä nimiavaruuksia (esim. http://gis.vantaa.fi/geoserver/gis^kiinteistot = gis:kiinteistot). Nämä aliakset kuitenkin määritellään GML-tiedoston alussa ja voivat vaihdella tiedostosta toiseen. Siksi koodi- ja ominaisuuslistoissa käytetään globaalisti yksilöiviä tunnuksia. Vaikka tähän yksilöintiin käytetäänkin URL-osoitteita, vastaavaa nettisivua ei silti välttämättä ole olemassa.
Nämä tiedostot voidaan kopioida toisille nimille (esim. vantaa_code_tag.txt ja vantaa_attr_tag.txt) ja laittaa ne GML-muuntimen Muut-asetusten kohtiin Koodit ja Ominaisuudet. Kun vielä poistetaan Lue schema -asetus, niin luku toimii nopeammin ilman hidasta scheman tulkkausta. Yleensä tätä varten kannattaa tehdä erillinen muunninmäärittely (esim. GML Vantaa).
Kohdetyyppi siirtyy suoraan kohteen koodiksi ja ominaisuudet kohteen ominaisuuksiksi. Esimerkiksi edellisellä määrittelyllä luetulla tontilla on seuraavat tiedot:
Sekä kohdetyyppien että ominaisuuksien nimistä poistetaan nimiavaruudet automaattisesti.
Luku ilman schemaa
Joskus tulee vastaan GML-tiedostoja, joista joko puuttuu schema-tieto tai jostain syystä sitä ei pystytä tulkkaamaan. Muunnin osaa yleensä lukea geometrian (pisteet, viivat, alueet), mutta ominaisuustieto jää puuttumaan.
Joissain yksinkertaisissa tapauksissa ominaisuuksiin tarvittavat ohjaintiedostot voidaan luoda käsin. Seuraavassa esimerkki, miten sen voi tehdä.
Avataan viereinen GML-tiedosto tekstieditoriin tutkittavaksi.
Tiedostosta nähdään, että siinä on alussa kiinteistö (re:RealEstates) ja sen alla yksi palsta (re:Parcel). Palstan sisällä on sitten toistuvia st:Stand -kohteita eli metsäkuvioita. Niillä on geometria (gdt:PolygonGeometry) ja seuraavia ominaisuustiedolta näyttäviä rivejä:
<co:ChangeState>0</co:ChangeState> <co:ChangeTime>2021-04-23T11:32:35</co:ChangeTime> <st:CompleteState>0</st:CompleteState> <st:StandNumber>2</st:StandNumber> <st:StandNumberExtension /> <st:MainGroup>7</st:MainGroup> <st:StandBasicDataDate>2021-04-23</st:StandBasicDataDate> <st:Area>0.168</st:Area>
Kukin xml-tag kuuluu johonkin nimiavaruuteen (re:, st:, co:, jne.). Nämä ovat vain lyhenteitä, jotka ovat voimassa vain tässä tiedostossa. Oikeat pitkät nimiavaruudet on listattu tiedoston alussa. Esimerkiksi alusta löytyy määrittely xmlns:re="http://standardit.tapio.fi/schemas/forestData/realEstate". Se kertoo että esimerkikiksi re:Parcel on oikeasti http://standardit.tapio.fi/schemas/forestData/realEstate:parcel. Lyhenne vain korvataan oikealla arvolla. Koska oikea nimiavaruus sisältää kaksoispisteen, käytetään ohjaintiedostossa nimiavaruuden ja tagin välissä erottimena hattu-merkkiä ^.
Nyt voidaan tiedoston alusta hakea oikeat vastineet nimiavaruuslyhenteille co sekä st ja muodostaa ohjaintiedostot. Kohdetyypiksi tulee st:Stand ja toiseen tiedostoon listataan ominaisuudet:
forest_code_tag.txt
! forestpropertydata.xml http://standardit.tapio.fi/schemas/forestData/Stand^Stand
forest_attr_tag.txt
! forestpropertydata.xml http://standardit.tapio.fi/schemas/forestData/common^ChangeState http://standardit.tapio.fi/schemas/forestData/common^ChangeTime http://standardit.tapio.fi/schemas/forestData/Stand^CompleteState http://standardit.tapio.fi/schemas/forestData/Stand^StandNumber http://standardit.tapio.fi/schemas/forestData/Stand^StandNumberExtension http://standardit.tapio.fi/schemas/forestData/Stand^MainGroup http://standardit.tapio.fi/schemas/forestData/Stand^StandBasicDataDate http://standardit.tapio.fi/schemas/forestData/Stand^Area
Nämä tiedostot sitten laitetaan GML-muuntimen asetuksiin Muut-painikkeen takana kuten yllä on dokumentoitu. Kun alkuperäinen tiedosto sitten luetaan tällä muuntimella, metsäkuviot tulevat alueina, joilla on tiedostosta luetut ominaisuudet:
<?xml version="1.0" encoding="iso-8859-1"?> <ForestPropertyData xmlns="http://standardit.tapio.fi/schemas/forestData" xmlns:re="http://standardit.tapio.fi/schemas/forestData/realEstate" xmlns:st="http://standardit.tapio.fi/schemas/forestData/Stand" xmlns:ts="http://standardit.tapio.fi/schemas/forestData/treeStand" xmlns:tst="http://standardit.tapio.fi/schemas/forestData/treeStratum" xmlns:dts="http://standardit.tapio.fi/schemas/forestData/deadTreeStrata" xmlns:tss="http://standardit.tapio.fi/schemas/forestData/treeStandSummary" xmlns:op="http://standardit.tapio.fi/schemas/forestData/operation" xmlns:sf="http://standardit.tapio.fi/schemas/forestData/specialFeature" xmlns:gdt="http://standardit.tapio.fi/schemas/forestData/common/geometricDataTypes" xmlns:co="http://standardit.tapio.fi/schemas/forestData/common" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://standardit.tapio.fi/schemas/forestData ForestData.xsd"> <re:RealEstates> <re:RealEstate id="123456"> <re:MunicipalityNumber>123</re:MunicipalityNumber> <re:AreaNumber>456</re:AreaNumber> <re:GroupNumber>23</re:GroupNumber> <re:UnitNumber>23</re:UnitNumber> <re:RealEstateName>test</re:RealEstateName> <re:Parcels> <re:Parcel id="123456"> <re:ParcelNumber>0</re:ParcelNumber> <st:Stands> <st:Stand id="7654321"> <st:StandBasicData> <co:ChangeState>0</co:ChangeState> <co:ChangeTime>2021-04-23T11:32:35</co:ChangeTime> <st:CompleteState>0</st:CompleteState> <st:StandNumber>2</st:StandNumber> <st:StandNumberExtension /> <st:MainGroup>7</st:MainGroup> <st:StandBasicDataDate>2021-04-23</st:StandBasicDataDate> <st:Area>0.168</st:Area> <gdt:PolygonGeometry> <gml:pointProperty> <gml:Point srsName="EUREF-FIN"> <gml:coordinates>450303.2334,6915925.3443</gml:coordinates> </gml:Point> </gml:pointProperty> <gml:polygonProperty> <gml:Polygon srsName="EUREF-FIN"> <gml:exterior> <gml:LinearRing> <gml:coordinates> 450311.3932,6915962.4267 450311.316,6915903.2803 ... 450261.4043,6915970.9325 450311.3932,6915962.4267 </gml:coordinates> </gml:LinearRing> </gml:exterior> </gml:Polygon> </gml:polygonProperty> </gdt:PolygonGeometry> </st:StandBasicData> </st:Stand> <st:Stand id="7654322"> <st:StandBasicData> ...
Toiminnon ohjesivu: GML vektoriformaatti
Keskustelu aiheesta: 3D-Forum/GML-formaatti
Lue lisää: GIS-ominaisuudet