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

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.

3D-mallin tekoa Maanmittauslaitoksen aineistoista

Kun Maanmittauslaitos avasi digitaaliset maastotietoaineistonsa, olin heti ensimmäisten joukossa lataamassa niitä Maanmittauslaitoksen tiedostopalvelusta: https://tiedostopalvelu.maanmittauslaitos.fi/tp/kartta. Palvelusta voi ladata tietomäärältään suurempia aineistoja karttalehdittäin ja pienempiä aineistoja kerralla koko Suomen laajudelta. Kannattaa tutustua, jos et ole vielä sivustolla käynyt. Muitakin tapoja hankkia aineistoja on. Niitä on saatavilla torrentteina: http://paikkatieto.com/2012/05/05/maanmittauslaitoksen-aineistot-torrent-palvelusta/ sekä niitä voi tilata Maanmittauslaitokselta.

Avoimien aineistojen joukossa on erittäin mielenkiintoinen aineisto laserkeilausaineisto. Latasin yhden testipalan Otaniemi-Tapiola-Keilaniemi -alueelta. Lisäksi latasin samalta alueelta ortokuvat sekä maastotietokannan karttalehtiä. Näillähän voi tehdä jo vaikka mitä hauskaa. Jotta testailuissa pääsee alkuun, kannattaa aloittaa maastotietokannan karttalehtien viemisellä kantaan esimerkiksi PostgreSQL/PostGIS:iin. Seuraavassa näet esimerkin maastotietokannan kohdemallin kohderyhmäkentän yhdistämisestä kullekin kohteelle kohdeluokkakoodin perusteella ja kirjoittamisesta PostgreSQL/PostGIS:iin.

Maastotietokannan kohteet PostGISiin

Maastotietokannan kohdemallin kohderyhmän yhdistäminen kullekin maastotietokannan kohteelle ja kirjoitus PostgreSQL/PostGIS:iin.

Kirjoituksen jälkeen FME:llä voi tarkastella visuaalisesti kohdeluokkia. Tässä on valittu rakennukset tarkastelun kohteeksi.

Rakennukset PostgreSQL/PostGIS:issä visualisoituna FME:ssä.

Rakennukset PostgreSQL/PostGIS:issä visualisoituna FME:ssä.

Kaiken tämän datan käsittelyn ja latauksen jälkeen mietin, miten saisin rakennuksille korkeudet. Laserkeilausaineistosta tietenkin! Tein FME:llä seuraavan testin, jossa luon kullekin rakennukselle korkeustiedon laserkeilausaineistosta. Lisäksi luon laserkeilausaineistosta maastomallin, ”liimaan” maastomalliin ortokuvan sekä korkeuden mukaan venytetyt rakennukset ja kirjoitan 3D PDF:ksi.

Aineistot 3D-malliksi 3D PDF:ään.

Aineistot 3D-malliksi 3D PDF:ään.

Pidemmittä puheitta seuraavassa on lopputulos.

3D-malli

3D-malli Otaniemi-Tapiola-Keilaniemi -alueesta.

Aineistojen käsittely 3D-malliksi oli mukavaa puuhaa sen jälkeen, kun ymmärsin käyttää Maastotietokannan kohdemalli-Excel:iä kohderyhmien selvittämiseksi ja kun aineisto oli PostgreSQL/PostGIS:issä. Jos kiinnostusta samanlaisen 3D-mallin tekemiseen riittää, autan mielelläni hommassa!

Smallworld:istä 3D PDF:ään

Kirjoitin tästä jo toisaalla englannin kielellä, mutta laitetaanpa suomeksikin viestiä aiheesta. Kirjoituksen aiheena on siis datan muuntaminen Smallworld-tietokannasta 3D PDF:ään. Smallworld paikkatietojärjestelmä, joka käyttää Smallworld-tietokantaa. Smallworld on Suomessa mm. Maanmittauslaitoksen JAKO-sovelluksen pohjana.

Visualisointia tarvitaan suunnitteluun ja päätöksentekoon, ja 3D PDF on erittäin kätevä visualisoinnin formaatti. Formaatin lukemiseen tarvitaan perus-Adobe ja tietenkin 3D PDF -tiedosto. 3D PDF -tiedoston luontiin tarvitaan jotain aineistoa esimerkiksi tietokannasta, ja muunnosohjelma. Käytin tietokantana Smallworld:iä ja muunnosohjelmana FME:tä.

  • Loin Smallworld:issä sähköverkkoa, metsiä ja rakennuksia, jotka kaikki olivat kaksiulotteisia.
  • Liimasin kohteet korkeusmallin päälle.
  • Muunsin luomani kohteet FME:llä kolmiulotteisiksi kohteiden korkeuksien mukaisesti.
  • Liimasin kuvan korkeusmallin päälle.

Haasteet

Päähaaste oli muuntaa 2D-dataa kolmiulotteiseksi. FME:ssä on muutama kätevä työkalu siihen: Extruder ja SurfaceDraper.

Extruder venyttää 2D-kohteet kolmiulotteiseksi tietyn korkeuden mukaisesti (voi olla esim. kaavan rakennusten korkeustieto).

SurfaceDraper asettaa 2D-kohteet korkeusmallin päälle. Käytä ensin SurfaceDraper:ia first ja sitten Extruder:ia.

Toinen suuri haaste oli luoda sähkölinjoista roikkuvia. Se onnistui myös. Tuloksen näet alla olevasta kuvasta.

Tässä on kuva lopputuloksesta:

Toinen kuva lopputuloksesta:

Smallworld:istä 3D PDF:ään FME:llä