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.

Mainokset