Päivänkakkara, Palava rakkaus, Hietaneilikka, Kehäkukka

  Pääsivulle  |  TIETOTEKNIIKAN PÄÄSIVULLE

Herbaario-sovellus

YLEISTÄ

Sovellus on tarkoitettu kasvien kerääjän apuvälineeksi ja varsinaisen näyte- ja valokuva-kokoelman lisäksi. Se esittää luetteloita, näyttää kuvia ja kirjoittaa muistivihkoja. Sovelluksen täydelliseksi käyttämiseksi on tarpeen ottaa digikuvia kasveista, skannata valokuvia tai negatiiveja, skannata näytteitä ja siirtää kyseiset tiedostot ohjelmiston käyttöön.

Olen tehnyt sovelluksen sekä Windows- että macOS -ympäristöön. Molemmat versiot käyttävät samaa SQLite-tietokantaa. MacOS-sovellus on hieman suppeampi toiminnallisuuksiltaan.

Kasvit voivat olla fyysisinä näytteinä tai valokuvina, tai sitten pelkästään digikuvana. Näytteet ja fyysiset valokuvat voidaan tallentaa myös skannattuina kuvina. Lisäksi vanhempien valokuvien negatiiveista on tieto kannassa.

Sovellus tarvitsee käynnistyäkseen tiedoston Herbaario.ini jossa on eräiden tiedostojen nimet ja niiden sijainnin polut. Katso tarkemmin jäljempänä. Tämän ini-tiedoston tulee sijaita samassa kansiossa sovellustiedoston Herbaario.exe (tai Herbaario.app) kanssa.

Kaikkien herbaariosovelluksella hoidettavien kuvien tulee olla samassa kansiostossa, eli ini-tiedoston määrittelemässä kansiossa alikansioina (kansiorakenne saa olla syvä). Itse kuvat ovat tavanomaisessa kansiorakenteessa, eli niitä ei ole viety tietokannan tauluihin, ei myöskään thumbnailejä. Sovellus tukee seuraavia kuvatiedostoja: jpg, jpeg, bmp, tif, tiff, png (tiedostopääte saa olla pienaakkosilla tai suuraakkosilla).

Windows-ympäristön sovellus on tehty työkalulla Visual Studio Community 2017 ja se toimii Windows 8.1:ssa ja Windows 10:ssä. Sovellus toimii sekä 32- että 64-bittisessä versiossa. Ohjelmointikieli on C#. Sovellus on tehty WPF-käyttöliittymällä.

MacOS-ympäristön sovellus on tehty Xcode:lla käyttäen ohjelmointikielenä Swiftiä. Aiempi versio oli tehty Objective-C:llä. Päivitän sovelluksen heti uusiin Mac-ympäristöihin, kun uusia käyttöjärjestelmä- ja Xcode-versioita ilmestyy.

Windows-kehitysympäristö minulla on sekä 32-bittisessä että 64-bittisessä Windowsissa. Exe-tiedostojen käytössä ristiin ei ole ongelmia. Sovellustyökalusta johtuu, että työasemassa on oltava asennettuna dotnet Framework 4.6.1. Windows 8.1 ja Windows 10 sisältävät sen jo valmiiksi ilman eri toimenpiteitä. Lisäksi kehityskoneeseen tulee purkaa sopivaan paikkaan SQLite-ohjelmiston versio  sqlite-netFx46-binary-Win32-2015-1.0.105.0.zip

Mac-ympäristössä Herbaario.app ja HerbaarioMac.ini on kopioitu kansioon /Applications/Herbaario. Muita asennustoimenpiteitä ei tarvita. SQLite on osa macOS:ää. Tämän hetken (22.6.2017) ympäristö on Xcode 8.3.3 ja macOS 10.12.5.

Omassa tietokannassani on tätä riviä kirjoitettaessa (22.6.2017)  2431 kohdetta, 1892 havaintoa ja 1004 eri kasvia.

TAULURAKENNE

Tauluja Kasvit, Havainnot ja Kohteet ylläpidetään siten, että niissä on vain olemassa olevia kohteita vastaavat rivit. Tauluissa Heimot ja Suvut voi olla muitakin rivejä eikä näistä tauluista poisteta mitään kasveja päivitettäessä.

