Metsää puilta

Metsävaramittaus kunnostamattomissa metsissä -projektin verkkoblogi

Tag Archives: WP8

JokaMies –mobiilisovellus omatoimiseen metsänmittaukseen

Metsät Suomessa

Suomen maapinta-alasta 75 prosenttia on metsää. Metsissä on noin 2300 kuutiometriä puuta ja puuston kasvu on 100 miljoonaa kuutiota vuodessa. Puustoa kaadetaan keskimäärin 68 miljoonaa kuutiota vuodessa, joka on alle 70 prosenttia vuotuisesta kasvusta. Hoitamatonta metsää on noin 5 miljoonaa hehtaaria, joka on noin 30% metsäalasta. 1,6 miljoonaa hehtaaria tästä alasta tarvitsee kiireellistä hoitoa.

Yksityisten henkilöiden omistuksessa Suomen metsistä on yli puolet, 52 prosenttia. Suomessa on Verohallituksen tietojen mukaan 440 000 yksityistä metsälöä, joista noin kolmasosa on alle 20 hehtaarin kokoisia. Valtio omistaa metsistä 35 prosenttia, metsäteollisuus 8 prosenttia ja loput on jakautunut kuntien, seurakuntien ja muiden yhteisöjen kesken. Lähde: http://www.metla.fi/aikakauskirja/full/ff09/ff093181.pdf

Metsien maastoinventointia JokaMies -mobiilisovelluksella

Metsän inventointiin on olemassa monenlaisia maastotyökaluja. Perinteisen relaskoopin rinnalle on tullut sähköisiä työkaluja, kuten maastotietokoneet. Älypuhelimien yleistyessä on markkinoille ilmestynyt myös metsämittaukseen tarkoitettuja mobiilisovelluksia. Yksi näistä on JokaMies –sovelluksen prototyyppi, jota on kehitetty osana EU-osarahoitteista Metsävaramittaus kunnostamattomissa metsissä –projektia. Jokamies –sovellus on suunniteltu kustannustehokkaaksi työkaluksi nuorten kunnostamattomien metsien hoitoon, erityisesti metsänomistajan sekä metsurin käyttöön työvaikeusluokituksen arvioinnissa.

Mobiilisovelluksen etuna verrattuna maastotietokoneeseen on sen kustannustehokkuus. Maastotietokoneet voivat maksaa tuhansia euroja, kun taas monikäyttöinen, kuluttajakäyttöön soveltuva älypuhelin maksaa alimmillaan sadan euron luokkaa ja löytyy lähes jokaisen metsänomistajan taskusta. Perinteisiin inventointimenetelmiin verrattuna mobiilisovellus on nopeampi ja helpompi tapa inventoida metsää. Relaskoopilla mitatessa pitää tulokset pistää erikseen muistiin ja määritellä relaskooppitaulukosta runkotilavuus. Mobiilisovellus tekee mittausten kirjauksen ja tulosten analysoinnin automaattisesti ja graafisten tulosten avulla.

Käyttö

JokaMies -sovellus on monialusta-mobiilisovellus, eli se toimii useammalla kuin yhdellä käyttöjärjestelmällä. Sovellus on kehitetty HTML5 tekniikalla ja sovellus toimii tällä hetkellä nykyaikaisilla Android ja Windows Phone 8 älypuhelimilla. Sovellus on pyritty suunnittelemaan niin, että käyttöliittymä ja toiminnot pysyvät samanlaisina alustasta riippumatta, vaikka pieniä teknisiä eroja käyttöjärjestelmien väliltä löytyykin.

kotiruutu

