diff --git a/inst/nl_be.dic b/inst/nl_be.dic index 684f4c32..3621eff0 100644 --- a/inst/nl_be.dic +++ b/inst/nl_be.dic @@ -13,6 +13,7 @@ Akkervogelgemeenschappen Amersfoord Avimap +Avimap-versie BO's BSCX00 Bosonderzoek @@ -44,6 +45,7 @@ Langeraert MAS-data MBAG Matkop +NOVN00 Natuur- OL OLA @@ -65,6 +67,7 @@ SBP’s SOVON Sovon Surface +Telpunt- Telrondes Terrain Union @@ -135,6 +138,7 @@ multipolygon names occurrence openness +opvalllende perceelsgrootte perimeters.gpkg periods @@ -188,6 +192,7 @@ version viewshed visibility vlaanderen +waarneminglocaties wikipedia within x- diff --git a/source/markdown/data_controle_2024.Rmd b/source/markdown/data_controle_2024.Rmd index 63821692..ca3886d4 100644 --- a/source/markdown/data_controle_2024.Rmd +++ b/source/markdown/data_controle_2024.Rmd @@ -62,13 +62,13 @@ In deze markdown controleren we ... We doen dit in dit rapport voor de data van 2018-2024. -# Data preparatie pipeline +# Controle data preparatie pipeline {#controle-pipeline} ## Amersfoord naar Lambert coördinaten (crs_pipeline) In de eerste stap worden Amersfoord coördinaten naar Lambert coördinaten omgezet. Dit gebeurt via een functie die op verschillende datasets goed getest is. -## Selectie punten MBAG steekproefkader (select_sampled_points) +## Selectie punten MBAG steekproefkader (select_sampled_points) {#steekproefkader} In de tweede stap selecteren we de punten uit de totale dataset die tot het MBAG steekproefkader behoren. Dit gebeurt via een "inner join" wat wil zeggen dat we kunnen nagaan of telpunten uit het steekproefkader niet bezocht zijn (bewust of onbewust). @@ -125,7 +125,7 @@ Notities manuele controle Johannes: - Pl_45612.2: OK geen privé weg maar langs bedrijf -## Selecteer data binnen de telperiodes (select_time_periods) +## Selecteer data binnen de telperiodes (select_time_periods) {#time-periods} We selecteren data binnen de correcte telperiodes. Er zijn 4 telrondes: @@ -558,8 +558,9 @@ leaflet_map ``` Het ziet ernaar uit dat Pl_49572 dezelfde naam heeft voor 2 locaties. -In plaats van: Pl_25053.16 (x: 50279.09, y: 210998) +In plaats van: Pl_25053.16 (x: 50279.09, y: 210998). Deze afstanden zijn dus wel ok, maar het label van het telpunt moet aangepast worden. +De afwezigheid van dit telpunt werd opgemerkt in Subsectie \@ref(steekproefkader). **Oostelijke leemstreek** @@ -927,7 +928,8 @@ outside_observations_new %>% ``` Het ziet ernaar uit dat Pl_49572 dezelfde naam heeft voor 2 locaties. -In plaats van: Pl_25053.16 (x: 50279.09, y: 210998) +In plaats van: Pl_25053.16 (x: 50279.09, y: 210998). +De afwezigheid van dit telpunt werd opgemerkt in Subsectie \@ref(steekproefkader). **Oostelijke leemstreek** @@ -1263,7 +1265,7 @@ roofvogels_f() mas_data_full <- tar_read("mas_data_full", store = targets_store) ``` -Zijn alle punten zijn nog altijd aanwezig? +Zijn alle telpunten zijn nog altijd aanwezig? ```{r} # Show number of locations per stratum @@ -1282,10 +1284,112 @@ Ja. # Controle finale dataset -... +Nadat we de pipeline hebben doorlopen bekomen we de finale dataset. +Ook hierop doen we enkele controlestappen. +Zijn alle soorten correct (bv. Blauwe Pauw i.p.v. Blauwe Reiger)? Zijn er opvallend veel individuen opgegeven (bv. 300 i.p.v. 30)? ... + +```{r} +mas_data_clean <- tar_read("mas_data_clean", store = targets_store) +``` + +## Telpunt- en waarneminglocaties + +Zie Sectie \@ref(controle-pipeline). + +## Timing observaties + +De data bevatten geen info over precieze tijdstippen van tellingen, enkel datums. +De datums werden gecontroleerd in Subsectie \@ref(time-periods). + +## Aantal individuen + +In sommige gevallen worden meer dan 50 individuen gezien. + +```{r} +mas_data_clean %>% + st_drop_geometry() %>% + filter(aantal >= 50) %>% + count(aantal, name = "aantal keer in dataset") %>% + rename("aantal vogels" = aantal) %>% + kable() +``` + +Een opvalllende is ook een uitschieter van 3000 individuen. +We zien dat de meeste waarnemingen wel gaan over soorten die in groep voorkomen, zoals Spreeuw, Grauwe Gans, Roek, Houtduif ... + +```{r} +mas_data_clean %>% + st_drop_geometry() %>% + select(aantal, naam, plotnaam, waarnemer, datum) %>% + filter(aantal >= 50) %>% + arrange(aantal) %>% + kable() +``` + +We schrijven deze waarnemingen weg zodat ze toch gecontroleerd kunnen worden. + +```{r} +mas_data_clean %>% + filter(aantal >= 50) %>% + arrange(aantal) %>% + write_csv(file.path(mbag_dir, "output", "data_controle", + "waarnemingen_met_hoge_aantallen.csv")) +``` -> zie werkwijze pilootproject +## Soortnamen + +De volgende soorten werden gezien. +Deze lijst moet gecontroleerd worden op vreemde namen die mogelijks fout zijn. + +```{r} +mas_data_clean %>% + st_drop_geometry() %>% + count(naam, name = "aantal waarnemingen") %>% + arrange(naam) %>% + kable() +``` + +## Broedcodes + +Broedcodes zijn ook belangrijk voor verdere data analyse. + +Communicatie Simon Desmet: + +*In de Avimap-versie voor Android kan een teller enkel het aantal wijzigen als de vogel broedcode 0 krijgt, maar met een iPhone is dat wel mogelijk bij vogels die met een hogere broedcode dan 0 ingevoerd werden. Sommige tellers hebben dit blijkbaar effectief gedaan, hoewel wij op voorhand gevraagd hadden dit niet te doen.* + +Het is echter moeilijk om deze te controleren. +Wel kunnen we de aantallen visualiseren. + +```{r} +mas_data_clean %>% + st_drop_geometry() %>% + count(wrntype, wrntype_omschrijving, name = "n_obs") %>% + rename( + "broedcode" = wrntype, + "omschrijving" = wrntype_omschrijving, + ) %>% + kable() +``` + +**Broedcode 1-5** + +Er is inderdaad een aantal keer hogere aantallen dan 1 ingevoerd bij broedcodes 1-5. + +```{r} +mas_data_clean %>% + st_drop_geometry() %>% + filter(aantal > 1, + wrntype > 0) %>% + count(wrntype, aantal, name = "aantal keer in dataset") %>% + rename( + "broedcode" = "wrntype", + "aantal vogels" = aantal) %>% + kable() +``` # Controle data publicatie +De finale dataset wordt verder in de pipeline klaar gemaakt voor publicatie op GBIF. +We controleren deze stappen voor data publicatie. + ... diff --git a/source/targets/data_preparation/_targets/meta/meta b/source/targets/data_preparation/_targets/meta/meta index 0152952a..1d7c2d87 100644 --- a/source/targets/data_preparation/_targets/meta/meta +++ b/source/targets/data_preparation/_targets/meta/meta @@ -1,5 +1,5 @@ name|type|data|command|depend|seed|path|time|size|bytes|format|repository|iteration|parent|children|seconds|warnings|error -.Random.seed|object|3aa74d6d6c528f99||||||||||||||| +.Random.seed|object|6c87693f442ee2d9||||||||||||||| add_predator_variable|pattern|30289b49cf6fe61b|7f80da6da30be403||-1919973047||||1047848|qs|local|list||add_predator_variable_80e9cadf25bbe03f*add_predator_variable_c431a571df92f158*add_predator_variable_83ebbeb707d6d411|0.1|| add_predator_variable_39059f3c53f47f4b|branch|6c937055c3fcd832|7f80da6da30be403|dbbd857a814196a3|-1128578533||t19942.3123521215s|45dd9cbb207ba273|2658580|qs|local|list|add_predator_variable||0.14|| add_predator_variable_80e9cadf25bbe03f|branch|b92f234cb6478d2c|7f80da6da30be403|c422b74708b01902|1371437452||t19943.5274358193s|29baaba1feb1aab7|1047848|qs|local|list|add_predator_variable||0.1|| @@ -34,14 +34,14 @@ mas_counts_sovon_files_6733f8687ec63581|branch|831977f95150d0f5|d2fc191cb33d8683 mas_counts_sovon_files_9614b5c06a1d9488|branch|e2ce90957c9dbd3b|d2fc191cb33d8683|2c530c1562a7fbd1|1078798271|C:/R/git_repositories/mbag-mas/source/targets/data_preparation/data/2025/20240805_qgis_export_sovon_wfs_2025.geojson|t19940.5103537778s|149c11230d07a1dd|50027389|file|local|vector|mas_counts_sovon_files||0|| mas_counts_sovon_files_efd70fac45d19b0d|branch|cf87eeaff24d23bb|d2fc191cb33d8683|2c530c1562a7fbd1|570686772|C:/R/git_repositories/mbag-mas/source/targets/data_preparation/data/2018_2022/20240424_qgis_export_sovon_wfs_2018_2022.geojson|t19837.3739489539s|58109b1a3ec8817b|32800565|file|local|vector|mas_counts_sovon_files||0|| mas_counts_sovon_files_files|stem|cb946689d55a2995|5c0c70d7920d11b4|2c530c1562a7fbd1|1663214924||t19940.6205023349s|0ce3c220c282aef6|192|rds|local|list||mas_counts_sovon_files_files_6b553758911bce46*mas_counts_sovon_files_files_2572d1be005a0c97*mas_counts_sovon_files_files_9db9b91e29d40fdc|0|| -mas_data_clean|stem|598f4cbbb353f9c0|3fc9eef94244aa1d|403f071dfee77c38|-1942276229||t19943.5274495189s|ad8619538621a08f|4860642|qs|local|vector|||0.1|| +mas_data_clean|stem|598f4cbbb353f9c0|3fc9eef94244aa1d|3a42a738db7dea10|-1942276229||t19943.6205262704s|ad8619538621a08f|4860642|qs|local|vector|||0.19|| mas_data_full|stem|96353357f5e29289|1c0319408b035a8c|c266fcda50aedae6|693198966||t19943.5274426707s|7029a33f683a0c37|4865789|qs|local|vector|||0.21|| mbag_dir|object|6f7a62ceac79d40c||||||||||||||| path_to_samples|function|13303b230b24fb97||||||||||||||| paths_to_counts_sovon|function|a381ae222a6f3fde||||||||||||||| predatoren_f|function|e0a123d0ad124cae||||||||||||||| process_double_counted_data|function|54bad175e5754ed4||||||||||||||| -remove_columns|function|53a0573601bb96b9||||||||||||||| +remove_columns|function|55e5849d4f251e49||||||||||||||| remove_double_counts|pattern|0696bbc27e60252c|b2201c6fccf902b4||-48525810||||4866325|qs|local|list||remove_double_counts_cb0a03f97a3c6452*remove_double_counts_f656ca7c8a8eeb02*remove_double_counts_71fab235372c4037|0.96|| remove_double_counts_102e9280bff012e1|branch|7bb61116bc369d64|b2201c6fccf902b4|7434c64cc290ddf2|-1812123624||t19940.6079538963s|8ac7492402bd138c|1035049|qs|local|list|remove_double_counts||0.26|| remove_double_counts_13d093d912db7c9f|branch|df098a646b0b7762|b2201c6fccf902b4|dfb1a792e43e1948|894457210||t19942.3123411777s|05dbc5a984531d60|2625670|qs|local|list|remove_double_counts||0.42||