Taulusta Paikat poistetaan ylimääräisiä rivejä silloin kun päivitysten yhteydessä havaitaan paikka jota mikään havainto ei tarvitse, mutta ylimääräisiä rivejä voi olla eli uusi paikka voidaan tehdä vaikka ei olla tekemässä havaintoa.

Uuden kasvin voi viedä tietokantaan vain uuden havainnon tekemisen yhteydessä, mutta kannassa voi olla kasveja ilman havaintoa. Niitä voi jäädä havainnolle tehdyn muutoksen yhteydessä.

Tässä on keskeiset taulut ja niiden yhteydet. Kaaviokuva on hieman vanhentunut eikä se oli tietoteknisesti viimeistelty, mutta siitä saa hyvän käsityksen perusratkaisusta.
Taulukartta Herbaario-sovellus Suurempi kuva

Havainnot: keskeisin taulu. "Havainto" on samana päivänä samasta paikasta kootut saman kasvin eri versiot (eri näytteet, kuvat jne.)

Kohteet: yksittäinen kokoelmaan viety kohde  samasta havainnosta

Kasvit:  kasvin määrittely

Suvut: kasvin suku, esimerkiksi Ranunculus

Heimot: kasvisuvun heimo, esimerkiksi Ranunculaceae

Paikat: mistä kasvi otettu kokoelmaan, tai tarkemmin sanoen havaintopaikka

Alueet: havaintopaikan kasvimaantiteellinen alue Suomessa, ja karkea jaottelu ulkomailla

Laadut: miten laadukas kohde on

Lajit: näyte, digikuva, valokuva, negatiivi

ini-TIEDOSTO

Sovellus tarvitsee ini-tiedoston (Herbaario.ini), joka on sijoitettava samaan kansioon itse sovelluksen (Herbaario5.exe) kanssa. Sovellus löytää tiedoston sieltä. Sovellus ei kirjoita siihen mitään. Lisäksi samassa kansiossa sovelluksen kanssa on oltava joukko kirjastotiedostoja.

Tässä esimerkkitiedosto Windows- ja Mac-koneelle. Tiedostossa on oltava nämä rivit, eli jokaiselle avaimelle omansa.

   -----Windows------
kuvapolku# E:\HERBAARIO\Kuvat
muokkaa#  Joo
tuotantokanta# E:\HERBAARIO\Herbaario_tuotanto.db
testikanta# E:\HERBAARIO\Herbaario_testi.db
karttapolku# E:\HERBAARIO\Kartat
latauskuva#  E:\HERBAARIO\Latauskuva.gif
latauskuva_test#  E:\HERBAARIO\Latauskuva_testi.gif
javapolku# E:\HERBAARIO\Kartat\JAVA


 ------Mac-----
kuvapolku# /Users/Erkki/Pictures/Herbaario
muokkaa# Joo
tuotantokanta# /Users/Erkki/Pictures/Herbaario/Herbaario_tuotanto.db
testikanta# /Users/Erkki/Pictures/Herbaario/Herbaario_testi.db
karttapolku# /Users/Erkki/Pictures/Herbaario/Kartat
javapolku#  /Users/Erkki/Pictures/Herbaario/Kartat/JAVA
  -----------

kuvapolku# kertoo minkä kansion alla on kaikki kuvat
Jos kuvapolku on juurikansiossa, pitää olla esimerkiksi (Windows):  kuvapolku# E:\

muokkaa# kertoo saako käyttäjä muokata tietokannan sisältöä: Joo / Ei

tuotantokanta# kertoo missä sijaitsee tuotantokanta ja mikä sen nimi on

testikanta# kertoo missä sijaitsee testikanta ja mikä sen nimi on

karttapolku# kertoo kansion minne tallennetaan kasvien löytöpaikkoja esittävät karttakuvat

latauskuva# kertoo alun menunäytön kuvan sijainnin ja nimen, itse kuvan pitää olla kooltaan leveys x korkeus = 640x512

latauskuva_test# kertoo testikannan menunäytön kuvan kuten edellä.

javapolku# kertoo kansion missä on Maanmittauslaitoksen maastokarttojen katsomiseen tarvittavat omat ja OpenLayers3-kirjaston tiedostot

Karttanäytöt: Sovellus tallentaa havaintopaikan koordinaatit ja näyttää paikan sijainnin Googlen kartalla.Sovelluksessa voidaan myös katsoa paikkaa Maanmittauslaitoksen maastokartalla, jos paikka on Suomessa. Katso koodiesimerkki.