Työvaikeusluokitus -työkalulla mitataan aluskasvustoa, alle 6 cm läpimittaisia ennakkoraivattavia puita ja risukkoja. Puita ei lasketa yksitellen, vaan sovellus luo kuviolle pieniä ympyrän muotoisia mikrokoealoja, jonka säteen käyttäjä voi itse valita kolmesta metsikkökuviosta riippuvasta vaihtoehdosta. Mikrokoealalta arvioidaan kaikki alle 6 cm puut ja syötetään luku sovellukseen. Sovellus laskee mikrokoealoilla syötettyjen arvojen perusteella kuinka paljon metsäkuviolla on aluskasvustoa ja määrittelee sen mukaan kuviolle ennakkoraivauksen työvaikeusluokituksen huomioiden maastovaikeustekijät. Arvion tarkkuus paranee suhteessa mittausten kattavuuteen. Sovelluksessa on eritelty puuston inventointi ja aluskasvuston mittaus erillisiksi toiminnoiksi. Puustomittaus keskittyy yli 6 cm läpimitaltaan olevien ainespuiden mittaamiseen. Puita mitataan yksitellen etenemällä kuviolla ennakkoon määrätyn reitin mukaisesti, jolloin  mittaustulosten avulla voidaan arvioida runkolukusarja ja pohjapinta-ala koko kuviolle. Puut voidaan mitata joko elektronisia mittasaksia käyttäen tai syöttäen käsin puustotiedot ohjelman käyttöliittymään. Elektroniset mittasakset yhdistetään sovellukseen Bluetoothin avulla, jolloin aina kun tehdään mittaus, mittasakset lähettävät puun tiedot sovellukseen, sovellus ottaa paikkatiedon puhelimen GPS:tä ja lisää tiedot tietokantaan.

JokaMies -sovellus tekee jokaiselle metsikkökuviolle tuloskortin, jota voi tarkastella sovelluksen “Tulokset” painikkeen takaa. Sovellus antaa jokaiselle kuviolle tiedot puustotulkinnan ja alikasvoslaskennan osalta. Puustotulkinta kohdasta löytyy tiedot kuvion pinta-alasta, puupinta-alasta, arvioitu runkoluku sekä keskimääräinen puun halkaisija. Sovellus antaa myös arvion siitä, millainen on puuston poistumatyyppi ja kuinka monta puuta hehtaaria kohden tulisi poistaa.

liikala_tuloskortti_v3

Mittaustulokset

Alikasvoslaskennan osuus keskittyy kuvion ennakkoraivauksen työvaikeusluokitukseen. Kun sovellukseen on syötetty alle 6cm läpimittaisen alikasvoksen ja risujen arvioitu määrä sekä keskiläpimittaluokat, voidaan laskea kuviolle työvaikeusluokitus. Kuvion työvaikeusluokituksen ja koon ollessa tiedossa, saadaan laskettua kuvion ennakkoraivaukseen tarvittavien tuntien määrä (tavoitetuotosluku) ja tästä edelleen ennakkoraivauksen työn hinta.

JokaMies -sovellus käyttää mittausten (ts. puiden) paikantamiseen puhelimen omaa GPS-anturia. Paikannuksen tarkkuus maastotesteissä on ollut keskimäärin 3-4 metriä. Laajin testimittaus suoritettiin Liikalassa, Toivakassa, jossa kuviolle rajatulta koealalta mitattiin JokaMies -sovelluksella kaikki puut (Kuva alla). Mittaustuloksia verrattiin aiemmin Masser Sonar Caliper mittalaitteella mitattuihin tuloksiin. Kun tulokset havainnollistetaan kartalla, voi nähdä että JokaMies -sovelluksella tehdyt mittaukset ovat hieman siirtyneet verrattuna Sonar Caliperilla tehtyihin mittauksiin. Siirtymä on ollut kuitenkin yhtä suuri kaikissa mittauksissa, joten suurta vaikutusta lopputulokseen ei pitäisi olla.

Puukartta_HakkuunJalkeen

Puukartta Masser Sonar Caliperilla mitattuna

Puukartta_JokaMies

Puukartta JokaMies-sovelluksella mitattuna

Yhteenveto

Metsävaramittaus kunnostamattomissa metsissä -projektissa kehitetyn JokaMies -mobiilsovelluksen avulla helpotetaan metsänhoidon suunnittelua metsäalan palveluyritttäjille sekä omatoimisille metsänomistajille. Sovelluksen avulla perinteisen relaskooppimittauksen tehostamiseksi on kehitetty käyttöliittymä nykyaikaisella älypuhelimella, jonka avulla tiedonsiirto metsävaratietojärjestelmiin nopeutuu huomattavasti. Tiedonsiirron avulla mittaaja saa käyttöönsä karttanäkymän, jonka avulla oikean metsikkökuvion paikantaminen sekä mittaaminen on helppoa. Mitatut puut lähetetään metsävaratietojärjestelmään, josta käyttäjä saa tuloksena runkolukusarjan sisältävän tuloskortin harvennustarpeineen. Metsäpalveluyrittäjälle JokaMies -sovellus tarjoaa menetelmän taimikoiden ja nuorten, kunnostamattomien metsien ennakkoraivauksen työvaikeusluokituksen arviointiin ja laskentaan. Sovelluksen prototyyppi julkaistiin projektin tuotoksena ja sen jatkokehittämistä sekä kaupallistamista tutkitaan projektin jälkeen.

