Lentokeilausdatan käsittely ja analysointi metsän inventoinnissa.
|
|
- Pauliina Haavisto
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Lentokeilausdatan käsittely ja analysointi metsän inventoinnissa. Antti Ruotsalainen Opinnäytetyö Toukokuu 2016 Tekniikan ja liikenteen ala Insinööri (AMK), Ohjelmistotekniikan tutkinto-ohjelma
2 Kuvailulehti Tekijä(t) Ruotsalainen, Antti Julkaisun laji Opinnäytetyö, AMK Sivumäärä 39 Työn nimi Lentokeilausdatan käsittely ja analysointi metsän inventoinnissa Päivämäärä Julkaisun kieli Suomi Verkkojulkaisulupa myönnetty: x Tutkinto-ohjelma Ohjelmistotekniikan Koulutusohjelma Työn ohjaaja(t) Hannu Luostarinen ja Raija Hämäläinen Toimeksiantaja(t) Maaseutu 2.0, Petteri Weckström Tiivistelmä Tekniikka on tuonut metsänelinkeinon avuksi lentokeilauksen. Vaikka lentokeilaus on hyödyllinen kartoitustyökalu, sen tuottama datamäärä on liian suuri säilöttäväksi helposti. Opinnäytetyössä kehitettiin ohjelma, joka kykenee tiivistämään lentokeilauksen datan helpommin käsiteltävään ja säilöttävään muotoon. Näin pystytään jatkokehityksen myötä tiivistämään ulos työmäärä- ja kustannusarvioita. Projektin pohjana toimi aiemmissa opinnäytetöissä luotu ja eteenpäin kehitetty pythonsovellus, joka on nyt käännetty C#-kielelle. Ohjelmaan on tehty graafinen käyttöliittymä ja LAS-datan muuntaminen CLM-tiedostoksi. Ohjelmaan myös kirjoitettu uusi tapa määritellä metsäalueiden kehitysluokkia ja kiireellisyyksiä. Ohjelmaan lisättiin myös avoimen lähdekoodin avulla python-esiversiosta tuttu karttalehtien piirto graafiseen muotoon. Karttalehtiä voidaan tarkastella joko ohjelman sisällä tai kirjoittaa ulos kuvatiedostomuotoon. Piirtämisessä hyödynnettiin avoimen lähdekoodin Oxyplotrajapintaa. Lentokeilausdatan mahdollisuudet metsävaraintojen hyödyntämisessä ovat suuret. Datan hyödyntäminen vaatii kuitenkin paremmat resurssit ja erityisesti yksityiskohtaista tietotaitoa metsän hoidosta ja kasvatuksesta. Projektin tavoitteet jäivät valitettavasti vajaavaisiksi, sillä siitä jäi puuttumaan useita suunniteltuja osia. Ohjelma ei kykene lukemaan LAS-tiedostotyypiä eikä siinä ole prototyyppiä työmäärä ja kustannusarvioiden laskemisesta. Ohjelman päätavoite, LAS-txt datan muuttamiseen CLM-tiedostoksi, onnistui ongelmitta. Projektin yhteydessä myös kehitettiin uusia menetelmiä kasvuluokan ja kiireellisyyden analysointiin pistepilvidatasta. Avainsanat (asiasanat) CLM, LAS, LAZ, Lentokeilaus, Oxyplot, C#, Metsän kehitysluokat Muut tiedot
3 Description Author(s) Ruotsalainen, Antti Type of publication Bachelor s thesis Number of pages 39 Title of publication Airborne laser scanning data using in forest industry. Date Language of publication: Finnish Permission for web publication: x Degree programme Software Engineering Supervisor(s) Hannu Luostarinen ja Raija Hämäläinen Assigned by Maaseutu 2.0, Petteri Weckström Technology has introduced airborne laser scanning for the forest industry. Even though airborne laser scanning is a useful tool, the data it produces is too extensive to store easily. The goal of the project was to create a program that can compress data from airborne laser scanning so that it can be stored and still be used for workload and cost estimates of the project. The program also needed a user interface. The project is based on a python application that has been improved in the previous theses on the subject, and it has been under continuous development since. The goal of the project was to translate the program into C# language and create a graphic user interface as well as to make it possible to compress LAS data to CLM datatype. During the development process the program was also equipped with new ways to calculate growth and urgency classifications, and it also has a feature to draw the calculated areas to a visual map on the screen or to a file in the same way as in the python pre-version. The visualization of data was made possible with the use of the open-source library Oxyplot. Airborne laser scanning is a useful tool for forest industry, however, the analysis of the data needs more resources and specific expertise about forestry. Unfortunately, the project ran out of time and not all of the planned parts were implemented. The application does not have a reader for the original LAS-datatype and it cannot do calculations for workload or projections for cost estimates. The main goal, compression of LAS-txt data to the CLM-datatype was achieved. Also, new ways to calculate growth and urgency classifications from point cloud data were experimented. Keywords/tags (subjects) CLM, LAS, LAZ, airborne laser scanning, C#, Forest Growth Categorizing Miscellaneous
4 1 Sisältö Lyhenteet ja termit 1 Työn Lähtökohdat Projektiin liittyvät organisaatiot Maanmittauslaitoksen keilaukset Suomen Metsäkeskus SMK Metsäntutkimuslaitos METLA Luonnonvarakeskus LUKE Metsaan.fi Tietoperusta projektin kehitykselle Suomen metsävarannot Metsien kehitysluokat Tietoformaatit Karttalehdet, LAS ja LAZ-data CLM-tietotyyppi DTM, DEM & DSM OxyPlot piirtokirjasto Python version teoria Kyyt-algoritmi Aalto-algoritmi BackgroundWorker Käytännön toteutus Johdanto MainWindow Päänäkymä PartialAreaHandler- luokka ja sen aliluokat LAS-tiedoston lukeminen ja käsittely PartialAreaHandlerilla
5 LAS-tiedoston ja DTM-maanpintamallin käsittely PartialAreaHandlerilla Kehitysluokat ja kiireellisyyden määrittäminen MapHandlingWindow ja MaplotWindow Luetun LAS-datan muuttamien CLM-tiedostoksi Karttojen piirtäminen Pohdinta Käyttöliittymän mahdollinen jatkokehitys Muistinvaraus GrowthClass-luokka Oxyplotin ongelmat Tarkkuus Muistinhallinnan kokeilut LAS-datan lukeminen Työmääräarviot ja tulevaisuus Lähteet... 40
6 3 Kuviot Kuvio 1. T1 Metsä ennen ja jälkeen hoidon Kuvio 2. T1 metsä hoidon jälkeen Kuvio 3. T2 metsä, kiireellinen Kuvio 4. DSM ja DTM ero (Wikipedia DTM ja DSM ) Kuvio 5. Aktiivisuuskaavio ohjelman kulusta ja käyttötarkoituksista Kuvio 6. Ohjelman kulkulogiikka Kuvio 7. MainWindow-näkymä ajon aikana Kuvio 8. Luokkapiirros LAS-txt ja DTM-datan käsittelevästä PartialareaHandlerluokasta Kuvio 9. PartialAreaHandler Päämetodi Kuvio 10. Sekvenssidiagrammi LAS-txt lukemisesta Kuvio 11. Sekvenssidiagrammi LAS ja DTM tiedon käsittelystä Kuvio 12. DTM-indeksin laskutapa Kuvio 13. Teoreettinen T1 kasvuluokan pistehajonta Kuvio 14. Teoreettinen T2 Kasvuluokka Kuvio 15. Teoreettinen huono T2 kasvuluokka Kuvio 16. MapHandlingWindow hallintaikkuna Kuvio 17. MapHandlingWindow ja sen aliluokat Kuvio 18. CLM tiedoston kirjoitus Kuvio 19. Esimerkkikuva 1000 * 1000 metriä käsitellystä alueesta Kuvio 20. LinQ-lauseke pisteiden noutamiseen kokoelmalistasta Kuvio 21. MVVM-malli Kuvio 22. Growthclass-luokan muistinvaraus ennen Kuvio 23. muistinvaraus Growthclass-luokan poistamisen jälkeen jälkeen Kuvio 24. GrowthClass luokan objektimäärävertailu Kuvio 25. Growthclass luokan muistinvarausvertailu Kuvio 26. Datan nouto SQLite tietokannasta ja DTM -tiedostosta
7 4 Taulukot Taulukko 1. Metsän kasvu- ja kiireellisyysluokat Taulukko 2. Puuston kehitysluokat Taulukko 3. CLM-luokan otsikkotiedot Taulukko 4. Teoreettinen esimerkkipistejakauma Aalto -algoritmin taulukossa
8 5 Lyhenteet ja termit Avoin Standardi Binääritiedosto Double-muutuja Implementointi LAS-data Lentokeilaus Metsätalous Nuget-paketinhallinta Pistepilvidata Ratkaisuarkisto String-muutuja Säikeistämisen Txt-tiedosto Responsiivinen Avoimesti saatavilla oleva määrittely, esimerkiksi vakiojärjestys jossa tieto on tallenettu. Tiedostomuoto, jossa data on esitettynä binäärimuodossa. Muutuja johon voidaan säilöä numeroarvoja. Luoda suunniteltu ominaisuus. Avoimen standardin datamuoto, joka on pakattuna binäärimuotoon. Lentokeilauksen tulokset on tallennettuna LAS-data muotoon. Lentokoneella suoritettava maaston kartoitusmenetelmä. Metsänhoitoon ja kasvatukseen painottuva elinkeinotoiminta. Vapaan lähdekoodin paketinhallintaohjelma Visual Studiokehitysympäristölle. Helpottaa kolmannen osapuolten pakettien etsimisen ja asentamisen. Lentokeilauksen tuottama data on pistepilvidataa, eli se kuvastaa mittauspisteitä 3-ulotteisessa tilassa. Visual studio -ohjelmistoympäristön tietorakenne mihin voidaan koota useampia projekteja joilla voi olla riippuvuuksia tai muita yhteyksiä toisiinsa. Muuttuja johon voidaan säilöä tekstiä. Säikeistäminen mahdollistaa useamman ohjelmakoodin ajamisen yhtäaikaa. Esimerkiksi säikeistämisellä voidaan ajaa koodia taustalla pitäen samalla käyttöliittymä responsiivisena. tiedosto, joka sisältää vain tekstiä. Kykenee ottamaan käskyjä vastaan.
9 6 1 Työn Lähtökohdat Metsien lentokeilaus on uuden ajan työkalu, joka mahdollistaa suomen metsävarantojen kartoittamisen aiempaa tehokkaammin. Lentokeilauksen tuottaman datan esittämiseen on kehitetty useampikin työkaluja, mutta ohjelmistolle, joka pystyisi analysoimalla ja tiivistämään lentokeilauksen tuottaman LAS-datan tiivimpään muotoon, löytyy kysyntää. Tämän opinnäytetyön tarkoituksena oli luoda työkalu jolla kyetään lukemaan, analysoimaan ja kääntämään LAS-dataa helpommin käsiteltävään muotoon. Projektin metsäasiantuntijana toimi Kalevi Pietikäinen Marjatta ja Eino Kollin säätiön apurahalla. Projektin päätoimeksiantajana toimi Maaseutu 2.0. Maaseutu 2.0 ohjelma pyrkii uudistamaan metsänhoitotyötä. Metsien ajantasaiseen kartoitukseen tarvittavat työkalut ovat olleet olemassa jo vuosikausia, mutta keskittäminen yhtenäiseksi kokonaisuudeksi on jäänyt toteuttamatta. Maaseutu 2.0 tarkoitus on siirtää omaisuuden hallinta digiaikaan (Yrittävä maaseutu ). Tarkoituksena on avoimen standardin ja järjestelmäriippumattomuuden avulla helpottaa tiedon, työtarjousten ja työvoiman liikkumista maa- ja metsätalousaloilla. 2 Projektiin liittyvät organisaatiot Suomen maapinta-alasta 86 % on metsää. Näin ollen ei ole yllätys että maassamme on useita metsänhoitoon ja asiantuntijapalveluihin erikoistuneita organisaatiota. Nämä organisaatiot ovat enimmäkseen valtiohallinnon alaisia organisaatiota. 2.1 Maanmittauslaitoksen keilaukset Suomessa Maanmittauslaitos suorittaa muiden tehtäviensä ohessa myös maastokeilausta, ja organisaatiolla on Suomen Metsäkeskuksen kanssa Suomi loppuun -keilaussuunnitelma. Keilaussuunitelman tarkoitus on saada katettua koko
10 7 Suomen maasto ja luoda tarkka valtakunnallinen 2 metrin korkeusmalli (Maanmittauslaitoksen laserkeilausaineisto. N.d.). Laserkeilausaineistoja hyödynnetään myös korkeuskäyrien luomisessa, kaavoituksessa ja metsien inventoinneissa sekä muissa luonnonympäristön muutosta seuraavissa tutkimuksissa ja seurannoissa. (Maanmittauslaitoksen laserkeilausaineisto. N.d.). Maanmittauslaitoksen suoritti vuonna 2014 laserkeilausta neliökilometrin alueelta (Maanmittauslaitoksen vuositilastoja. 2014). Maanmittauslaitoksen mittaukset ovat avointa aineistoa. 2.2 Suomen Metsäkeskus SMK Suomen Metsäkeskus on Maa- ja Metsätalousministeriön alainen organisaatio, joka pyrkii edistämään suomalaisten metsänomistajien asemaa neuvomalla, valvomalla lainsäädännön noudattamista sekä keräämällä tietoa. Suomen Metsäkeskus suorittaa metsien kartoitusta laserkeilauksen lisäksi myös käyttämällä ilmakuvausta, koealamittausta ja maastoinventointia (Suomen Metsäkeskus. N.d) 2.3 Metsäntutkimuslaitos METLA Metsätutkimuslaitos on Maa- ja Metsätalousministeriön tulosohjauksen alainen organisaatio, joka pyrkii kehittämään metsään liittyviä palveluja, tuotteita sekä metsänhoitoratkaisuja. METLA pyrkii keräämään ja tuottamaan tietoa metsä- ja puutaloudesta tieteellisellä tutkimuksella ja asiantuntijatyöllä. Metla on perustanut erillisiä tutkimusmetsiä jo 1920-luvulta, ja organisaatiolta löytyy tietoa jo 1800-luvulla suoritetuista kokeista. Tutkimusmetsäverkkon laajuus on noin hehtaaria maa- ja vesialueita. (Metla. N.d) 2.4 Luonnonvarakeskus LUKE Luonnonvarakeskus on Maa- ja Elintarviketalouden Tutkimuskeskuksen (MTT), Metsätutkimuslaitoksen (Metla), Riista-ja Kalatalouden Tutkimuslaitoksen (RKTL) sekä Maa- ja Metsätalousministeriön Tietopalvelukeskuksen Tilastointipalveluiden (Tike) yhdistymisessä vuonna 2015 muodostettu organisaatio. Luonnonvarakeskuksen lakisääteisiin viranomaistehtäviin kuuluu taimituotannon
11 8 varmentaminen, luonnonvarojen seuranta,geenivarojen säilytys sekä kasvihuonekaasujen laskenta (Luke N.d.) 2.5 Metsaan.fi Metsaan.fi on metsänhoitoon erikoistunut ilmainen palvelu, jonka tarkoitus on yhdistää metsänomistajat, metsäalan palveluntarjoajat ja Suomen Metsäkeskus. (Metsaan. N.d.) 3 Tietoperusta projektin kehitykselle. 3.1 Suomen metsävarannot Suomen metsätalous elää ja voi hyvin. Maapinta-alasta noin 86 prosenttia on metsää (26.2 miljoonaa hehtaaria), josta 20.3 miljoonaa on puuntuotannon käytössä. Kokonaistilavuus puustolle 2.4 miljardia joka lisääntyy kasvun myötä miljoonaa kuutiometriä. Yksityisten metsätilojen omistajuus jakantuu usein useammalle henkilölle, joten yksityisiä vähintään yhden hehtaariin kokoisia alueita löytyi vuoden 2013 lopussa , joiden omistajina toimii henkilöä. (Metsänomistajat Haapavesi-Kärsämäki ja Siikalakeus-lehti ) 3.2 Metsien kehitysluokat Kehitysluokka kuvaa puuston metsänhoidollista ja puuntuotannollista kehitysvaihetta tietyllä hetkellä monimuotoisuudesta tai muista arvoista riippumatta. (Suomen Metsäurheiluliitto. N.d) Metsän kehitysluokilla pyritään erottelemaan kasvistot kasvu- ja metsähoitotarpeen perusteella. Näin metsänhoito saadaan ajoitettua tehokkaammin ja yksilöllisemmin alueittain. T1 vaiheessa kyseessä on taimikkometsä, johon osoitetaan enemmän harvennus ja perkaus tyyppisiä töitä. T1 taimikkometsä on vanhastaan rajattu 1,3 metrin korkeuteen koska se on helppo ollut katsoa noin vyötärönkorkeudelta.
12 9 T2 vaiheessa on kyseessä varttunut taimikko, jolle pitää osoittaa harvennushakkuita. Alarajana toimii 1,3 metriä ja ylärajana kuusella alle 7 metriä ja koivulle alle 9 metriä. Keskiläpimitta rinnankorkeudella alle 8 senttimetriä. (Puuston kehitysluokat. N.d) 02 vaiheessa kyseessä on nuori kasvatusmetsikkö. pituus on väliltä 6-12 metriä ja keskiläpimitta rinnankorkeudelta noin 8-16 senttimetriä. Kehitysluokille löytyy enemmänkin määritelmiä mutta tämän projektin kannalta nämä kolme ovat oleellisimpia. Taulukossa 1 on eritelty puuston kiireellisyysluokat vaiheittain. Kasvuluokat vaihtuvat 5-numeron välein eli 15, 20, 25 ja 30 ovat pohja-arvoja. Näistä arvoista alkaa 4- asteinen kiireysmäärittely. Kiireysmäärittelyn on tarkoitus kertoa tarvitseeko alue välitöntä hoitoa ja jos ei, niin millä aikavälillä se tulisi hoitaa. Harvennus ja hoitotarve pyritään määrittämään 3-7 vuoden tarkkuudella. Taulukko 1. Metsän kasvu- ja kiireellisyysluokat. 14 A0 aukea 15 T1 - uudistamis- /täydennystarve 16 T1 - harvennustarve 6-10v 17 T1 - harvennustarve 1-5 v 18 T1 - perkaustarve KIIREELLINEN 19 T1 - perkaustarve HETI (myöhässä) 20 T2 - uudistamis-/täydennystarve 21 T2 - harvennustarve 7-10 v 22 T2 - harvennustarve 3-6 v 23 T2 - hoitotarve KIIREELLINEN (1-2 v) 24 T2 - hoitotarve HETI (myöhässä) ei hoitotarvetta hoitotarve 7-10 v hoitotarve 3-6 v hoitotarve KIIREELLINEN (1-2 v) hoitotarve HETI (myöhässä) 30 muu metsä (varttunut kasvatusmetsä)
13 10 Pelkästään kehitysluokista puhuttaessa voidaan metsä luokitella vastaavasti taulukon 2 kuvaamalla tavalla. Taulukko 2. Puuston kehitysluokat Uudistusala ja taimikko A0 S0,T1,T2,Y1,05 Nuori kasvatusmetsä 02 Varttunut kasvatusmetsä 03 Uudistuskypsä metsä 05 Uudistusala ja taimikko on vielä pelkästään kuluerä metsänkasvattajalle. Täten näitten metsien hoitotarpeiden kartoitus on erityisen tärkeä, jotta metsänomistaja kykenee maksimoimaan hyödyn metsäpalstasta hyvällä hoidolla. Siksi tässäkin työssä keskitytään näitten kasvuluokkien analysointiin. Vaikka metsä olisi vasta taimivaiheessa se tarvitsee silti järjestelmällistä harvennusta. (ks. kuvio 1) Kuvio 1. T1 Metsä ennen ja jälkeen hoidon. Nuorta taimikkoa tulee harventaa tasaisesti että puuston kasvu saadaan maksimoitua (ks. kuvio 2). On hyvä ottaa huomioon selkeä järjestelmällisyys ja kaiken kasvamista haittaavan poisto.
14 11 Kuvio 2. T1 metsä hoidon jälkeen Metsän hoitamatta jättäminen haittaa metsän kasvua huomattavasti (ks. kuvio 3). Tämä metsä määriteltäisiin jo erittäin kiireelliseksi koska se täysin umpeenkasvanut. Kuvio 3. T2 metsä, kiireellinen
15 Tietoformaatit Karttalehdet, LAS ja LAZ-data LAS-data on American Society for Photogrammatery and Remote Sensingorganisaation (ASPRS) kehittämä avoimen lähdekoodin binääritiedostomuoto. LASdataa käytetään tallentamaan lentokeilausaineiston tuottamaa 3-ulotteista pistepilvidataa (Digital Preservation ). Pistepilvidatasta voidaan piirtää kolmiuloitteinen malli alueesta, jossa lentokeilaus on suoritettu. LAZ-datamuoto on LAS-dataan pakattu tiedostomuoto, jolla saadaan häviöttömästi tiivistettyä lentokeilausdata helpommin säilöttävään muotoon. Pakkaukseen sopivia työkaluja on kehittänyt muunmuassa rapidlasso GmbH, jonka LASzip ohjelmisto on myös avointa lähdekoodia. LASzip on osa LAStools ohjelmistopakettia. (LASZip documentation. N.d). Projektin kehitystyössä käytettiin Maanmittauslaitokselta saatua lentokeilausaineistoa, joka oli muutettu las2txt-ohjelmistolla txt-muotoon. Txt- muotoiset karttalehdet ovat keilausmittaustuloksia jotka on otettu noin 6000*6000 metrin alueelta. Lentokoneella tehtäessä tämänkokoiselle alueelle osuu noin 31 miljoonaa osumaa (keskimäärin 0,8 / neliömetri). Tiedoston kooksi tulee muutoksen jälkeen noin 2 gigatavua. LAS-dataa käsitellään kolmessa muodossa. 1. Luokittelematon LAS-data (alla) johon ei ole laskettu mitään tietoja. 2. LAS data johon on laskettu kasvuston korkeus delta-z, joka korvaa korkeustiedon z luokittelemattomassa LAS tiedostossa. 3. LAS datan mukana toimitetaan DTM tiedosto joka sisältää maastonkorkeudet. Tämän avulla voidaan tarkentaa korkeuslaskelmia kun Z-datasta lasketaan kasvuston korkeutta. Tämä vastaa DTM:ää joka esitellään luvussa Mittauspisteiden data on karttalehdillä alla olevassa muodossa (Ensimmäinen datarivi karttalehdeltä N4234A) Tämän projektin kannalta tarpeellisia arvoja on vain kolme ensimmäistä: 1. Pisteen X koordinaatti. 2. Pisteen Y koordinaatti.
16 13 3. Pisteen Z koordinaatti (Etäisyys mittauspisteestä maassa). Tämän opinnäytetyön lopputuloksena kehitettävän ohjelman on tarkoitus laskea ja muuntaa tämänkokoinen ja muotoinen tiedosto CLM-tietomuotoon. Tiedoston koko putoaa noin 1,70 megatavuun, jolloin koko suomen tämänhetkiset karttalehdet saataisiin mahtumaan yhdelle muistitikulle CLM-tietotyyppi CLM -luokka on projektin yhteydessä kehitetty tietorakenne johon ohjelma tallentaa syötetyn alueen kasvuluokat. ncols 5999 nrows 5999 xllcorner yllcorner cellsize 8 NODATA_value CLM:än tarkoitus on saada puristettua karttalehden data mahdollisimman pieneen tilaan. Tämä saadaan aikaiseksi jakamalla alueen pisteet 8*8 metriä kokoisiin ruutuihin ja laskemalla näille ruuduille kehitys- ja kiireellisyysluokka. Taulukko 3. CLM-luokan otsikkotiedot. Ncols Nrows Xllcorner yllcorner Cellsize NODATA_value rivimäärä sarakemäärän X-piste alueen lounaiskulmassa y-piste alueen lounaiskulmassa Ruudun koko Tällä arvolla merkitystä ohjelmasta ei ole dataa. X- ja Y pisteen jälkeen olevat kirjaimet kertovat minkä kulman kordinaatteja ne kuvaavat. ll tarkoitttaa lower-left joten kyseessä on kuvatun alueen lounaiskulma. Tämän kulman avulla sekä ruudun koon ja rivi sekä sarakemäärän avulla voidaan alueen pisteille antaa oikeat sijainnit.
17 14 Näitten arvojen jälkeen alkaa numerosarja jonka jokainen arvot kuvaavat kehitysluokkaa ja kiireellisyyttä (esitelty kappaleessa ) CLM mahdollistaa 2 gigatavua vievän tiedoston puristamisen noin 1,7 megatavuun. CLM- numeroarvoista voidaan laskea saantoja eli hyötypuun määriä alueelta sekä tehdä työmääräarvioita. Tämä vaatii kuitenkin lisätietoa siitä kuinka paljon keskimäärin menee tietyssä kiireellisyysvaiheessa olevan alueen siistimiseen. CLMtiedosto voidaan myös lukea ArcGIS- ja QGIS-ohjelmilla kartan piirtämistä varten DTM, DEM & DSM DTM (Digital Terrain Model), DEM (Digital Elevation Model) sekä DSM (Digital Surface Model) ovat erityyppisiä maanpintamalleja. Digital Surface Model pyrkii mallintamaan kaikki havaitut korkeuspinnat (esim. talojen katot.) ja DTM mallintaa vain maatason (Digital terrain model. N.d.) (ks. kuvio 4.). LAS datan avuksi voidaan projektin luomassa ohjelmassa lisätä DTM tiedosto jolloin maastopisteet on varmemmin löydettävissä. Kuvio 4. DSM ja DTM ero (Wikipedia DTM ja DSM )
18 OxyPlot piirtokirjasto. Oxyplot on avoimen lähdekoodin kirjasto, jolla voidaan piirtää kaavakuvia eri alustoilla. Oxyplot valittiin hyvän dokumentaation sekä useiden tuettujen alustojen takia. Tuettuja alustoja on muunmuassa GTK#, Windows Phone, Android, WPF, Silverlight (Oxyplot. N.d.). Oxyplotin lisenssityppi, MIT, mahdollistaa hyödyntämisen myös suljetun lähdekoodin ohjelmistoissa (Oxyplot license. N.d.). 3.4 Python version teoria. Taisto Kuikan ja Kalevi pietikäisen alkuperäisversiossa käytettiin kahta eri laskukaavaa kun pyrittiin löytämään kasvu- ja kiirreellisyysluokitus karttaan jaetulle ruudukolle Kyyt-algoritmi Kun karttalehden pisteet oli jaettu halutun kokoisiin alueisiin käytettiin kyytalgoritmia laskemaan niille kasvuluokka ja kiireellisyys. Algoritmi käy läpi laserpisteet ja antaa jokaiselle kehitysluokan. Algoritmi seuraa myös kuinka moni osuma osuu peräkkäin samaan kehitysluokkaan. Eniten laserpisteitä saanut kehitysluokka määrittää ruudun kehitysluokan ja peräkkäisten osumien summa antoi ruudulle kiireellisyyden Aalto-algoritmi Aalto-algoritmi oli toinen kokeellinen menetelmä laserpisteiden analysoitiin. Algoritmi ajettiin samalla lailla kuin kyyt-algoritmissa, eli vasta sen jälkeen kun karttalehti oli ruudutettu ja pisteet jaettu ruutuihin. Ruudun pisteet käytiin läpi yksi kerrallaan ja katsottiin mihin kasvuluokkaan piste kuului. Riippuen kasvuluokasta pisteen pituus sai arvon jolla pisteen korkeusarvo jaetaan. Tulokset kerättiin taulukkoon, josta kaikkien pisteiden läpikäynnin jälkeen katsottiin eniten pisteitä saanut ruutu määritti kehitysluokan ja kiireyden. Esim Pisteen korkeus on 0,4 metriä, joten se kuuluu T1 kasvuluokkaan. Jaetaan T1 kertoimella 0.1, tulos 4. Piste T1 rivin sarakkeeseen 4.
19 16 Allaoleva ruudukko täytetään tällaisella laskukaavalla saaduilla pisteillä kunnes karttaruudun sisällä olevat pisteet on käyty läpi. Taulukko 4. Teoreettinen esimerkkipistejakauma Aalto -algoritmin taulukossa. maa T T Koska kyseessä on pisteyden jakautumisella toimiva algoritmi, ruutukoon pitää olla vähintään 8*8 m jotta alueen pistemäärä on vähintään 50 paikkeilla. Vähemmällä pistemäärällä tarkkuus kärsii huomattavasti. Ruutukoon kasvaessa ruudun arviointitarkkuus paranee, mutta ruutukoon kasvaessa ruudut ovat liian suuria rajatakseen vaihtuvat metsätyypit ja maastonmuodot. 3.5 BackgroundWorker BackgroundWorker-luokka on.net ominaisuus mikä mahdollistaa ohjelmakoodin säikeistämisen niin, että laskutoimitukset voidaan suorittaa taustalla ja käyttöliittymä pysyy responsiivisena (.Net Dokumentaatio. BackgroundWorker, N.d.) 4 Käytännön toteutus 4.1 Johdanto Kehitystyön pohjana toimi python-ohjelmistokielelle kehitetty ohjelma, jonka ovat kehittäneet Taisto Kuikka ja Kalevi Pietikäinen. Ohjelmaa luki sisäänsä LAS-dataa txtmuodossa, ja datasta laskettiin KYYT- tai Aalto-algoritmeilla karttalehden kuvaamalle alueelle kasvu- ja kiireellisyysluokka. Ohjelmaa säädettiin yksinkertaisella kytkinmenetelmällä vaihtamalla boolean-muuttujia True tai False asentoon. Ohjelma ongelmana oli että sisälsi myös paljon kovakoodattuja muuttujia eikä sillä ollut käyttöliittymän. Ohjelmalla kyettiin kuitenkin piirtämään hyviä karttakuvia Matplotlib-
20 17 kirjaston avulla ja ne saatiin esitettyä graafisesti näytöllä sekä tallennettua kuvatiedostoksi. Uuden projektin tavoitteeksi muodostui: LAS-txt datan tiivistäminen algoritmilla CLM-tietomuotoon. Mahdollisuus DTM-txt datan lisäämisestä LAS-txt datan käsittelyyn. Yksinkertaisen käyttöliittymän kehittäminen. Python-versiossa mukana ollut kartan piirtomahdollisuus LAS-txt ja CLM datasta. Ohjelmaa harkittiin alkuun alustariippumattomaksi mutta teknisten vaikeuksien ja ajankäytön säästämiseksi päätettiin tehdä WPF-pohjainen windows -sovellus. Lopputulokseksi muotoitui ohjelma,joka vaatii pyöriäkseen tietokoneen jossa on vähintään 64-bittinen Windows käyttöjärjestelmä ja vähintään 4 gigatavua keskusmuistia. Karttapiirron toteuttamiseen valittiin kevyen tutkimustyön jälkeen Oxyplot-kirjasto. Valintaan vaikutti selkeä ja hyvin saatavilla oleva dokumentaatio, avoimen lähdekoodin MIT-lisenssi sekä jatkokehityksessä mahdollisesti hyödynnettävä useiden alustojen tuki. Käyttöliittymä on jaettu kolmeen osaan käyttötarkoituksen mukaan. Mainwindow eli päänäkymä suorittaa tiedostolatauksen ja laskutoimitukset, MapHandlingView eli karttapiirtonäkymä hallitsee mitä ladatulle tiedostolle tehdään, MapPlotWindow piirtää halutun alueen kuvatiedostoon tai esittää sen näytöllä. LAS-txt:n avuksi voidaan syöttää DTM-dataa sisältävän txt tiedoston, joten sisäänlataus ja kiireellisyysluokat täytyy käsitellä kahdella eri tavalla riippuen oliko DTM-data vai ei. CLM-tiedosto voidaan suoraviivaisesti lukea sisään ja siirtyä seuraavaan vaiheeseen (ks. kuvio 5)
21 18 Kuvio 5. Aktiivisuuskaavio ohjelman kulusta ja käyttötarkoituksista. Ohjelmalla on yhtenäinen kulkujärjestys ja logiikka, päänäkymä suorittaa datan sisäänluvun ja laskutoimitukset, kartankäsittelynäkymässä käyttäjä voi päättää mitä datalle tehdään (ks. kuvio 6).
22 19 Kuvio 6. Ohjelman kulkulogiikka. Sisäänluettavan datan tyypin tai tyyppien perusteella ohjelma ottaa käyttöön datalle sopivan käsittelijän (PartialAreaHandler, CLMHandler), joka vuorostaan alustaa tekstinlukijan ja kutsuu tarvittavaa tekstinlukumetodia. Tekstinlukija lukee ja parsii tekstin ja alustaa näillä arvoilla käsittelijän hallussa olevan kokoelmaluokan. Kokoelmaluokkaan on kerätty tekstin päädata ja kokoelman sisältävään listaan on järjestelty yksilöitävä data (Laserpisteiden osumat ja CLM tiedot ruuduille jaettuna). Riippumatta mitä dataa on ladattu, päänäkymä siirtää ladatun kokoelman karttahallintanäkymälle, jossa käyttäjä tekee päätöksen mitä ladatulle datalle tehdään. 4.2 MainWindow Päänäkymä Päänäkymän tarkoitus on ottaa vastaan tiedostot joita halutaan tarkastella tai käsitellä ohjelmalla. LAS- ja DTM-tiedostoa käytettäessä voidaan säätää haluttu ruutukoko jolle alueen pisteet jaetaan areasize-valikolla (ks. kuvio 7).
23 20 Kuvio 7. MainWindow-näkymä ajon aikana. Varsinaisen ajon alkaessa tiedostojen sisältö tarkastetaan että kyseessä on LAS-, DTM- tai vaihtoehtoisesti CLM-tiedosto. Tämän jälkeen tiedostojen sijainnit annetaan backgroundworker-luokalle, joka suorittaa laskutoimitukset erillisessä säikeessä samalla päivittäen tilannetietoja päänäkymään PartialAreaHandler- luokka ja sen aliluokat. PartialAreaHandler-luokka suorittaa suurimman osan ohjelman toiminnallisuuksista. Luokan päätehtävä on hoitaa LAS-txt ja DTM-txt datan käsittelyn. Kokoelmaluokka PartialAreaCollection sisältää listan PartialArea olioita. Nämä oliot kuvastavat ruutuja joihin sisäänluettava LAS-data jaetaan, ja ne on luotu jakamalla alueen koko jaettuna käynnistyksen yhteydessä käyttäjän antamalla arvolla (ks. kuvio 8).
24 21 Kuvio 8. Luokkapiirros LAS-txt ja DTM-datan käsittelevästä PartialareaHandlerluokasta Oletusarvona käytetään 8*8m ruutuja. Tämä koko on aiemmissa laskutoimituksissa (python kehitys) todettu sisältävän tarpeeksi dataa jotta kasvuluokka ja kiireellisyys kyetään määrittämään mutta ei liian suuri että kasvuluokka tai metsätyyppi pääsisi muuttumaan alueen sisällä eikä maastossa pääse tapahtumaan suuria muutoksia. PartialArea:n calculategrowthclasslist-metodit suorittaa laskutoimitukset millä määritetään alueen saama kasvuluokka ja kiireellisyys. DTMCollection on kokoelmaluokka mahdollisesti käytettävälle DTM-datalle. DTMdatan sisältämiä maapistetietoja käyteään selvittämään LAS-datan pisteistä alueen kasvuston korkeutta. Tärkein huomioitava ohjelman toiminnassa on että jokainen ruudukko arvoidaan itsenäisenä alueena. Vierekkäisiä alueita ei vertailla keskenään vaan jokainen ruutu saa arvonsa vaan ruudun sisäisten pisteiden perustella. Ohjelman eri työvaiheet on jaettu PartialAreaHandler-luokan muihin metodeihin. Päämetodi kutsuu vuoronperään eri työvaiheeseen tarvittavaa metodia (ks. kuvio 9).
25 22 Kuvio 9. PartialAreaHandler Päämetodi Päämetodi paloittelu alametodeihin helpottaa muutoksien hallintaa ja erillaisia kokeiluja LAS-tiedoston lukeminen ja käsittely PartialAreaHandlerilla. Suunnitelma LAS tiedoston käsittelylle oli seuraava: 1. LAS data luetaan läpi ja etsitään pienin X- ja Y-koordinaatti sekä suurin X- ja Y- koordinaatti. 2. Pienimpien ja suurimpien kordinaattien avulla luodaan ruudukkomallinnus jossa ruudun pituus ja leveys on ohjelman alussa annettu arvo. 3. LAS data luetaan rivi kerralaan, etsitään pisteelle paikka ruudukosta ja asetetaan korkeustieto ruudukkoon. Kun tiedosto on valittu ohjelma luo erillisen backgroundworker-säikeen. Säikeen käyttö mahdollistaa käyttöliittymän säilyttämisen responsiivisena silloin kuin ohjelma työstää pidempiä laskutoimituksia (ks. kuvio 10.).
26 23 Kuvio 10. Sekvenssidiagrammi LAS-txt lukemisesta Backgroundworker alustaa kappaleessa esitellyn PartialAreaHandler-luokan joka hoitaa LAS-txt datan käsittelyn. PartialAreaHandler alustaa tekstinlukijaluokan ja suorittaa: Pienimpien ja suurimpien X ja Y arvojen etsimisen Ruutulistan luomisen pienimpien ja suurimpien arvojen perusteella. Mittauspisteiden jaon ruutuihin. Ruutujen sisäisen datan analysoinnin ja kasvuluokan sekä kiirreellisyyden määrittämisen jokaiselle ruudulle. Kun työ on suoritettu, taustasäie palauttaa arvot pääikkunalle joka lähettää arvot eteenpäin seuraavaksi kartanhallintaikkunalle. Jokaiselle LAS-txt tiedoston riville lasketaan oikea indeksi, joka kertoo mihinkä ruutuun ruutulistassa kyseinen laserpiste kuuluu. Tämän mahdollistaa listan luomiseen käytetyn logiikan säännöllisyys. Menetelmä poistaa tarpeen käydä ruutulistaa läpi jokaisen laserpisteen kohdalla jolloin rivien lisäämiseen kuluva aika nousisi huomattavasti. Varmuuden vuoksi vielä ennen pisteen lisäämistä ruutuun tarkistetaan että pisteen X- ja Y-kordinaatit ovat ruudun minimi ja maksimiarvojen sisällä.
27 4.2.3 LAS-tiedoston ja DTM-maanpintamallin käsittely PartialAreaHandlerilla. 24 Käytettäessä DTM-dataa joudutaan työskentelyjärjestystä hieman muuttamaan jotta tarvittavat laskutoimitukset saadaan suoritettua LAS- ja DTM-dataa käyttäen. Erityisesti datan muistiinlataus johti ongelmiin jolloin ohjelmiston käyttövaatimuksia päädyttiin nostamaan. DTM-tiedostoa tiedostoa käytettäessä käytetään samoja luokkia kuin pelkän LAS-datan latauksessa, joskin käyttöön otetaan uusia metodeja ja LAS-lataus suoritetaan eri metodilla (ks. kuvio 11.) Kuvio 11. Sekvenssidiagrammi LAS ja DTM tiedon käsittelystä DTM-tiedosto luetaan kuin sisään samaan tyyliin kuin CLM-tiedosto, mutta jokaiselle pisteelle ei tehdä omaa oliota joka säilyttäisi koordinaatitiedot pisteelle. Tämä tehtiin koska jokaisen pisteen koordinaatin lisääminen lisäisi muistinvarausmäärää kolminkertaiseksi ja DTM-pisteiden parittaminen LAS mittauspisteiden kanssa voidaan muutenkin määritellä lyhyellä laskutoimituksella (ks. kuvio 12.).
28 25 Kuvio 12. DTM-indeksin laskutapa Koska DTM-tiedoston lukujärjestys tiedetään, voidaan alueen maksimitietoja vertaamalla kulloisenkin laserpisteen tietoihin laskea mikä arvo DTM-listasta tulee laskea Laserpisteen kanssa. Tämän jälkeen laserpisteen Z-arvosta vähennetään DTMarvo ja lisätään se ruutulistan oikean ruudun calculatedvegetationheightlist-listaan. Huomioitavaa on että pelkkää LAS-dataa käytettäessä käyteään eri listaa siltä varalta, että kaikille laserpisteille ei löytyisikään tarvittavaa maapistetietoa. Maapisteettömät pisteet käsitellään erikseen samalla menetelmällä kuin käsitellessä LAS-dataa ilman DTM-tietoja eli maapisteeksi valitaan alin piste LAS-datan joukosta ja sitä verrataan muihin pisteisiin Kehitysluokat ja kiireellisyyden määrittäminen. Kun kaikki LAS-data ja mahdollinen DTM-data maapistetietoineen on ladattu muistiin, alue ruudutettu halutun kokoisiin ruutuihin sekä laserpisteet jaettu ruutuihin, pitää selvittää ruuduille kehitysluokat ja kiireellisyys ruuduille (kehitysluokkien teoria on käyty luvussa ) Kun käytössä on lentokoneella tehty lentokeilaus ja ruudun kokona käytetään oletusarvoa 8*8 metriä, jokaiselle ruudulle osuu noin 50 laserpistettä. Nämä laserpisteet kuvastavat kasvuston korkeutta kyseisessä pisteesä, ja näiden pisteiden perusteella olisi kyettävä mallintamaan kehitysluokka ja hoidon kiireellisyyden tarve. Koska pisteitä on rajallinen määrä ja niitten osumisesta alueen kasvustoon ei ole mitään varmuutta on tehtävä tiettyjä oletuksia. Pelkästään LAS-txt dataa käytettäessä maapisteeksi määritetään jokaisen ruudun alin piste z-koordinaatti, jolla lasketaan muille ruudun pisteille delta-z, eli kasvupituus. Tämmöinen yhdistelmä jättää paljon mahdollisuuksia huonon arvion tekemiseen.
29 Määrä Määrä 26 Ensimmäisessä raakaversiossa pisteet jaettiin kasvuluokkiin ja katsottiin mikä luokka saa eniten pisteitä. Jos luokan pistemäärä on yli 50 % ruudun pisteistä se luokiteltiin kiireelliseksi. Tämän tyyppinen arviointi jätti täysin huomiotta rajatapaukset joissa ruudun sisällä olevan kasvuston kasvu on rajavaiheessa kasvuluokkien välillä. T1 kasvuluokassa metsän kasvu on niin aikaisessa vaiheessa että laserpisteiden muodostama käytä on selkeästi laskeva (ks. kuvio 13.) 20 Teoreettinen kuvaaja T1 kasvuluokassa kasvusta ,2 0,4 0,6 0,8 1 1,2 1,4 1,6 1,8 Pituus metreinä Kuvio 13. Teoreettinen T1 kasvuluokan pistehajonta. Tämä esimerkkitapaus ei ole vielä hirveästi lähellä 1.6 metrin rajapyykkiä joten harvennuksella ei vielä ole kiire. 25 Hyvä T2 Kasvu Pituus metreinä Kuvio 14. Teoreettinen T2 Kasvuluokka.
30 Määrä 27 T2 osumat näyttävät hyvin tasaisesti jakaantuneilta. T1 vaiheen jälkeen kasvun optimitapauksissa kuvastaa terävää aaltoa. 0,3m korkeudella olevat osumat voidaan olettaa olevan maapisteosumia jolloin alueen on selvästi hoidettua Huonosta hoidosta kertova osumien jakaantuminen T2-kasvuluokassa Pituus metreinä Kuvio 15. Teoreettinen huono T2 kasvuluokka. Ylläolevasta kuvasta nähdään kuinka mittauspisteet ovat pakkaantuneet T2 kasvuluokan yläpäähän ja osumien määrän jakaantuminen on liian tasaista. Tämä viittaa umpeen kasvamiseen,ja erityisesti maapisteiden olemattomuus viittaa huonoon hoitoon. Oletetaan että: 1. Metsän ollessa lähellä senhetkisen kasvuluokan ylärajaa sen tulisi olla harvennettu. 2. Useat maapisteet ruudun sisällä viittaavat että alue on hoidettu. 3. Jos ruudun pisteistä 50% on pääkasvuluokassa alue on liian tiheään kasvanut. Ensimmäiselle vaatimukselle annettiin suurempi painoarvo, ja se nostaa kiireellisyyttä 2 astetta. Kun LAS-pisteet on jaoteltu ruutuihin, PartialAreaHandler ajaa jokaisen ruudun calculategrowthclasslist-metodin läpi.
31 28 Ensin kasvupisteet jaetaan kehitysluokkiin ruudun pääkehitysluokan selvittämiseksi. Pääkehitysluokan arvo tulee pohja-arvoksi muille laskutoimituksille (kasvuluokkien teoria ja pohja-arvot on esitelty kappaleessa 3.2). Kasvupisteistä valikoidaan kaikki pisteet jotka ovat alle 0.3 metriä korkeita. Tälle alueelle voidaan olettaa osuvan pelkästään maapisteitä. Jos maapisteiden määrä kaikista pisteistä on alle 30 % kasvaa kasvuluokan kiireellisyys yhden. Seuraavaksi verrataan pääkasvuluokan pisteiden määrää kaikkien ruudun pisteiden määrään. Jos ruudun pisteistä 50 % on pääkasvuluokassa, nousee kiireellisyys jälleen yhdellä. Viimeisenä tarkistetaan kuinka suuri osa pisteistä on pääkasvuluokaksi valitun luokan yläpäässä,eli paljon pisteitä on % pääkasvuluokan maksimiarvon molemmin puolin. Tässäkin vaaditaan yli puolet pisteistä. Esimerkkinä: jos pääkasvuluokaksi on valikoitunut nuori taimikko T1, on pohja-arvo 15. Alueen pisteistä yli 30 % on maapisteitä (+0) mutta pisteistä yli 50 % on pääkasvuluokasssa (+1). Pääkasvuluokan yläraja on 1.6 metriä jolloin tarkistetaan kuinka paljon pisteitä on alueella, jolloin nähdään että pisteistä yli 50 % on tällä alueella (+2). Lopullinen arvo ruudulle on siis = 18 eli T1 - perkaustarve KIIREELLINEN. Tämä alue tulisi käsitellä mahdollisimman pian. Lisäpohdintaa ja kehitysideoita kasvuluokan ja kiireellisyyden määrittelystä löytyy kappaleesta MapHandlingWindow ja MaplotWindow MapHandlingWindow-hallintaikkunassa käyttäjän on mahdollista esittää laskettu alue näytöllä, piirtää se SVG-tiedostoksi tai luoda lasketuista arvoista CLM-tiedosto myöhempää käyttöä varten. Yläreunassa olevat kordinaattiruudut mahdollistavat alueen rajaamisen, oikeassa reunassa olevat säätöruudut ovat Oxyplot-kirjastolle annettavia arvoja (ks. kuvio 13.).
32 29 Kuvio 16. MapHandlingWindow hallintaikkuna Koska ohjelmassa ei ole luotuna automaattista skaalausta, on käyttäjälle annettu mahdollisuus määrittää kartan ruutuja kuvaavan merkin koko, kuvan reunassa olevien kordinaatti-akselin askelväli sekä piirrettäessä kuvatiedostoon halutun kuvan koko. MapHandlinWindow-näkymä hallinnoi MapPlotWindow-näkymää joka alustetaan MapModel-luokalla joka sisältää Oxyplot-kirjaston Plotmodel-luokan (ks. kuvio 14.). Kuvio 17. MapHandlingWindow ja sen aliluokat
33 Luetun LAS-datan muuttamien CLM-tiedostoksi. Mainwindow-hallintapaneelin suoritettua kaikki tarpeelliset laskutoimitukset ja siirrettyä arvot MaphandlingWindow-näkymälle ei lisämuutoksia tarvita. PartialAreaCollection lähetetään sellaisenaan MyTextWriter-luokalle joka suorittaa writeclm-metodin (ks. kuvio 15.). Kuvio 18. CLM tiedoston kirjoitus. Metodi luo uuden tekstitiedoston, joka saa nimensä alkuperäisen LAS-tiedoston pohjalta. Tiedostoon kirjataan CLM-tyyliin pohjatiedot alueesta jolta data on otettu, ja sen jälkeen ruvetaan rivi kerrallaan täyttämään tiedostoa lasketulla kasvu- ja kiireellisyysluokitus datalla.
34 Karttojen piirtäminen Ohjelmaan haluttiin lisätä karttakuvien esittäminen ja piirto, niinkuin pohjana toimineessa python-sovelluksessa. Tähän käyttöön löytyi kätevä Oxyplot-kirjasto. Oxyplot mahdollistaa WPF-ohjelman sisäisen karttapiirron (ks. kuvio 16) sekä piirtämisen SVG-vektorikuvatiedostoon. Kuvio 19. Esimerkkikuva 1000 * 1000 metriä käsitellystä alueesta. Riippumatta sitä onko kyseessä tiedostoksi tallentaminen vai kartan esittäminen ohjelman sisällä, toimintaperiaate on sama. Käyttäjä rajaa halutessaan alueen joka piirretään MapHandlingDialog-ikkunassa. Rajauksen parametrit tarkastetaan että ne ovat maksimissaan karttalehden alueella ja syötetään SharedMethods-luokan getspesifiarea()-metodiin. Metodi suorittaa LinQ-lausekkeen (ks. kuvio 17.) jolla se hakee kokoelmaluokasta kaikki rajatun alueen sisällä olevat pisteet.
35 32 Kuvio 20. LinQ-lauseke pisteiden noutamiseen kokoelmalistasta. MaplotWindow luo MapModel-luokan joka vuorostaan alustaa Oxyplotin vaatiman PlotModel-luokan. Oxyplotilla on omat objektit joita alustamalla ja lisäämällä Plotmodel-luokkaan saadaan muokattua näytettävää kaaviota. Koska projektissa tarvittiin esittää yksittäisiä pisteitä päädyttiin käyttämään ScatterSeries-merkkipistekokoelmaa. Koska kaikki mittapisteet jotka lisätään samaan merkkipistekokoelmaan saavat saman merkkausvärin jouduttaan luomaan yhtä monta merkkipistekokoelmaa kuin on kasvu- ja kiireellisyysluokkia jotta jokainen saataisiin värikoodattua oikein. 5 Pohdinta Projekti kärsi aikatauluongelmista johtuen huonoista ratkaisuista kehitysvaiheessa. Erityisesti muistinhallintaongelmiin käytetty aika olisi voitu hyödyntää paremmin jos oltaisiin samantien nostettu ohjelman käyttövaatimuksia sen sijaan että olisi yritetty erillaisia kiertotieratkaisuja. Projekti saavutti kuitenkin vähimmäistavoitteet: Käyttöliittymä saatiin kehitettyä. Kasvu- ja kiirrellisyysluokkien laskemiseen saatiin testattua uusia metodeja. LAS data saatiin tiivistettua CLM muotoon. Karttapiirto saatii toteutettua. Projektissa on kuitenkin jatkokehityspotenttiaalia, ja tässä kappaleessa on tarkoitus selittää ongelmat mihin törmättiin sekä mitenkä ne voidaan poistaa jatkossa.
36 Käyttöliittymän mahdollinen jatkokehitys Käyttöliittymä ei varsinaisesti ole oikeaoppisen Model-View-View-Model-mallin (ks. kuvio 21.) mukainen. Kuvio 21. MVVM-malli MVVM:än tarkoitus on erottaa käyttöliittymä varsinaisesta suorittavasta koodista, eli käyttöliittymän puolella ei olisi minkäälaista koodia vaan se lähettäisi käskyn taustakoodille, jossa kaikki suoritukset tehtäisiin (MVVM-artikkeli. N.d.) Vaikka näkymille tehtiin alkeellinen viewmodel-luokka joka säilyttää arvot ja arvot päivittyvät molemminsuuntaisesti näkymiltä viewmodel -luokille ja takaisin, jäi ratkaisu silti vajaavaiseksi. Käyttöliittymällä on vielä erikseen nappien painalluksia vastaanottavat koodiosat sekä siellä jonkinverran datatarkistuksia. Näitten osien siirtoa model-luokkaan harkittiin mutta se olisi joko vaatinut monimutkaisen patenttiratkaisun käyttämistä tai kolmannen osapuolen kirjaston käyttöä. Koska ongelma itsessään ei ollut projektin tärkeysjärjestyksessä korkealla kumpikin ratkaisu jätettiin toteuttamatta. 5.2 Muistinvaraus Muistinvaraus osoittautui yhdeksi suurimmista ongelmista projektin aikana. Johtuen LAS- ja DTM-datan muistiinlatausratkaisusta ohjelman piti pystyä lataamaan kerralla iso ja yhtenäinen osa keskusmuistia käyttöön, mikä osoittautui 32-bittisten järjestelmien kohdalla mahdottomaksi johtuen arkkitehtuuriratkaisuista. Samanlaisiin ongelmiin törmäsi samaan aiheeseen liityvässä opinnäytetyössään Hannu Siren. Hän ratkaisi paloittelemalla datan useampaan osaan, toisin kuin tässä työssä tyydyttiin nostamaan laitevaatimuksia ohjelman ajamiseen (Siren ).
37 GrowthClass-luokka. GrowthClass-luokan tarkoitus oli pitää tiedossa mittauspisteiden jakaantuminen kasvuluokkiin jokaisen karttaruudun sisällä. Koska luokka sisälsi string-muuttujan, 4 kappaletta double-muuttujia ja listan kaikista ruudun sisälle tulevista mittauspisteistä doublena sen aiheuttama muistinvaraus kasvoi naurettaviin mittasuhteisiin sen tarpeellisuuteen nähden (ks. kuvio 19. ja 20.). Kuvio 22. Growthclass-luokan muistinvaraus ennen Kuvio 23. muistinvaraus Growthclass-luokan poistamisen jälkeen jälkeen Ruutulistan luominen aiheuttaa piikin, koska GrowthClass-luokkia oli 4 kappaletta jokaisessa ruudussa. Tämä lisäsi objektien määrää tuntuvasti (ks. kuvio 21.).
38 bytes Objektien määrä Min X ja Min Y Ruutulistan LAS-lataus DTM Kasvuluokkien muistiinlataust lasku a Ennen Jälkeen Kuvio 24. GrowthClass luokan objektimäärävertailu Kun kasvuluokkia ruvettiin laskemaan, GrowthClass-luokan monistaminen aiheutti muistinvarauspiikin ajon lopussa (ks. kuvio 22.) Muistinvaraus Min X ja Min Y Ruutulista LAS-lataus DTM muistiinlata us Kasvuluokki en lasku Ennen Jälkeen Ennen Jälkeen Kuvio 25. Growthclass luokan muistinvarausvertailu
39 Oxyplotin ongelmat. Oxyplotin käyttö varsinkin isompien alueiden piirtämisessä vaatii paljon keskusmuistia. Keskumuistiin käyttöön vaikuttavat muunmuassa kuvan ruudutuksen määrä, reuna-akselien väliviivojen määrä, onko merkkikuvaaja täytetty (ympyrä, neliö, kolmio tai timantti) vai ei (plus-merkki, risti, tähti). Näistä syistä alunperin merkkinä käytety ympyrä vaihdettiin neliöksi. Keskusmuistin varaus nousi pelkästään piirrossa 960 megatavuun, ja poistamalla ruudutus putosi muistinkulutus 619 megatavuun. Vaikka Oxyplot on hyvä avoimen lähdekoodin kirjastoksi, siitä löytyi yllättäviä puutteita. Kirjaston asentaminen Nuget-pakentinhallinan kautta ja toimintaan saattaminen yhteistyössä WPF-alustan kanssa aiheutti liian paljon hukkaan heitettyä aikaa, mikä taas kostautui ajan loppumisena loppukehityksestä. Myöskään manuaalin lupaama PNG-kuvatiedostoon piirtäminen ei saatu toimimaan. 5.3 Tarkkuus Lasermittaus ei anna täsmällisiä osumapisteitä maastosta. Täten ei ole mitään takeita siitä että pisteet ovat osuneet tasaisesti puustoon, joten kaikki laskelmat kehitysluokista ja kiireellisyydestä ovat arvioita. Erityisesti kuusipuiden muoto lisää osumispinta-alaa mutta jättää realistisen korkeuden arvailun varaan. Metsä ei jätä vapaata tilaa käyttämättä, joten myöskään maahan osuminen ei ole varmaa. Tämä tekee maapisteen valinnasta epävarmaa, jos DTMmaastopintamallitiedostoa ei ole käytössä. Tarkemman datan saamiseksi maastoon voidaan viedä GPS-asema. GPS asemaa säilytetään useampi maastossa vähintään 30 minuuttia, mutta yleensä jopa puoli päivää, että se kerkeää ottaa yhteyden mahdollisimman moneen satelliittiin. Näin asema kerkeää ottaa yhteyden useampaan satelliittiin ja laskea tarkan sijaintinsa. Tämän datan yhdistäminen keilausmittauksen dataan saadaan tarkempia mittaustuloksia. Lentokeilauksen mittauspisteen tallentaminen on monivaihenen. Lentokone tallentaa gps-sijaintinsa, lähettää lasersignaalin, tarkistaa sijainnin uudelleen signaalin palattua,
40 Aika 37 ja laskee tarkan gps-sijainnin näiden kahden tuloksen erotuksesta. Virhe missä tahansa toimenpiteessä vaikuttaa mittauspisteiden tarkkuuteen. Jos DTM tiedostoa ei ole, vierekkäisten ruutujen maapisteitä voitaisiin vertailla keskenään maapisteen varmistamiseksi. Vastaavasti tällöin maaston mäkisyys voisi sekoittaa laskelmat. Koska maasto ruudutetaan viivasuorasti ja vain sen sisältöä käytetään Kasvuluokan ja kiireellisyyden määrittämiseen pelkillä keskiarvoilla pelaaminen aiheuttaa väistämättä virhearvioita. Tätä voitaisiin vähentää vertaamalla vierekkäisiä ruutuja tai vain 1-2 metrin ruudun ulkopuolelle jääviä mittauspisteitä ruudun tuloksiin. Näin paljon suurempaa vertailua käyttäen voitaisiin parantaa ruutujen luokituksen laatua. Tämä tosin vaatisi paljon hienovaraisempaa laskemista ja vertailua pisteiden välillä. 5.4 Muistinhallinnan kokeilut. Koska 32-bittinen käyttöjärjestelmä ei antanut tarpeeksi tilaa muistinvaraukselle, projektin aikana testattiin datan säilyttämistä tietokannassa laskelmien aikana. Koska ongelmana oli erityisesti DTM-data, testattiin myös tapaa hakea jokaiselle laserpisteelle tarvittava DTM-luku vasta laskuvaiheessa. Ongelmaksi nousi liian pitkät luku- ja kirjoitusajat (ks. kuvio 23.). Vaihtoehtoisia tapoja datan säilyttämiseen 06:28,8 05:45,6 05:02,4 04:19,2 03:36,0 02:52,8 02:09,6 01:26,4 00:43,2 00:00, kappaletta hakuja SQL lite DTM tiedostosta luku Kuvio 26. Datan nouto SQLite tietokannasta ja DTM -tiedostosta.
41 Muistiin ladattuna saman tuhannen laskutoimituksen käsittely onnistui alle yhdessä millisekunnissa LAS-datan lukeminen. Valitettavasti projektin kehitystyössä loppui aika kesken, joten joitakin ominaisuuksia jäi implementoimatta. Suurimmaksi puutteksi jäi alkuperäisen LAS-datan suora käyttö. Tätä ongelmaa yritettiin saada ratkaistuksi käyttämällä kolmannen osapuolen kirjastoja, kuten vapaan lähdekoodin LASlib ja LibLas kirjastoja. Liblas on ASPRS kehittämä C++ pohjainen kirjasto jota käytetään muunmuassa OSGeo4W ohjelmistopaketissa. Kirjaston käytössä törmättiin DLL-tiedostojen toimimattomuusongelmiin, ja kun kirjastoa pyrittiin kääntämään avoimesta koodista C++ käännösvirheiden määrä kasvoi liian suureksi selvitettäväksi (Liblas ). Laslib on rabidlasso GmBH:n LAStools ohjelmistopaketin pohjalla toimiva C++ kirjasto. Kirjaston kääntämisessä törmättiin samanlaisiin ongelmiin kuten liblas kirjastossa, joten tämänkään implementointi ei onnistunut. (Lastools. N.d) Järkevin ratkaisu olisi ollut kirjoittaa kokonaan oma lukurajapinta kuten Hannu Siren teki omassa opinnäytetyössään (Siren ). Näin säästytään turhilta riippuvuuksilta kolmannen osapuolen virityksiin. Jos taas haluttaisiin hyödyntää jompaa kumpaa aiemmin mainituista kirjastoista ja C++-projektit saadaan kääntymään, implementointi C#-ohjelmaan onnituisi lisäämällä C++-projekti C#-projektin sisältävään ratkaisuarkistoon ja rakentamalla väliin Cli-Wrapper-projekti jota kautta C# pystyisi hyödyntämään C++ ohjelman luokkia ja metodeja (CLI esimerkki ) 5.6 Työmääräarviot ja tulevaisuus. Ohjelman alkuperäiseen suunnitelmaan oli kirjattu mahdollisuus laskea työmääräarvioita lasketusta kasvu- ja kiireellisyysluokkadatasta. Tämä ominaisuus jäi ajanpuutteen johdosta suunnitteluasteelle, mutta ominaisuuden toimintaperiaate selvitettiin.
42 39 Halutulta rajatulta alueelta poimitaan kaikki kasvu- ja kiireellisyysluokkien arvot. Yksinkertaistamisen vuoksi nämä alueet voidaan laskea luokittain yhteen, jotta saadaan jokaisen luokan määrä hehtaareissa. Aiempaa metsänhoitotyökokemusta hyödyntäen voidaan jokainen luokka pisteyttää, kuinka paljon kukin alue tarvitsee työtunteja per 100 neliömetriä/1000 neliömetriä/mikä tahansa haluttu mittasuhde. Näillä arvoilla pystytään helposti laskemaan kuinka paljon työtä menee rajatun alueen hoitamiseen. Tällainen tehokas arviointi on pääsyy LAS-datan tiivistämiseen CLM-muotoon.
43 40 Lähteet CLI esimerkki Using C++ in C# by Example by Dorodnic. Viitattu Digital Preservation LAS 1.4 esittely. Viitattu Digital terrain model. N.d. wikipedia artikkeli. viitattu Lastools. N.d. LAStools esittelysivusto. LASZip documentation. N.d. LASzip esittelydokumentaatio. Viitattu Liblas Wikipedia Vapaa tietosanakirja. Viitattu Luke. N.d. Luonnonvarakeskuksen esittelysivu. Viitattu MVVM-malli Wikipedia Vapaa tietosanakirja. Viitattu MVVM-artikkeli. N.d. Wikipedia vapaa tietosanakirja. Viitattu Maanmittauslaitoksen laserkeilausaineisto. N.d. Laserkeilausaineiston esittelysivut. Viitattu Maanmittauslaitoksen vuositilastoja dokumentin sivu 15. Viitattu Metsänomistajat Haapavesi-Kärsämäki ja Siikalakeus-lehti, 2016, sivu 26. Viitattu Metsäkeskus. N.d. Metsäkeskuksen esittelysivut. viitattu Metsaan. N.d. Metsaan.fi palvelun esittely. Viitattu Metla. N.d. Tutkimusmetsät. Viitattu Microsoft, N.d,.Net Dokumentaatio. BackgroundWorker, viitattu Oxyplot. N.d. Oxyplot kotisivut. Viitattu
Taimikoiden ja nuorien metsien hoito- ja energiapuukohteiden inventointi kopterikuvauksena ja lentokonekeilauksena
Taimikoiden ja nuorien metsien hoito- ja energiapuukohteiden inventointi kopterikuvauksena ja lentokonekeilauksena Puu- ja bioenergiamessut Jyväskylä 6.9.2017 Kalevi Pietikäinen Tätä tutkimusta on tukenut
Metsien kaukokartoitus ja lentokonekeilaus Osio 2
Metsien kaukokartoitus ja lentokonekeilaus Osio 2 Energiapuun tehokas käsittely ja kuivuminen Osio 1 Taimikoiden hoito ja nuorien metsien energiapuuvarojen hyödyntäminen Metsä työllistäjänä sekä energiapuun
Metsien inventointi lennokki- ja lentokonekeilauksena Osio 1
Metsien inventointi lennokki- ja lentokonekeilauksena Osio 1 Metsien kaukokartoitus ja lentokonekeilaus Taimikoiden hoito ja nuorien metsien energiapuuvarojen hyödyntäminen Metsä työllistäjänä sekä energiapuun
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
Collector for ArcGIS. Ohje /
Collector for ArcGIS Ohje / 10.5.2019 2 (11) Sisältö 1. Collector for ArcGIS... 3 2. Kartan luominen ArcGIS Onlinessa... 3 2.1 Karttatason luominen... 3 2.2 Ominaisuustietotaulun kenttien määrittäminen...
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka
GDAL ja WFS: suora muunnos ogr2ogr-ohjelmalla
GDAL ja WFS: suora muunnos ogr2ogr-ohjelmalla Viimeksi muokattu 30. tammikuuta 2012 GDAL tukee WFS-palvelun käyttämistä vektoritietolähteenä yhtenä muiden joukossa. WFS-ajurin käyttöohjeet löytyvät osoitteesta
Julkaisun laji Opinnäytetyö. Sivumäärä 43
OPINNÄYTETYÖN KUVAILULEHTI Tekijä(t) SUKUNIMI, Etunimi ISOVIITA, Ilari LEHTONEN, Joni PELTOKANGAS, Johanna Työn nimi Julkaisun laji Opinnäytetyö Sivumäärä 43 Luottamuksellisuus ( ) saakka Päivämäärä 12.08.2010
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
Sisältö. 22. Taulukot. Yleistä. Yleistä
Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä
Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen
Nspire CAS - koulutus Ohjelmiston käytön alkeet 3.12.2014 Pekka Vienonen Ohjelman käynnistys ja käyttöympäristö Käynnistyksen yhteydessä Tervetuloa-ikkunassa on mahdollisuus valita suoraan uudessa asiakirjassa
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen
MARV Metsikkökoealaharjoitus Aluepohjaiset laserpiirteet puustotunnusten selittäjinä. Ruuduille lasketut puustotunnukset:
MARV1-11 Metsikkökoealaharjoitus Aluepohjaiset laserpiirteet puustotunnusten selittäjinä Metsikkökoealojen puuston mittaukseen käytetty menetelmä, jossa puut etsitään laseraineistosta/ilmakuvilta ja mitataan
15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
Testidatan generointi
Testidatan generointi Anu Ahonen Kevät 2008 Tämä työ on tehty Creative Commons -lisenssin alla Työn tarkasti 9.4.2008 Jouni Huotari (JAMK/IT) 1 SISÄLTÖ 1 TYÖN LÄHTÖKOHDAT JA TOTEUTUS...2 2 TESTIDATAN GENEROINTI
KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA
KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA Ohjeistuksessa käydään läpi kuvan koon ja kuvan kankaan koon muuntaminen esimerkin avulla. Ohjeistus on laadittu auttamaan kuvien muokkaamista kuvakommunikaatiota
Ilmaisia ohjelmia laserkeilausaineistojen käsittelyyn. Laserkeilaus- ja korkeusmalliseminaari 8.10.2010 Jakob Ventin, Aalto-yliopisto
Ilmaisia ohjelmia laserkeilausaineistojen käsittelyyn Laserkeilaus- ja korkeusmalliseminaari 8.10.2010, Aalto-yliopisto Johdanto Aalto-yliopiston maanmittausosastolla tehdyn kesätyön tuloksia Tehtävä oli
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat
Visma Business AddOn Factoring-laskuaineisto. Käyttäjän käsikirja
Visma Business AddOn Factoring-laskuaineisto Käyttäjän käsikirja Oppaan päiväys: 09.06.2011 Asiakaspalvelu: Helpdesk: www.visma.fi Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin
Sisältö. 2. Taulukot. Yleistä. Yleistä
Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä
Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.
2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä
CTRL+F Android-sovellus
CTRL+F Android-sovellus Vili-Robert Hietala Opinnäytteen raportointi Sähköosasto Toukokuu 2015 KUVAILULEHTI 14.04.2015 Tekijä(t) Vili-Robert Hietala Työn laji Opinnäytteen raportointi Sivumäärä 7 Luottamuksellisuus
Sukupuu -ohjelma. Ossi Väre (013759021) Joni Virtanen (013760641)
Sukupuu -ohjelma Ossi Väre (013759021) Joni Virtanen (013760641) 7.11.2011 1 Johdanto Toteutimme C -kielellä sukupuuohjelman, johon käyttäjä voi lisätä ja poistaa henkilöitä ja määrittää henkilöiden välisiä
Datatähti 2019 loppu
Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio
Kuvailulehti. Korkotuki, kannattavuus. Päivämäärä 03.08.2015. Tekijä(t) Rautiainen, Joonas. Julkaisun laji Opinnäytetyö. Julkaisun kieli Suomi
Kuvailulehti Tekijä(t) Rautiainen, Joonas Työn nimi Korkotuetun vuokratalon kannattavuus Ammattilaisten mietteitä Julkaisun laji Opinnäytetyö Sivumäärä 52 Päivämäärä 03.08.2015 Julkaisun kieli Suomi Verkkojulkaisulupa
Taulukot. Jukka Harju, Jukka Juslin 2006 1
Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti
Projektin loppuraportti. Lajirikkauskartta 31.12.2015. Lilli Linkola, Open Knowledge Finland ry, lilli.linkola@okf.fi
Lajirikkauskartta 31.12.2015 Lilli Linkola, Open Knowledge Finland ry, lilli.linkola@okf.fi Sisällysluettelo Projektin loppuraportti 1. Projektin perustiedot 2. Projektin lähtökohdat 3. Tiivistelmä projektin
Jyväskylän kaupungin metsät
Jyväskylän kaupungin metsät 1. Metsäohjelma Metsäsuunnitelma - Kuviotieto 2. Tietojen ajantasaisuus ja päivittäminen 3. Hoitoluokitus 4. Kasvupaikat 5. Kehitysluokat 6. Ikäjakaumat 7. Puustotietoja Metsäohjelma
Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi
Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi Esimerkkinä Excel-taulukkona ladattavat Helsingin pysäköintilippuautomaatit Viimeksi muokattu 27. huhtikuuta
Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB
Datatähti 2019 alku task type time limit memory limit A Kolikot standard 1.00 s 512 MB B Leimasin standard 1.00 s 512 MB C Taulukko standard 1.00 s 512 MB D Ruudukko standard 1.00 s 512 MB E Sanalista
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman
LAS-TIEDOSTON SISÄLTÖ LIITE 2/1
LAS-TIEDOSTON SISÄLTÖ LIITE 2/1 LAS-TIEDOSTON SISÄLTÖ Las-tiedoston version 1.4 mukainen runko koostuu neljästä eri lohkosta, ja jokaiseen lohkoon voidaan tallentaa vain standardissa sovittua tietoa ja
Muuttujien määrittely
Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 4.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 4.3.2009 1 / 35 Tiedostot Tiedostojen käsittelyä tarvitaan esimerkiksi seuraavissa tilanteissa: Ohjelman käsittelemiä
Projektityö: Mobiiliajopäiväkirja. Mikko Suomalainen
Projektityö: Mobiiliajopäiväkirja Mikko Suomalainen 1. Määritelmä Mobiiliajopäiväkirja on kännyköille suunnattu ajopäiväkirja-sovellus. Sovelluksen pääperiaate on toimia automaattisena ajopäiväkirjana.
Toinen harjoitustyö. ASCII-grafiikkaa
Toinen harjoitustyö ASCII-grafiikkaa Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita
S09 04 Kohteiden tunnistaminen 3D datasta
AS 0.3200 Automaatio ja systeemitekniikan projektityöt S09 04 Kohteiden tunnistaminen 3D datasta Loppuraportti 22.5.2009 Akseli Korhonen 1. Projektin esittely Projektin tavoitteena oli algoritmin kehittäminen
Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy
Käyttöohje Ticket Inspector Versio 1.0 Sportum Oy 10.5.2017 Sivu 1 Sisällysluettelo 1. Yleistä... 2 2. Kirjautuminen ensimmäisellä kerralla / PIN-koodin unohtuessa... 3 3. Tunnistautuminen... 4 4. Päänäkymä...
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 3.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.3.2010 1 / 44 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas
Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman
Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).
Tehtävä 1: Metodit, listat, alkuluvut (4p) Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Alkuluvut ovat lukuja, jotka ovat suurempia kuin yksi ja jotka ovat jaollisia
JWT 2016 luento 11. to 21.4.2016 klo 14-15. Aulikki Hyrskykari. PinniB 1097. Aulikki Hyrskykari
JWT 2016 luento 11 to 21.4.2016 klo 14-15 Aulikki Hyrskykari PinniB 1097 1 Viime luennolla o AJAX ja JSON, harjoitustyön tehtävänanto, vierailuluento avoimesta datasta Tänään o APIt rajapinnoista yleisesti
Videon tallentaminen Virtual Mapista
Videon tallentaminen Virtual Mapista Kamera-ajon tekeminen Karkean kamera ajon teko onnistuu nopeammin Katseluohjelmassa (Navigointi > Näkymät > Tallenna polku). Liikeradan ja nopeuden tarkka hallinta
2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)
2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi
Vaatimusmäärittely Ohjelma-ajanvälitys komponentti
Teknillinen korkeakoulu 51 Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Versio Päiväys Tekijä Kuvaus 0.1 21.11.01 Oskari Pirttikoski Ensimmäinen versio 0.2 27.11.01 Oskari Pirttikoski Lisätty termit
Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.
1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla
BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä
Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin
Tech Conference 28.-29.5.2015. Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI
Tech Conference 28.-29.5.2015 Visual Studio 2015, C#6,.NET4.6 Heikki Raatikainen #TechConfFI Yleistä Avoimuus Open Source ja tuki yleisesti käytetyille ei-ms työkaluille Kaikki alustat tuettuna:.net 5
Laskuharjoitus 9, tehtävä 6
Aalto-yliopiston perustieteiden korkeakoulu Jouni Pousi Systeemianalyysin laboratorio Mat-2.4129 Systeemien identifiointi Laskuharjoitus 9, tehtävä 6 Tämä ohje sisältää vaihtoehtoisen tavan laskuharjoituksen
Visual Case 2. Miika Kasnio (C9767) 23.4.2008
Visual Case 2 Miika Kasnio (C9767) 23.4.2008 Työn tarkasti: Jouni Huotari 24.4.2008 1 SISÄLTÖ 1. TYÖN LÄHTÖKOHDAT... 2 2. PERUSTIEDOT... 2 3. ASENTAMINEN... 2 4. OMINAISUUDET... 3 4.1. UML-kaaviot... 4
Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma:
Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.
Moottorin kierrosnopeus Tämän harjoituksen jälkeen:
Moottorin kierrosnopeus Tämän harjoituksen jälkeen: osaat määrittää moottorin kierrosnopeuden pulssianturin ja Counter-sisääntulon avulla, osaat siirtää manuaalisesti mittaustiedoston LabVIEW:sta MATLABiin,
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Jypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
Määrittelydokumentti
Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta
Käsikirjan paperiversiota ei enää ylläpidetä ohjeen päivämäärän jälkeen. Viimeisimmät versiot ohjeista löydät ohjelman Help-ruudulta.
2 Käsikirjan paperiversiota ei enää ylläpidetä ohjeen päivämäärän jälkeen. Viimeisimmät versiot ohjeista löydät ohjelman Help-ruudulta. Sisällys 1 Yleistä... 3 1.1 Kirjanpitolain uudistus 2016... 3 Liitetietotosite...
Jypelin käyttöohjeet» Miten saan peliin pistelaskurin?
Jypelin käyttöohjeet» Miten saan peliin pistelaskurin? Pistelaskurin saamiseksi tarvitaan kaksi osaa: Laskuri, joka laskee pisteitä Olio, joka näyttää pisteet ruudulla Laskuri voi olla esimerkiksi tyyppiä
Alustavia käyttökokemuksia SAS Studiosta. Timo Hurme Maa- ja elintarviketalouden tutkimuskeskus MTT (v. 2015 alusta Luonnonvarakeskus / Luke)
Alustavia käyttökokemuksia SAS Studiosta Timo Hurme Maa- ja elintarviketalouden tutkimuskeskus MTT (v. 2015 alusta Luonnonvarakeskus / Luke) 19.9.2014 Lyhyesti SAS-koodareille suunnattu uusi käyttöliittymä
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 8.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 8.2.2010 1 / 38 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma
ARVIOKIRJAMALLI. Metsäarvio+ Saarnivaara, Saarijärvi / 8
1 / 8 Metsäarvio+ Saarnivaara, Saarijärvi 729-407--496 OP Metsäarvio+ kertoo kiinteistön metsätaloudellisen arvon, jota voidaan käyttää vakuusarvon määrityksessä ja omistajanvaihdostilanteissa, kuten perunkirjoitus,
Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36
!!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat
v1.2 Huom! Piirto-ohjelmissa asioita voi tehdä todella monella tavalla, tässä esitellään yksi esimerkkitapa tällaisen käyrän piirtämiseen.
v2 Tehtävä: Piirrä kartalle merkittyjen pisteiden ja välinen korkeusprofiili. Voit käyttää valmista Libre Office Draw koordinaatistopohjaa. Pisteiden välisen janan jakomerkit ovat 100m välein. Vaihtoehtoisesti
Ohjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
Kieliversiointityökalu Java-ohjelmistoon. Ohje
Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5
Tilastolliset ohjelmistot 805340A. Pinja Pikkuhookana
Tilastolliset ohjelmistot 805340A Pinja Pikkuhookana Sisältö 1 SPSS 1.1 Yleistä 1.2 Aineiston syöttäminen 1.3 Aineistoon tutustuminen 1.4 Kuvien piirtäminen 1.5 Kuvien muokkaaminen 1.6 Aineistojen muokkaaminen
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin
ARVIOKIRJAMALLI. Metsäarvio. Pyy, Mäntyharju / 8
1 / 8 Metsäarvio Pyy, Mäntyharju 507-412-1-73 Tämä metsäarvio kertoo kiinteistön metsätaloudellisen arvon, jota voidaan käyttää omistajanvaihdostilanteissa, kuten perunkirjoitus, perintö- ja lahjaveroarvon
BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.
BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET. Pekka Ollikainen Open Source Microsoft CodePlex bio Verkkosivustovastaava Suomen Sarjakuvaseura
Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari
Ammatillinen opettajakorkeakoulu
- Ammatillinen opettajakorkeakoulu 2 JYVÄSKYLÄN KUVAILULEHTI AMMATTIKORKEAKOULU Päivämäärä 762007 Tekijä(t) Merja Hilpinen Julkaisun laji Kehittämishankeraportti Sivumäärä 65 Julkaisun kieli Suomi Luottamuksellisuus
Maanmittauslaitoksen laserkeilaustoiminta - uusi valtakunnallinen korkeusmalli laserkeilaamalla
Maanmittauslaitoksen laserkeilaustoiminta - uusi valtakunnallinen korkeusmalli laserkeilaamalla Juha Vilhomaa Ilmakuvakeskus MAANMITTAUSLAITOS TIETOA MAASTA Korkeusmallityön taustalla: Yhteiskunnallinen
IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Kerro kuvin 3:n uudet ominaisuudet
Verkkosivu: www.haltija.fi Puhelin: 09 612 2250 Sähköposti: asiakaspalvelu@haltija.fi Kerro kuvin 3:n uudet ominaisuudet Kerro kuvin 3 on kehitetty uudelleen perusteista lähtien. Kaikki, mikä oli mahdollista
Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje
Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sisällysluettelo VIP Laajennettu raportointi... 3 Luo raportti Laajennetun raportoinnin työkaluilla... 4 Avaa Laajennettu raportointi... 4 Valitse
Visma Business AddOn Tositteiden tuonti. Käsikirja
Visma Business AddOn Tositteiden tuonti Käsikirja Oppaan päiväys: 10.2.2012. Asiakaspalvelu: Helpdesk: www.visma.fi Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin
Choose Finland-Helsinki Valitse Finland-Helsinki
Write down the Temporary Application ID. If you do not manage to complete the form you can continue where you stopped with this ID no. Muista Temporary Application ID. Jos et onnistu täyttää lomake loppuun
ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen
Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja
Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
Salasanan vaihto uuteen / How to change password
Salasanan vaihto uuteen / How to change password Sisällys Salasanakäytäntö / Password policy... 2 Salasanan vaihto verkkosivulla / Change password on website... 3 Salasanan vaihto matkapuhelimella / Change
4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö
Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut
RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0
RockID-varastonhallintajärjestelmän käyttöohje v. 1.0 Yleistä Rockstar lukijakäyttöliittymä Tuotteiden lukeminen lähtevään tilaukseen Tilaukseen kuulumattomat tuotteet Tuotteiden lukeminen tilauksesta
WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)
WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) 1 UUDEN KILPAILUTIEDOSTON AVAUS Avaa Wcondes ohjelma tuplaklikkaamalla wcondes.lnk ikonia. Ohjelma avaa automaattisesti viimeksi tallennetun kilpailutiedoston.
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Useampitasoiset ADT:t Käytetään esimerkkiohjelmaa Ratkaisuyritys 1 Ratkaisuyritys 2 Lopullinen ratkaisu Lopullisen ratkaisun toteutusyritys Lopullisen ratkaisun oikea toteutus
Keskijännitteisten ilmajohtojen vierimetsien hoidon kehittäminen
Keskijännitteisten ilmajohtojen vierimetsien hoidon kehittäminen Risto Ranta, Hannu Niemelä 9.10.2013 08.10.13 1 Taustaa MTK:n/SLC:n ja Energiateollisuus ry:n yhteinen suositus Viime vuosien myrskyt Sähkömarkkinalain
Tulevaisuuden ratkaisu datan yhdistämiseen ja jakeluun. Forest Big Data Tulosseminaari, Miika Rajala, Risto Ritala TTY
Tulevaisuuden ratkaisu datan yhdistämiseen ja jakeluun Forest Big Data Tulosseminaari, 8.3.2016 Miika Rajala, Risto Ritala TTY Datalähteet Metsädatan lähteitä Laserpohjainen inventointi (SMK) Satelliittipohjainen
Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen
Metsävaratietojen ja digitalisaation hyödyntäminen biotalouden kasvussa Etelä- Savossa-hanke
Metsävaratietojen ja digitalisaation hyödyntäminen biotalouden kasvussa Etelä- Savossa-hanke Metsänomistajia tavoitetaan tiedonvälitystilaisuuksissa eri teemoin. Metsänomistajat saadaan hyödyntämään aktiivisemmin
Merkkijono on palindromi, jos se säilyy samana, vaikka sen kääntää väärinpäin.
A Palindromi Sinulle annetaan merkkijono, ja tehtäväsi on poistaa siitä tarkalleen yksi merkki, minkä jälkeen merkkijonon tulisi olla palindromi. Onko tehtäväsi mahdollinen? Merkkijono on palindromi, jos
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO Opinnäytetyö KESKI-POHJANMAAN AMMATTIKORKEAKOULU Puutekniikan koulutusohjelma Toukokuu 2009 TIIVISTELMÄ OPINNÄYTETYÖSTÄ Yksikkö Aika Ylivieska
Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi
Muilla kielillä: English Suomi Pong-peli, vaihe 7 Tässä vaiheessa lisäämme peliin pistelaskun. Pong-pelissä pelaaja saa pisteen kun pallo ohittaa toisen pelaajan mailan. 1. Aliohjelmakutsu laskureita varten