SyMfonAK - vyvíjame databázy pomocou frameworku Symfony
Aves monitoring
Aves monitoring
Aves monitoring je názov monitoringu, ktorý si objednala Štátna ochrana prírody u SOS/BL a RPS. Má 40 rôznych metodík. Územia, kde sa monitoring vykonáva sú pevne dané a sú to TML - trvalé monitorovacie lokality. Mapovateľov vedú koordinátori pre jednotlivé metodiky. Pre zber údajov a ich schvaľovanie koordinátorom je vyvinutá mobilná aplikácia Aves. Zakladá sa na mobilnej aplikácii JASOŇ ktorú si dal osobne vytvoriť Janko Svetlík a Soňa Nuhlíčková a na mobilnej aplikácii, ktorá pomáha im ale aj skupine hniezda Záhorie, slúži na kontroly hniezd. Mobilnú aplikáciu vyvíja programátor Martin Hagara z firmy Softvér na mieru.
Mobilná aplikácia Aves pre potreby Aves monitoring rieši zber faunistických údajov na predvolených lokalitách. Tieto faunistické údaje sú obohatené o nový typ formulára - unifikovaný formulár, kde sa popisuje stav trvalej monitorovacej lokality, jej biotopov, popisujú sa aktivity s pozitívnym či negatívnym vplyvom na trvalú monitorovaciu lokalitu. Novinkou je zber troch fotografií. Pripravujeme export a úpravu do databázy Štátnej ochrany prírody KIMS.
Mobilná aplikácia Aves ponúka aj zber faunistických údajov voľných, neviazaných na žiadnu metodiku či územie.
KIMS má svoj špeciálny modul - monitoring. Tu sú trvalé monitorovacie lokality (TML), ktoré pravidelne navštevujú pracovníci štátnej ochrany prírody. Do roku 2023 to boli zamerané na iné skupiny ako vtáky. Každá TML má svoj jeden cieľový druh. Táto požiadavka sa ťažko uplatní pre vtáky v prípade, že metodika výskumu zisťuje veľa druhov. Z povahy štruktúr nástrojov databázy KIMS je však nutné uspôsobiť výsledky výskumov vtákov tak, aby do KIMS putovali v požadovanej rozdrobenej štruktúre.
Faunistická časť zozbieraných dát bude importovaná do centrálnej databázy Aves - Symfónia.
Okrem vývoja mobilnej aplikácie Martin Hagara zabezpečil aj Microsoft domenú aves.sk a kontá pre každého mapovateľa a každého koordinátora. Urobil aplikáciu tak, aby sa dala používať v mobile aj počítači cez PowerApps. Martin pripravil inštruktážne videá a zriadil jednotlivé i spoločné mailové schránky pre diskusiu medzi mapovateľmi a koordinátormi, medzi mapovateľmi a programátorom. Janko Svetlík spolu s Martinom Hagarom neustále vyhodnucujú námety od užívateľov a zapracuvávajú novinky.
Úlohou nášho tímu pre vývoj databázy Aves Symfónia je importovať dáta z mobilnej aplikácie a exportovať do KIMS.
Obsah
História importu z mobilných aplikácií, API Aves Symfónia, api.nasesk.info
Pre potreby prvej mobilnej aplikácie Slovenskej ornitologickej spoločnosti, SOS/BirdLife Slovensko sme vytvorili API rozhranie. Pre potreby programovania vo vyššej verzii Symfony 5 sme si zriadili doménu nasesk.info API rozhranie sme písali v PHP Frameworku Symfony vo vyššej verzii.
Mobilná aplikácia SOS/BirdLife Slovensko
Po prvých skúsenostiach užívateľov mobilnej aplikácie sa ukázalo, že niektorým vyhovuje jednoduché rozhranie, veľké čitateľné písmená a fakt, že dáta sú do dvoch minút v centrálnej databáze bez potreby myslieť na prepis z poznámkového zošítka po návrate z terénu.
- link na inštalačnú stránku v google play prvej mobilnej aplikácie: AvesSymfonia SOS/BirdLife Slovensko
- Pozri aj eBird, finty na obohatenie eBird záznamov cez poznámky ku druhu a ku lokalite sa dajú elegantne použiť úplne rovnako aj v prvej mobilnej aplikácii!
Nadstavba pri API - pridaj.nasesk.info
To že už máme takúto doménu a môžeme skúsiť čosi nakódovať aj vo vyššej verzii Symfony sme využili na prípravu jednoduchého rozhrania v rozsahu API
Nadstavba pri API - import z eBird-u
Mladšia generácia a technicky náročná a vyspelá časť užívateľov však nedala dopustiť na svetovú mobilnú aplikáciu eBird.
Preskúmali sme eBird. Vynikajúce spracovanie a používanie. Rudo Jureček napísal podrobnú správu čo to všetko dokáže a ako to pracuje.
Pri eBird si musíme uvedomiť dva zaujímavé fakty - eBird poskytuje dáta cez ich API rozhranie a druhou nezmeniteľnou skutočnosťou je, že pozorovatelia vtákov, ktorí navštevujú našu krajinu píšu do eBird a budú písať, pretože túto aplikáciu používajú pri svojich cestách po svete. Aj keby sme urobili maximum, priblížili sa ku vlastnostiam mobilnej aplikácie eBird, vždy bude časť pozorovaní zo Slovenska len v eBird databáze.
Naprogramovali sme programy, ktoré každú noc stiahnu cez eBird API rozhranie dáta zapísané pozorovateľmi zo Slovenska. Stiahnutým dátam sa pri importe spárujú pozorovatelia eBird, ktorý sú aj užívateľmi databázy AvesSymfónia. Všetkým ostatným priradí univerzálneho eBird používateľa a pozorovateľ ostane reálny človek ktorý to zapísal.
EBird má svoje obmedzenia a tieto sme vyriešili príkazmi aby sa počas importu do AvesSymfónia pridali zaujímavé informácie schované dohodnutým spôsobom do poznámok ku lokalite a do poznámok ku druhu.
- samostatná stránka len na túto tému Návod je tu.
Keďže import z eBird prebieha cez to isté API rozhranie ako dáta z prvej mobilnej aplikácie SOS/BL Slovakia, tak finty na obohatenie eBird záznamov cez poznámky ku druhu a ku lokalite sa dajú elegantne použiť úplne rovnako aj v prvej mobilnej aplikácii!
Nadstavba pri API - import z excel tabuľky cez pridaj.nasesk.info
Na import dát napísaných do excel súboru. Pripravili sme vzorový excel. Excel import sme obohatili o možnosť importovať kontroly hniezd a kontroly párov zapísaný cez aplikáciu JASON (viď nižšie). To je užitočné aj pre všeobecné použitie.
Pripravujeme úpravu vzorového excel súboru - aktualizácia zoznamu druhov vtákov podľa IOC zoznamu.
Nadstavba pri API - import z JASON aplikácie, kontroly hniezd cez pridaj.nasesk.info
Dáta z mobilnej aplikácie JASON - kontroly hniezd, importujeme ako kontroly najmä z oblasti Záhoria - skupina Hniezda Záhorie intenzívne pracuje. Sú tri polia, ktoré AvesSymfónia rieši odlišne.
- Počasie
- Pohlavie
- Vek
Tieto odlišnosti vedú k dvom riešeniam. Doplniť do API rozhrania potrebné položky kde budú uložené informácie a pri importe konvertovať odlišnosti.
Údaje z Aves monitoring trvalých monitorovacích lokalít jednotlivých metód
Dáta z mobilnej aplikácie importujeme tak ako kontroly hniezd z aplikácie JASON. V dohodnutých intervaloch v dávkach.
Polia z mobilnej aplikácie AVES vyžadujú rozšírení polí pre API rozhranie AvesSymfónia.
Polia témy pohlavie:
Poznámka: immature alebo subadult považujem za synonymum, preto v AvesSymfónia máme polia pre subadultov
mobilná aplikácia AVES a JASON | AvesSymfónia | Riešenie pri importe z mobilnej aplikácie AVES | Riešenie pri importe z mobilnej aplikácie JASON |
---|---|---|---|
samec | count type: integer(3) unsigned 1, number_male type: integer(4) | Celkovy_pocet do count a number_male, ak je vyplneny pocet_samcov tak prepisat hodnotou odtial do number_male | Celkový počet do count a tiež do number_male |
samica | count type: integer(3) unsigned 1, number_female type: integer(4) | Celkovy_pocet do count a number_female, ak je vyplneny pocet_samic tak hodnotu odtial do number_female | Celkový počet do count a tiež do number_female |
pár ad. | count type: integer(3) unsigned 1, number_femaleadd type integer(4), number_maleadd type integer(4) | Celkovy_pocet vložiť count, ak je vyplneny pocet_samcov tak hodnotu odtial do number_maleadd, ak je vyplnený počet samíc tak odtiaľ hodnotu do number_femaleadd, "pár ad." pridať do poznámky ku druhu | Celkový počet do count, nič sa nedá iné robiť, len "pár ad." pridať do poznámky ku druhu |
pár ad.F imm.M | count type: integer(3) unsigned 1, number_femaleadd type integer(4), number_maleimm type integer(4) | Celkovy_pocet do count, ak je vyplnený počet samíc tak hodnotu do number_female a number_femaleadd, ak je vyplnený počet samcov tak hodnotu odtiaľ do number_male a number_malesad, pridať do poznámky ku druhu "pár ad.F imm.M" | Celkový počet do count, nič sa nedá robiť, len pridať do poznámky ku druhu "pár ad.F imm.M" |
pár imm.F add.M | count type: integer(3) unsigned 1, number_femalesad type integer(4), number_femalesad type integer(4) | Celkovy_pocet do count, ak je vyplnený pocet_samcov tak hodnotu do number_male a number_maleadd, ak je vyplnený počet samíc tak hodnotu do number_female a number_femalesad, pridať do poznámky ku druhu "pár imm.F add.M" | Celkový počet do count, nič sa nedá robiť, len pridať do poznámky ku druhu "pár imm.F add.M" |
pár imm. | count type: integer(3) unsigned 1, number_femalesad type integer(4), number_malesad type integer(4) | Celkovy_pocet vložiť count, ak je vyplneny pocet_samcov tak hodnotu odtial do number_male a number_sad, ak je vyplnený pocet_samic tak hodnotu do number_female a number_femalesad, pridať do poznámky ku druhu "pár imm." | Celkový počet do count, nič sa nedá robiť, len pridať do poznámky ku druhu "pár imm." |
samec+samica | count type: integer(3) unsigned 1, number_female type integer(4), number_males type integer(4) | Celkovy_pocet vložiť count, ak je vyplneny pocet_samcov tak hodnotu odtial do number_male, ak je vyplnený pocet_samic tak do number_female, pridať do poznámky ku druhu "samec+samica" | Celkový počet do count, nič sa nedá robiť, len pridať do poznámky ku druhu "samec+samica" |
Do API treba pridať tieto polia:
- number_male type integer(4), number_female type integer(4), number_maleadd type integer(4), number_femaleadd type integer (4), number_malesad type integer(4), number_femalesad type integer(4)
Polia témy vek:
mobilná aplikácia AVES a JASON | AvesSymfónia | Riešenie pri importe z mobilnej aplikácie AVES | Riešenie pri importe z mobilnej aplikácie JASON |
---|---|---|---|
pull. | count type: integer(3) unsigned 1, number_pull type integer(4), number_male type: integer(4), number_female type: integer(4) | Celkovy_počet do count a do number_pull, ak je vyplnený počet samcov tak hodnotu do number_male, ak je vyplnený počet samíc tak do number_female | Celkový počet do count a do number_pull |
juv. | count type: integer(3) unsigned 1, number_juv, number_femalejuv type: integer(4), number_malejuv | Celkovy_pocet do count, ak je vyplneny pocet_samic tak hodnotu odtial do number_female a number_femalejuv ak je počet samcov number_male a number_malejuv | Celkový počet do count a tiež do number_juv |
imm. | count type: integer(3) unsigned 1, number_imm | Celkovy_pocet vložiť do count a do number_imm, | Celkový počet do count a do number_imm |
subad. | count type: integer(3) unsigned 1, number_femaleadd type integer(4), number_malesad type integer(4) | Celkovy_pocet do count a do number_sad ak je vyplnený počet samíc tak hodnotu do number_female aj number_femalesad, ak je vyplnený počet samcov tak hodnotu odtiaľ do number_male aj number_malesad | Celkový počet do count a do number_sad |
ad. | count type: integer(3) unsigned 1, number_add, number_femaleadd type integer(4), number_femaleadd type integer(4) | Celkovy_pocet do count a do number_add, ak je vyplnený pocet_samcov tak hodnotu do number_male aj number_maleadd ak je vyplnený počet samíc tak hodnotu odtiaľ do number_female aj number_femaleadd | Celkový počet do count a do number_add |
nymfa | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
kukla | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
imágo | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
násada | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
ad.+juv. | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
ad.+násada | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
imágo+nymfa | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
ad.+imm. | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
larva | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
vajíčka | count type: integer(3) unsigned 1, | Celkovy_pocet vložiť count, pridať do poznámky ku druhu | Celkový počet do count, pridať do poznámky ku druhu |
Treba vytvoriť polia: number_pull, number_juv, number_imm, number_malepull, number_femalepull,
Ako dostať dáta z mobilnej aplikácie
Podmienky importu:
- schválené koordinátorom
- foto ako linky na úložisko fotografií
- počas behu projektu Aves monitoring 2023 zmeny cez mobilnú aplikáciu, potom v Aves-Symfónia
- zabezpečiť zmeny po predchádzajúcom importe
Postupnosť krokov:
Metódy ako modul
- ✅ Metódy pridať v Aves Symfónia do modulov
- ✅Zoznam modulov z Aves Symfónia zrkadliť do API
- ⚒ Pri importe dát z aplikácie zameniť metódu monitoringu za modul_id
TML ako skupiny predvolených lokalít, TMP ako predvolené lokality
- ✅ zoznam TML ako ich evidujeme v aplikácii AVES (nie KIMS TML, na to bude párovacia tabuľka) založiť ako skupiny predvolených lokalít (Lkplocgrp) v Aves Symfónia
- ✅ zoznam TMP ako ich evidujeme v aplikácii AVES založiť pod jednotlivé skupiny TML (pod správne TML skupiny predvolených lokalít) založiť do predvolených lokalít
- ✅ zoznam predvolených lokalít a skupín lokalít zrkadliť na API
- ⚒ Pri importe dát namiesto Code dať lkplocality_id z predvolených, o stratu Code sa netreba obávať, už je zachytený v názve predvolenej lokality
UNIformulár od mapovateľov bude viazaný na TMP predvolené lokality a súčasne na vždy jeden zoologický záznam (lokalitná časť zoologického záznamu, ku ktorému v prostredí Aves Symfónia viažeme druhové záznamy ako skupinu záznamov fyzicky v inej tabuľke, vzťah one:many)
- na úrovni API rozšírime polia zoologického záznamu o nové pole "ID_zAPP_UniForm_TMP" ako je v aplikácii AVES, zoznam UNIformulárov z prostredia Aves Symfónia nebudeme zrkadliť v API, preto nebudeme mať k dispozícii žiadne ID ale importujeme z aplikácie tabuľky súvisiace z UNI formulárom tak ako je v aplikácii AVES, teda aj s položkou "ID_zAPP_UniForm_TMP" a nenahrádzame vlastným prepojovaním
- pri importe ešte v úrovni API využijeme zrkadlenie TML a TMP a doplname príslušné id už na tejto úrovni importu
- keďže nezrkadlíme žiadny zoznam UNI formulárov tak aj v prostredí Aves Symfónia takisto rozširujeme lokalitnú časť záznamu (zoology) o toto nové pole ("ID_zAPP_UniForm_TMP") a importujeme z prostredia API tak ako sú už tu zachytené vzťahy
UNIformulár ako výsledok druhostupňového hodnotenia
Pri importe z aplikácie AVES bude previazaný z TML zo skupiny predvolených lokalít
Voľné faunistické údaje
Ako dostať dáta z mobilnej aplikácie
Voľné faunistické údaje nemajú políčko lokalita, iba súradnice.
- zoskupiť 100m do jednej skupiny a do názvu dať info z katastra alebo OSM
- ako voľba užívateľa?
- námety rozpísané tu Rozšírenie možností zápisu pre mobilné aplikácie EBird, Vtaky.sk, AVES