Kirjoittaja työskenteli Metsävaramittaus kunnostamattomissa metsissä -projektissa projektityöntekijänä 2013-2014. Mobilisovelluksen Windows Phone 8  -alustan toteutus on julkaistu opinnäytetyösssä:  Tiihonen, S., 2014. Windows Phone 8 Jokamies metsänmittaussovellus, Jyväskylä, JAMK/IT

 

 

Bluetooth for PhoneGap

BluetoothPlugin for PhoneGap

https://github.com/tanelih/phonegap-bluetooth-plugin

Earlier this year we [1] worked on an application that needed to communicate with a simple measurement device over Bluetooth. We took a look at some of the currently available plugins [2][3] for Bluetooth but decided to roll our own. We were developing the app for Android at the time and so the plugin only targeted this platform.

The plugin was developed initially using the 2.6.0 version of PhoneGap, but was later changed to conform to the plugman-centric specification of 3.0.0.

The required functionality for the application in development defined many of the features of the plugin. For example you can search for devices, connect to them and have some basic I/O with the connected devices.

In our case we had to establish connection to a fairly low-level measurement device, which then transmitted the measured data via Bluetooth to our mobile device. Our mobile device would then return either ACK or NAK to the measurement device depending on the validity of the data. The data was in NMEA format and often split into multiple small bursts, so we had to also make sure to validate the check-sums of the messages.

Example Application

Creating the project

Make sure you have phonegap 3.0.0 installed on your system.

Create a new Phonegap project using the CLI, then follow the instructions at here to add BluetoothPlugin to your project. After adding the plugin to your project, remember to build it for Android using the Phonegap CLI. Due to limitations in this blog-environment the code is hosted in pastebin, however the code is fairly well commented so there shouldn’t be any issues.

First let’s list the libraries used to develop this example application. If you are not familiar with how these libraries function, check them out!

The source code for this example is hosted on github.

Basic UI

We start by creating a basic UI for our app, using the basic components provided by Bootstrap. Note that we don’t need that much of HTML to create a fairly clean UI thanks to Bootstrap components. The grid system makes sure the UI scales well and doesn’t break when the device orientation changes.

We create ’on’, ’off’ and ’discover’-buttons, of which ’discover’ uses a special ’data-loading-text’-attribute from Bootstrap to signify a ’loading’-state. For displaying the devices, we create a simple ’device’-template in ’templates.js’ file that uses the underscore.js templating.

Adding functionality

We wire up the basic ’deviceready’ cycle that we usually do with Phonegap applications. Then we rig up some code to connect our flashy ’on’, ’off’ and ’discover’-buttons to their respective implementations.

We also have a BluetoothState model, which we change over the course of the application to represent what the app is currently up to. Changing the state using the ’set’-method triggers a ’change’-event, which we listen to and then change to UI accordingly to represent the current state of the application.

Handling found devices

We create two Backbone Views for our app: DeviceView, and DeviceListView. DeviceListView will act as the host to multiple DeviceViews, of which each has a reference to a single BluetoothDevice. DeviceView handles the click events for the ’connect’ and ’disconnect’ buttons in relation to the model it references.

DeviceView compiles the ’device’-template from ’devices.js’ using the data from its model, it then attaches this compiled template to its ’el’. DeviceListView then renders each DeviceView ’el’ into the DOM-structure.

Connecting and disconnecting

When the user taps ’connect’, we first invoke the ’getUUIDs’-method to retrieve the device’s UUIDs. After retrieving the UUIDs we can actually ’connect’. Once connection is established, we can ’startConnectionManager’ which listens to incoming messages as the first callback. Once a Device is implied to be connected, using the ’isConnected’ attribute of the Device-model, the device is rendered with the Disconnect-button. Tapping the ’disconnect’-button will cancel any ongoing connections.

Hopefully this helps getting started using the BluetoothPlugin for Phonegap.

Sample UI for BluetoothDemo

[1] Forest Resource Measurement in Untreated Forests -project summary
[2] http://simonmacdonald.blogspot.fi/2013/03/phonegap-bluetooth-plugin-updated.html
[3] https://github.com/huseyinkozan/phonegap-bluetooth