SOVELLUKSEN OMINAISUUKSIA JA NÄYTTÖJÄ

Sovelluksen keskeiset toiminnallisuudet ovat monipuolinen haku ja luonteva uusien havaintojen tuonti.
Tässä niihin liittyviä kuvia Windows-sovelluksesta:
     Uuden havainnon tuonti, aloitus:
Havainnon haku, aloitusnäyttö   Suurempi kuva

    Uuden havainnon tuonti, kasvi ja paikka jo annettu:
Uusi havainto, työ kesken  Suurempi kuva

    Uusi havainto valmiina:
Uusi havainto annettu Suurempi kuva

    Hakutulosten katsominen kohdetta haettaessa:
Hakutuloksen katselu kohdetta haettaessa  Suurempi kuva

Oheisena Mac-sovelluksesta pari kuvaa:
    Kohteiden haku: 

Kohteiden haku  Suurempi kuva

   Havainnon tiedot:
Havainto Macissä  Suurempi kuva


Käyttöliittymästä pääsee myös hallinnoimaan perustauluja kuten Heimot ja Suvut.

Lisäksi sovelluksesta saa ulos lukumäärätietoja kokoelman laajuudesta eri muuttujien suhteen.

Sovellus tietokantoineen on helppo siirtää toiseen työasemaan tai varmistusta varten ulkoiselle kiintolevylle.

HISTORIAA

Tätä sovellusta olen kehittänyt koko tietokoneharrastukseni ajan läpi kaikkien käyttämieni alustojen ja tietokoneiden.

Versio 13 Macciin toukokuussa 2018: Swift 4, lisätty uusia luokkia, koodia tehostettu ja päivitetty laajasti
Versio 13 Windowsiin toukokuussa 2017: C# WPF, SQLite 3, Visual 2017 Studio Community

Versio 12.3.1 Pikkukorjauksia macOS 10.12:n kirjastomuutosten takia

Versio 12.3: Maanmittauslaitoksen maastokarttanäkymät ohjelmoitu käyttöön syyskuussa 2016

Versio 12.0 Macciin, kielenä Swift, ja toiminnallisia muutoksia. Valmistunut tammikuussa 2015.
Versio 12.0 Windowsiin, paljon pieniä kehittämisiä, dotnet Framework 4.6, valmistui 22.6.2016

Uusi versio 11.0 Macciin syksyllä 2012 ja Windowsiin keväällä 2013
-    vain tärkeimmät ominaisuudet toteutettu Macciin
-    uusi tietokanta-alusta SQLite

Muutokset 9.4 -> 10.0 keväällä ja kesällä 2011
-    tietokantapohjaksi SQL Server Compact SP2
-    luettelonäytön muutokset

Muutokset 9.1 -> 9.4 (Windows 7 vuosina 2009-2010)
-    Visual C# 2010 Express sovelluskehittimeksi, ja pääkehitystyö Windows 7:ssa
-    Accessista poistettiin tallennetut kyselyt joita ei sovellus siis enää käytä
-    DotNet Framework 3.5
-    lukuisia käyttöliittymän pieniä kehittämisiä
-    hakutuloksena eräissä näytöissä kuvajoukko

Muutokset 9.0 -> 9.1 (Windows Vista kesällä 2007)
-    Visual C# 2008 beta2 sovelluskehittimeksi
-    sovelluksen kehitys Nummella Vista-ympäristössä
-    raportit saatu kuntoon
-    lukuisin bugikorjauksin luotettavuus saatu nyt hyväksi

Tässä välissä tutkin seuraavaa:
-    jospa tekisin selainkäyttöliittymän? Työkaluna Visual Studio Web Developer 2005 Express. Syntyi pieni demo
-    jospa ottaisin tietokannaksi SQL Server 2005 Express? Tämä on otettu pitkälti huomioon koodissa, menuun lisäsin mahdollisuuden valita SQL Serverin tietokannaksi. Mutta datasisältö on ajantasainen Accessissa

Muutokset 8.0 -> 9.0  (Windows XP maalis-heinä 2006)
-    Visual Studio C# Express 2005 sovelluskehittimeksi
-    paljon pieniä täydennyksiä ja korjauksia
-    edelleen Access tietokantana

