FME-uudistuksia

Kävimme pari viikkoa sitten Safe Softwaren järjestämässä FME UC 2017:ssa Vancouverissa, ja viikko oli huikea. Verkostoituminen, käyttäjien tapaaminen, FME-tohtorien luona käynti ja toki kaikki esitykset olivat antoisia.

FME:hen on tulossa uusia mielenkiintoisia toiminnallisuuksia, ja ehkä yksi hyödyllisimmistä on FME-työtilan uusi ajotapa, jonka avulla voit ajaa työtilaa transformer kerrallaan, ja FME:n ei tarvitse lukea uudelleen lähtöaineistoa joka ajokerralla. Voit esim. lisätä työtilaan lähtöaineiston ja transformerin, ja ajaa siihen kohtaan työtilan sekä tarkastella aineistoa. Sitten voit jatkaa työtilan muokkaamista lisäämällä uuden transformerin, ja ajaa siitä, mihin edellinen ajo pääsi. Todella hyödyllistä!

Toinen uusi toiminnallisuus, jonka mainitsen, on FME Serverin automaatioiden hallintasivu. Sen avulla voidaan kytkeä eri FME Serverillä olevia työtiloja ja niihin liittyviä käynnistystoimintoja sekä viestitystoimintoja toisiinsa. Tämän avulla hankalat Subscriber, Topic ja Publication -toiminnot on helppo konfiguroida ja hallita.

Esitykset FME UC:sta tulevat lähiaikoina saataville: https://fmeuc.com/

Lue myös Safe Softwaren blogikirjoitukset aiheesta: https://blog.safe.com/2017/05/fme-uc-2017-wednesday-recap/, https://blog.safe.com/2017/05/fme-uc-2017-thursday-recap/, https://blog.safe.com/2017/05/fme-uc-2017-friday-recap/

MML:n Muutostietopalvelun hyödyntäminen FME:llä

Onpa kulunutkin pitkä aika edellisestä postauksesta. Ehkä voisin tihentää blogin päivitystahtia :).

FME 2015 ja FeatureReader

Uutisia uutisia, FME 2015 on julkaistu, jos et ole sitä vielä ladannut, käy lataamassa täältä: http://www.safe.com/support/support-resources/fme-downloads/

FME 2015

Uusi versio sisältää suuren määrän parannuksia ja päivityksiä, ja FeatureReader on yksi niistä. FeatureReaderilla voi lukea aineistosta jostain lähteestä käyttäen jotain toista aineistoa syötteenä. Esim. tiettyä kuntarajaa voisi käyttää maastotietokannan lukemiseen. Tämä on ollut ennenkin mahdollista, mutta uudessa versiossa FeatureReaderin tulosportit voi niputtaa yhteen ja samaan, jolloin mm. muutostietopalvelun hyödyntäminen FME:llä on kätevää (siitä lisää myöhemmin):

FeatureReader

Vasemmalla FME 2014:n FeatureReader ja Maastotietokannan kohdeluokat tulosportteina. Oikealla FME 2015:n FeatureReader ja samat Maastotietokannan kohdeluokat portissa Generic.

Aineistojen lataaminen muutostietopalvelusta

Mennään seuraavaksi muutostietopalvelun hyödyntämiseen. Muutostietopalvelusta saa listattua aineistot, jotka ovat päivittyneet käyttäjän syöttämän päivämäärän jälkeen. Palvelusta saa myös aineistojen karttalehtien latauslinkit, ja FME pystyy lataamaan aineistot ilman, että dataa tarvitsee välitallentaa. Tavallisestihan käyttäjät joutuvat lataamaan karttalehtiä Maanmittauslaitoksen tiedostolatauspalvelusta valiten karttalehtiä, tehden tilauksen ja lopulta ladaten aineistot sähköpostiin tulleen linkin kautta.

Aineistojen lataaminen palvelusta toimii seuraavasti: Listataan tietyn päivämäärän jälkeen päivittyneet aineistot urlilla

https://tiedostopalvelu.maanmittauslaitos.fi/tp/feed/mtp/?

Urlin perään tulee apikey, joka pitää käydä tilaamassa muutostietopalvelusta: https://tiedostopalvelu.maanmittauslaitos.fi/tp/mtp/tilaus

Esim.

https://tiedostopalvelu.maanmittauslaitos.fi/tp/feed/mtp/?api_key=123

Kun aineistot on listattu, saat kullekin aineistolle uuden urlin, jonka perään voit syöttää päivämäärän, esim:

https://tiedostopalvelu.maanmittauslaitos.fi/tp/feed/mtp/maastotietokanta/kaikki?api_key=123&updated=2013-01-01T00:00:00

Tästä saat lopulta karttalehtikohtaisen urlin, jonka voit syöttää FeatureReaderille:

https://tiedostopalvelu.maanmittauslaitos.fi/tp/tilauslataus/tuotteet/maastotietokanta/kaikki/etrs89/gml/T5/T52/T5212L_mtk.zip?api_key=123

FME-prosessi

Varsinaisen FME-prosessin ensimmäinen osa koostuu seuraavista transformereista:

  1. Creator, jolla luodaan aineistolistauksen käynnistävä kohde.
  2. AttributeCreator, jolla luodaan aineistolistauksen url.
  3. HTTPCaller, jolla pyydetään muutostietopalvelusta aineistot.
  4. XMLFragmenter, jolla puretaan muutostietopalvelusta tuleva listaus XML:stä kohteiksi entry-elementin avulla.
  5. TestFilter, jolla jaetaan eri tyyppiset aineistot, esim. maastotietokanta ja ortokuvat.
  6. DateFormatter ja Tester, joilla testataan onko aineisto päivittynyt käyttäjän antaman päivämäärän jälkeen.
  7. DateFormatter, jolla muotoillaan käyttäjän antama päivämäärä muodosta 20130101 muotoon 2013-01-01T00:00:00.

Muutostietopalvelun_aineistojen_listaus

FME-prosessin toinen osa koostuu seuraavista transformereista:

  1. HTTPCaller, johon syötetään XMLFragmenterista saatu aineiston URL (attribuutti link{0}.href).
  2. AttributeKeeper, jolla poistetaan turhat attribuutit.
  3. XMLFragmenter, jolla puretaan XML jälleen entry-elementin avulla.
  4. FeatureReader, johon syötetään XMLFragmenterista saadut linkit (attribuutti link.href).
  5. Datan kirjoitus

Muutostietopalvelun_aineistojen_lataus

Lopulta datan voi kirjoittaa mihin tahansa FME:n tukemista formaateista. Itse käytän usein jotain kantaa, kuten PostGIS-kantaa, johon kirjoitan muuttuneet karttalehdet.

Hyödyt

Tavallisesti aineistojen lataaminen ja muuntaminen käyttäjän haluamaan formaattiin on hankalaa. Muutostietopalvelu auttaa, mutta sekin vaatii automaattisen prosessin rakentelun, mitä kautta selvitetään, mitkä aineistot ovat päivittyneet. Onneksi aineistojen lataamisen ja viennin esim. kantaan voi automatisoida täysin FME:llä. Kun listaa muuttuneet karttalehdet tietystä aineistosta FME:llä, koko aineistoa ei tarvitse ladata MML:n tiedostolatauspalvelusta, vaan vain muuttuneet karttalehdet riittää. Myös datan välivarastointi jää pois, koska FME voi lukea aineistot suoraan tiedostolatauspalvelusta ja lennosta muuntaa haluamaasi formaattiin.

Kertaus

Tärkeimmät transformerit, mitä tarvitset ovat Creator, AttributeCreator, HTTPCaller, XMLFragmenter ja FeatureReader. Ja toki Inspector, jos kaikki ei mene niinkuin pitää :).

FME-käyttäjäpäivät 2014

Tänään on viimeinen päivä mahdollista ilmoittautua FME-käyttäjäpäiville 2014, jotka pidetään 24.-25.4.2014.

Image

Se on nyt vähän niinkuin pakko tulla mukaan, jos on kiinnostusta nähdä, mitä uutta on FME 2014:ssa, ja miten FME:tä käytetään eri organisaatioissa.

Ilmoittautuminen palautelomakkeen kautta: http://www.spatialworld.fi/public/company/fi/contacts.shtml

FME ja PDF-kartan tekeminen

Tässä taannoin eräs asiakas kyseli, pystyykö FMEllä tekemään PDF-karttaa, jossa pitäisi näkyä itse karttanäkymä, mutta sen lisäksi myös otsikko, legenda, mittakaava ja pohjoisnuoli. Kyllähän sellaisen pystyy tekemään. Siihen saa lisäksi kohdeluokat eri tasoille ja kohteiden ominaisuustietoja pystyy myös tarkastelemaan. Tässä on perusidea työtilasta:

  1. Aineistojen sisäänluku.
  2. PDF-kuvaustyylit.
  3. Piirtojärjestys ja sijoittelu.
  4. Legendan luonti.
  5. Mittakaavan ja pohjoisnuolen luonti.

1. Aineistojen sisäänluku