Muutokset 7.1 -> 8.0 (vuonna 2005)
-    SharpDevelop sovelluskehittimeksi
-    ohjelmointikieleksi C#
-    dotnet Framework 1.1
-    uudet näytöt
-    löytöpaikan karttakuva voidaan tallentaa
-    tutkin ottaisinko MySQL:n tietokannaksi, mutta päädyin pysymään Accessissa

Muutokset 6.0 -> 7.0 ja 7.1  (Windows 2000  vuosina 2002-2004)
-    tehtiin sovellus Windows 2000:lle käyttäen Javaa
-    otettiin käyttöön Access tietokannaksi
-    koodi kirjoitettiin edelleen tekstieditorilla TextPad
-    kasvi voi olla tuntematon tai nimetön

Muutokset 5.1 -> 6.0 (Linux PC tammi-heinä 2000)
- uusi versio tehtiin Linuxilla PC:lle (Gnome/GTK)
- tietokannan rakenne (tekstitiedostot) uusittiin täysin, ja nyt samasta kasvista voi olla
  useita näytteitä, valokuvia ja digikuvia
- tietokannan rakenteessa ideoijana Oraclen tietokantojen perusrakenteet
- ulkonäkö muuttui kokonaan, se tehtiin käyttäen Gnome:n perusrakenteita
- monet haut ja logiikat tehtiin niin, että ne ovat ensisijaisesti yksinkertaisia ja ymmärrettäviä

Muutokset 5.0 -> 5.1 (Amiga maalis 1998)
- loka-marraskuussa -98 korjattiin bugeja ja lisättiin arvovarmistuksia
- kaikkien avaintaulukoiden korjaus poistojen ja muutosten yhteydessä
- kesävihkojen tulostus korjattiin
- muutama rakenteellinen korjaus

Muutokset 4.2 -> 5.0 (Amiga joulu 1997)
- lisättiin negatiivit, löytöpaikan koodaukset ja löytöpaikan hakuikkuna
- korttien dynaaminen varaus
- poistettiin aakkostusta varten olleet muodot sukunimi lajinimi
- korjattiin bugeja

Muutokset 4.1 -> 4.2  (Amiga joulu 1996)
- korjattiin bugeja
- ohjelman rakennetta virtaviivaistettiin
- ikkunan avaava aliohjelma pääsääntöisesti myös sulkee sen
- vähennettiin external -muuttujia
- käyttöön ikut[]- ja drg[]- taulukot avonaisille ikkunoille
  
Muutokset 4.0 -> 4.1  (Amiga tammi 1996)
- korjattiin bugeja

Muutoksia 3.2 -> 4.0
- uudet värit, oma ulkonäkö ikkunoihin
- doku kuntoon

Muutoksia 3.1 -> 3.2
- 2. tietokortti (tiedosto) lisättiin
- joitain gadgetteja ohjelmoitiin uusiksi
- ohjelmasta kaksikielinen (suomi/englanti), kokeilu 3.2

Muutoksia 3.0 -> 3.1 (Amiga):
- Muistivihon Taitto toimii nyt 705 kasviin asti
- lisättiin vaihtoehdoiksi valokuva ja digikuva
- kortin ulkonäköä kohennettiin
- lisää luetteloita

Muutoksia 2.2 -> 3.0 (Amiga 1988):
- kielen vaihto: AmigaBasic -> Lattice C 3.03
- ikkunat uusiksi
- kuvafailin nimi lisättiin
- nimen koolle jne ei enää rajoituksia
- Kasvidata on nyt ascii-faili

Muutoksia 2.0 -> 2.1 -> 2.2 (Amiga):
- input kirjoitetaan suoraan kortin riveiksi
- tekstin input yhtenäistettiin
- sort on nyt konekielinen
 
Muutoksia 1.2 -> 2.0 (Amiga):
- failit kopioidaan ensin -> ram: ja käytetään sieltä
- kortin kentille lisää tilaa
- muistikirjan sisältöä laajennettiin

Muutoksia 1.0 -> 1.1 -> 1.2 (1987):
- C64 Basic-ohjelma siirrettin Amigaan ja muunnettiin -> AmigaBasic

Ohjelman ensimmäinen versio tehtiin Commodore 64:llä noin vuonna 1983.

-------------------------------
(sivua muokattu 18.12.2019)