Käytin aineistona Maanmittauslaitoksen Maastotietokanta-GML:ää (FME 2013 SP1 tukee MTK-GML:ää) Espoon Keilaniemen alueelta, joka on ladattu vuonna 2012 (http://www.maanmittauslaitos.fi/avoindata_lisenssi_versio1_20120501). Otin aineistosta mukaan seuraavat kohdeluokat:

  • Kallioalue
  • Korkeuskäyrä
  • Korkeusarvo
  • Meri
  • Paikanimi
  • Puisto
  • Rakennus
  • Tieviiva
MTK-GML-lähtöaineistot.

MTK-GML-lähtöaineistot.

2. PDF-kuvaustyylit

FMEssä PDF-kuvaustyylit voi luoda PDFStylerilla. Jokaisen kohdeluokan kuvaustyylit määritellään eri PDFStylereissä. Tässä esimerkiksi Tieviivan PDFStyler. Jos olet käyttänyt PDFStyleria ennen, huomaatko jotain erikoista kohdissa Color ja Line Width:

Kuvaustyylien määrittäminen kohdeluokalle tieviiva.

Kuvaustyylien määrittäminen kohdeluokalle tieviiva.

FME 2013 SP1:ssä kuvaustyyli voidaan luoda eri tieluokille suoraan yhdessä PDFStylerissa. Kohdeluokka tieviiva sisältää eri tieluokkia, ja kuvaustyylien määrittämiseen ei tarvitse jakaa kohdeluokkaa ensin eri luokkiin ja sitten määrittää kuvaustyylit jokaiselle tieluokalle eri PDFStylereilla. Toiminnon nimi on Set to Conditional Value:

Set to Conditional Value -toiminto.

Set to Conditional Value -toiminto.

Seuraavassa on esimerkki värin määrityksestä tieluokalle (lausekkeiden tekeminen ei oikeasti ole noin hankalaa kuin kuvassa näyttää. Väriarvonkin saa kirjoittamisen sijasta valita väritaulukosta):

Värien määritys eri tieluokille.

Värien määritys eri tieluokille.

3. Piirtojärjestys ja sijoittelu

PDF koostuu frame-elementeistä ja niiden sisään sijoitettavista kohteista. Attribuutti pdf_frame_name määrittelee framen nimen. Piirtojärjestykseen vaikuttavat kaksi attribuuttia: pdf_feature_order ja pdf_frame_order. Ensimmäinen vaikuttaa kohteiden piirtojärjestykseen saman framen sisällä ja jälkimmäinen vaikuttaa frame-elementtien piirtojärjestykseen. Mitä pienempi lukuarvo attribuuteilla on, sitä aiemmin kohteet ja frame piirretään, eli ne jäävät myöhemmin piirrettävien alle.

Sijoitteluun voi vaikuttaa attribuutilla pdf_frame_rectangle, joka määrittelee sivun yksiköissä framen sijainnin. Esimerkiksi, jos kartta-framen pdf_frame_rectangle on 25 250 -25 -10 (minx, miny, maxx, maxy), kartta-frame sijoitetaan 25 yksikköä vasemmasta ja 25 yksikköä oikeasta reunasta sekä 250 yksikköä ala- ja 10 yksikköä yläreunasta:

Framen sijoittelu pdf_frame_rectangle-attribuutilla. Muista nimetä frame attribuutilla pdf_frame_name.

Framen sijoittelu pdf_frame_rectangle-attribuutilla. Muista nimetä frame attribuutilla pdf_frame_name.

4. Legendan luonti

FME perustuu aineistojen muokkaukseen prosessissa, joten legendaan ei voi napata jostain haluamiaan kartan kohteita yksitellen, vaan poiminta pitää määritellä prosessiin. Perusidea esimerkissäni on se, että kohteet poimitaan Samplerilla ja kohteiden sekä kohdeluokkatekstien määrittely tehdään 2DBoxReplacerilla ja Tilerilla:

Legenda luodaan 2DBoxReplacerilla, Tilerilla ja Samplerilla sekä joukolla muita transformereita.

Legenda luodaan 2DBoxReplacerilla, Tilerilla ja Samplerilla sekä joukolla muita transformereita.

5. Mittakaavan ja pohjoisnuolen luonti

Pohjoisnuolen luominen oli suhteellisen helppoa. Loin ensin kolmiogeometrian Creatorilla, jota duplikoin, siirsin x-suunnassa Offsetterillä ja käänsin Scalerilla. Seuraavaksi määrittelin kuvaustyylit PDFStylereilla ja lisäsin N-tekstin pohjoisnuolen alapuolelle. Tässä lopputulos:

FMEllä tehty pohjoisnuoli.

FMEllä tehty pohjoisnuoli.

Mittakaavan tekeminen ei ollut ihan niin helppoa, koska mittakaavan pitää olla kuitenkin kartan mittakaavassa. Loin ensin aineistosta rajaavan suorakaiteen BoundingBoxAccumulatorilla, pilkoin sen Tilerilla 1000 m levyisiksi ja 25 m korkeiksi tiiliksi, valtisin tiilistä vasemman alakulman ja tiilitin vasemman alakulman uudelleen 100 m levyisiksi tiiliksi. Nämä 100 m leveät tiilet muokkasin PDFStylereilla niin, että joka toinen niistä sai täyttövärikseen valkoisen ja joka toinen mustan. Lisäsin myös metrimäärät teksteinä mittakaavan alapuolelle:

FMEllä luotu kartan mittakaava.

FMEllä luotu kartan mittakaava.

Näiden vaiheiden jälkeen työtila näyttää tältä:

Työtila PDF-kartan luomiseen.

Työtila PDF-kartan luomiseen.

Tulos-PDF on tässä:

FMEllä luotu PDF-kartta.

FMEllä luotu PDF-kartta.

Ladattava PDF (lataa koneelle ja avaa Adobe Readerissa):

Keilaniemi-PDF

Työtilasta voisi luoda ajastetun prosessin, joka käynnistyisi esim. kerran kuukaudessa ja voisi kirjoittaa PDF-karttoja useistakin eri alueista kerralla.

FME 2013 SP1 julkaistu, tukee Maastotietokanta-GML:ää

Kuten viime kirjoituksessa kerroin, FME 2013 SP1 tukee Maanmittauslaitoksen Maastotietokanta-GML-formaatin sisäänlukua. FME 2013 SP1:n voi ladata täältä: http://www.safe.com/support/support-resources/fme-downloads/

FME 2013 SP1:een on tullut paljon muitakin hyödyllisiä ominaisuuksia, kuten Testerin ja TestFilterin upottaminen transformereihin:

Lue lisää FME 2013 SP1:stä: http://www.safe.com/highlight/fme2013/sp1/

Maastotietokanta-GML:n luku FMEllä

FME 2013 SP1 tukee Maastotietokannan GML-muotoa. SP1 tulee saataville maaliskuussa. Aineistoa voi lukea FMEllä, ja viedä esimerkiksi ArcSDEhen, Oracleen, PostGIS:iin, tai tallentaa tiedostomuotoihin, kuten Shape, DGN, DWG, MIF/MID, TAB, jne.

Testasin Maastotietokanta-GML:n lukua FMEllä, ja hyvin näyttää toimivan. Käyttäjän tarvitsee valita Readerin formaatiksi NLSF Topographic GML (MTKGML) ja xml-tiedosto Dataset-kohtaan:

Maastotietokanta-GML:n luku

Maastotietokanta-GML:n luku

Aineisto näyttää seuraavalta FME Data Inspectorissa:

Maastotietokanta-GML FME Data Inspectorissa.

Maastotietokanta-GML FME Data Inspectorissa.

Seuraavaksi käyttäjä voi määritellä aineiston kirjoituksen haluamaansa formaattiin Add Writerin kautta. Seuraavassa on esimerkkimuunnos MIF/MID:iin:

Maastotietokanta-GML MIF/MID:iksi.

Maastotietokanta-GML MIF/MID:iksi.

Kirjoitus luonnollisesti vaatii kuvaustyylien asetukset, joita en jaksanut tuossa esimerkissä vääntää. Helpotusta toisi se, jos Maastotietokanta-GML:ään löytyisi SLD-kuvaustyylidokumentit, joita voisi hyödyntää kuvaustyylien viennissä eri formaatteihin, kuten MapInfo MIF/MID:iin, DGN:ään, DWG:hen ja KML:ään. En löytänyt, enkä tiedä julkaiseeko MML niitä. Toivottavasti. Joka tapauksessa käyttäjälle Maastotietokanta-GML:n luku on tehty mahdollisimman helpoksi. Kannattaa siis seurata, milloin FME 2013 SP1 julkaistaan, ja ladata se, jotta pääsee hyödyntämään Maastotietokanta-GML-aineistoja.

Helsingin kaupungin rakennushankkeiden visualisointi

Tein aikani kuluksi visualisoinnin FME-softalla Helsingin kaupungin rakennushankkeista (http://www.hri.fi/fi/data/helsingin-kaupungin-rakennushankkeet/). Käytin aineistoina seuraavia:

Alkuun yhdistin tiedot rakennushankkeista rakennusrekisterin otteen rakennusgeometrioihin käyttäen lähimmän naapurin sääntöä. Muokkasin yhdistämisen tuloksena tulleet geometriat 3D:ksi venyttäen ne hankkeen kustannusarviolla. Värit ovat toimialojen mukaan. Lisäksi laitoin pohjalle Maanmittauslaitoksen taustakarttarasterin.

FME Workbenchissä tehty työtila rakennushankkeiden visualisointiin

FME Workbenchissä tehty työtila rakennushankkeiden visualisointiin

Lopputuloksena on PDF-tiedosto:

Tulos-PDF.

Tulos-PDF.

Tulos-PDF, Bockin talo valittuna.

Tulos-PDF, Bockin talo valittuna.

Jos haluat PDF-tiedoston itsellesi, voit laittaa alas kommenttia.