Commit d38ea91c authored by Roelofsen, Hans's avatar Roelofsen, Hans
Browse files

Merge branch 'workingHans' into 'master'

Working hans

See merge request !9
parents 6499858e 284ec736
import pandas as pd
import os
import pathlib
import sys
sys.path.append('..')
class TabularSpecies:
"""
Class holding pandas data frame and helper dicts on all MNP species
"""
def __init__(self):
filepath = pathlib.Path(__file__)
# De volledige Species tabel als Pandas dataframe
benb_dir = os.path.dirname(os.path.dirname(filepath))
self.df = pd.read_csv(os.path.join(benb_dir, r'resources\mnp_species.csv'), sep=',', comment='#')
# Dictionaries tussen code, lokale naam, wetenschappelijke naam
self.code2local = dict(zip(self.df.Species_code, self.df.Local_name))
self.local2code = dict(zip(self.df.Local_name, self.df.Species_code))
self.code2scientific = dict(zip(self.df.Species_code, self.df.Scientific_name))
self.scientific2code = dict(zip(self.df.Scientific_name, self.df.Species_code))
self.local2scientific = dict(zip(self.df.Local_name, self.df.Scientific_name))
self.scientific2local = dict(zip(self.df.Scientific_name, self.df.Local_name))
self.code2taxon = dict(zip(self.df.Species_code, self.df.taxon))
# Dictionaries to self, is usefull sometimes. Trust me...
self.local2local = dict(zip(self.df.Local_name, self.df.Local_name))
self.code2code = dict(zip(self.df.Species_code, self.df.Species_code))
self.scientific2scientific = dict(zip(self.df.Scientific_name, self.df.Scientific_name))
# Dict between species code and boolean species list
self.code2sel468 = dict(zip(self.df.Species_code, self.df.sel468.map({1: True, 0: False})))
self.code2selall = dict(zip(self.df.Species_code, self.df.selall.map({1: True, 0: False})))
self.code2sel281 = dict(zip(self.df.Species_code, self.df.sel281.map({1: True, 0: False})))
self.code2sel146 = dict(zip(self.df.Species_code, self.df.sel146.map({1: True, 0: False})))
class IndividualSpecies:
"""
Class for holding properties of a single species instance.
Hans Roelofsen, WEnR, 12 jan 2022
"""
def __init__(self, x):
"""
Initiate for a species.
:param x: species code, local name or scientific name
"""
species_tab = TabularSpecies()
species_identifiers_full = ['Species_code', 'Local_name', 'Scientific_name']
species_identifiers_brief = ['code', 'local', 'scientific']
try:
# Determine if X is a species code, local name, scientific name or not-existing
isin = [x in getattr(species_tab.df, col).values for col
in species_identifiers_full].index(True)
typer = species_identifiers_brief[isin]
except ValueError:
print('{} is not a recognized species'.format(x))
raise
self.taxondict = {'S02': 'V', 'S06': 'E', 'S09': 'P'}
# Set all relevant attributes
self.code = getattr(species_tab, '{}2code'.format(typer))[x] # Species code
self.local = getattr(species_tab, '{}2local'.format(typer))[x] # Species local name
self.scientific = getattr(species_tab, '{}2scientific'.format(typer))[x] # Species Scientific name
self.taxon = self.taxondict[self.code[:3]]
self.sel281 = species_tab.code2sel281[self.code] # boolean, species is part of 281 selection?
self.sel468 = species_tab.code2sel468[self.code] # idem for 468 selection
self.sel146 = species_tab.code2sel146[self.code] # idem foo 146 selection
self.selall = species_tab.code2selall[self.code] # catch all
self.groupinfo = '146:{0} - 281:{1} - 468:{2}'.format(self.sel146, self.sel281, self.sel468)
\ No newline at end of file
"""
python program for quering MNP draagkracht file
Hans Roelofsen, jan 2022
"""
import pandas as pd
import os
from fix_bt import fix_bt
from snl_beheertypen import get_snl_beheertypen_list
from snl_beheertypen import btcode2description
from Classes import Species as species
# from Classes.Species import TabSpeciesInstance as mnps
species_table = species.TabularSpecies()
class DraagKracht:
def __init__(self):
self.dkdir = r'W:\PROJECTS\QMAR\MNP-SNL-ParameterSet\Parameters_v05_2021_04_08'
self.defaultdk = r'03_MNP_versie5_par_density_factors_BT2021_v3.csv'
self.snl_bt = get_snl_beheertypen_list(of='full')
self.use_default = True
self.bt_column = 'Land_type_code'
self.dk = None
def read_dk(self, dk_file='default', bt_column=None):
"""
Read a draagkrachten file
:param dk_file: name of a draagrkachten file
:param bt_column: name of column in non-default file with BT codes
:return: pd dataframe
"""
if dk_file != 'default':
self.use_default = False
self.bt_column = bt_column
target = dk_file
else:
target = self.defaultdk
setattr(self, "dk", pd.read_csv(os.path.join(self.dkdir, target)))
def query4bt(self, bt_lst: list, of, sp_sel='281'):
"""
query the draagkrachten for a specific beheertype
:param bt_lst: beheertype code
:param of: output format
:param sp_sel: use which species list? 1018, 468 or 281?
:return: str to stdout
"""
for bt in bt_lst:
query = '({0} in {1}) and selection == True'.format(self.bt_column, [fix_bt(bt, as_mnp=True)])
sel = self.dk.assign(selection=self.dk.Species_code.map(getattr(species_table, 'code2sel{}'.format(sp_sel)))) \
.query(query)
counts = sel.Species_code.map(species_table.code2taxon).value_counts()
print('{0}-{1}: {2} vogel, {3} vlinder {4} plant. {5} total (out of {6}).'\
.format(bt, btcode2description(bt), counts.get('V', 0), counts.get('E', 0), counts.get('P', 0),
sel.shape[0], sp_sel if sp_sel != 'all' else '1081'))
if of == 'full':
print(sel.assign(local=sel.Species_code.map(species_table.code2local),
taxon=sel.Species_code.map(species_table.code2taxon))\
.sort_values(by=['taxon', 'local']) \
.loc[:, ['Species_code', 'taxon', 'Land_type_quality', 'local']] \
.to_csv(sep='\t', index=False, header=False))
def query4species(self, species_lst: list, of):
"""
query draagkrachten for one or more species
:param species_lst:
:param of:
:return:
"""
for x in species_lst:
sp = species.IndividualSpecies(x)
query = 'Species_code in ["{0}"]'.format(sp.code)
sel = self.dk.query(query)
print("{0} ({1}-{2}. Listed in: {3}): {4} beheertypen".format(sp.local, sp.scientific, sp.code,
sp.groupinfo, sel.shape[0]))
if of == 'full':
print(sel.assign(desc=getattr(sel, self.bt_column).map(btcode2description)) \
.loc[:, ['Land_type_quality', self.bt_column, 'desc']] \
.sort_values(by=self.bt_column) \
.to_csv(sep='\t', index=False, header=False))
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--qbt', nargs='+', type=str)
parser.add_argument('--qsp', nargs='+', type=str)
parser.add_argument('--of', choices=['full', 'sparse'], default='full')
parser.add_argument('--sp_list', choices=['281', '468', '146', 'all'], default='281', type=str)
args = parser.parse_args()
hans = DraagKracht()
hans.read_dk()
if args.qbt:
hans.query4bt(bt_lst=args.qbt, of=args.of, sp_sel=args.sp_list)
if args.qsp:
hans.query4species(species_lst=args.qsp, of=args.of)
d = {'S02': 'V',
'S06': 'E',
'S09': 'P'}
full = pd.read_csv(r'w:\PROJECTS\QMAR\MNP-SNL-ParameterSet\Parameters_v06_2019_12_09\01_Base_species_name.csv', sep=',', comment='#')
full.set_index(keys='Species_code', drop=False, inplace=True)
full['taxon'] = full.index.str.slice(0,3).map(d)
sel468 = pd.read_csv(r'W:\PROJECTS\QMAR\MNP-SNL-ParameterSet\Parameters_v05_2021_04_08\09_MNP_versie4_Group_Species_valid model_468.csv', sep=',', index_col='Species_code')
sel281 = pd.read_csv(r'W:\PROJECTS\QMAR\MNP-SNL-ParameterSet\Parameters_v05_2021_04_08\09_MNP_versie4_Species_group_valid_model_280.csv', sep=',', index_col='Species_code')
sel146 = pd.read_csv(r'W:\PROJECTS\QMAR\MNP-SNL-ParameterSet\Parameters_v06_2019_12_09\09_MNP_versie4_Species_group_valid_model_typisch_146.csv', sep=',', index_col='Species_code')
in468 = full.index.intersection(sel468.index)
in281 = full.index.intersection(sel281.index)
in146 = full.index.intersection(sel146.index)
full.loc[:, 'sel468'] = 0
full.loc[in468, 'sel468'] = 1
full.loc[:, 'sel281'] = 0
full.loc[in281, 'sel281'] = 1
full.loc[:, 'sel146'] = 0
full.loc[in146, 'sel146'] = 1
full.loc[:, 'sel1018'] = 1
full.loc[:, 'selall'] = 1
full.to_clipboard(sep=',', index=False)
import numbers import numbers
def fix_bt(code_in, as_mnp=False):
def fix_bt(code_in, as_mnp=False, verbose=False, strict=True):
""" """
Parser for Beheertype codes to repair abbreviated codes and/or MNP extension Parser for Beheertype codes to repair abbreviated codes and/or MNP extension
eg. 02.01 --> N02.01 if as_mnp==False eg. 02.01 --> N02.01 if as_mnp==False
...@@ -17,44 +18,61 @@ def fix_bt(code_in, as_mnp=False): ...@@ -17,44 +18,61 @@ def fix_bt(code_in, as_mnp=False):
N04.02.00 is equivalent to N04.02 N04.02.00 is equivalent to N04.02
:param code_in: beheertypecode in any format :param code_in: beheertypecode in any format
:param as_mnp: return MNP style beheertypecode, default=False :param as_mnp: return MNP style beheertypecode, default=False
:param verbose: verbose feedback
:param strict: raise error if bt code is unexpected
:return: beheertypecode :return: beheertypecode
""" """
if verbose:
print('from {}'.format(code_in), end=' ')
if isinstance(code_in, numbers.Number): if isinstance(code_in, numbers.Number):
code_in = str(code_in) code_in = str(code_in)
# Identify parts of code # Identify parts of code
parts = code_in.split(".") parts = code_in.split(".")
if len(parts) == 1: if len(parts) == 1:
raise AssertionError("Unexpected BT code: {}".format(code_in)) if strict:
raise AssertionError("1. Unexpected BT code: {}".format(code_in))
else:
return None
elif len(parts) == 2: elif len(parts) == 2:
top, sub = parts top, sub = parts
neer = None neer = None
elif len(parts) == 3: elif len(parts) == 3:
top, sub, neer = parts top, sub, neer = parts
else: else:
raise AssertionError("Unexpected BT code: {}".format(code_in)) if strict:
raise AssertionError("2. Unexpected BT code: {}".format(code_in))
else:
return None
# Verify TOP and add "N" is required # Verify TOP and add "N" is required
if top.isdigit(): assert top[0].upper() in ['N', 'W', 'S', 'T', 'A', 'L'], "3. Unexpected BT Code: {}".format(code_in)
top = "N{0}".format(top.zfill(2)) if top[0].islower():
else: top = top.capitalize()
assert top[0].isupper(), "Unexpected BT Code format: {}".format(code_in) assert top[1].isdigit(), '3. Unexpected BT code: {}'.format(code_in)
assert top[2].isdigit(), '3. Unexpected BT code: {}'.format(code_in)
assert len(top) == 3, "3. Unexpected BT Code: {}".format(code_in)
# Verify SUB # Verify SUB
assert sub.isdigit and len(sub) == 2, "Unexpected BT Code format: {}".format(code_in) assert sub.isdigit and len(sub) == 2, "4. Unexpected BT Code: {}".format(code_in)
# Verify NEER and check if it is neergeschaald or not # Verify NEER and check if it is neergeschaald or not
keep_neer = False keep_neer = False
if neer: if neer:
assert neer.isdigit and len(neer) == 2, "Unexpected BT Code format: {}".format(code_in) assert neer.isdigit and len(neer) == 2, "5. Unexpected BT Code: {}".format(code_in)
if int(neer) > 0: if int(neer) > 0:
keep_neer = True keep_neer = True
# Construct output # Construct output
head = "{}.{}".format(top, sub) head = "{}.{}".format(top, sub)
if keep_neer: if keep_neer:
return "{}.{}".format(head, neer) output = "{}.{}".format(head, neer)
elif as_mnp: elif as_mnp:
return "{}.00".format(head) output = "{}.00".format(head)
else: else:
return head output = head
if verbose:
print('to {}'.format(output))
return output
\ No newline at end of file
"""
Module to read MNP species CSV tab and provide several helper dictionaries
"""
import pandas as pd
import os
import pathlib
filepath = pathlib.Path(__file__)
# De volledige Species tabel als Pandas dataframe
species_tab = pd.read_csv(os.path.join(os.path.dirname(filepath), r'resources\mnp_species.csv'), sep=',', comment='#')
# Dictionaries tussen code, lokale naam, wetenschappelijke naam
code2local = dict(zip(species_tab.Species_code, species_tab.Local_name))
local2code = dict(zip(species_tab.Local_name, species_tab.Species_code))
code2scientific = dict(zip(species_tab.Species_code, species_tab.Scientific_name))
scientific2code = dict(zip(species_tab.Scientific_name, species_tab.Species_code))
local2scientific = dict(zip(species_tab.Local_name, species_tab.Scientific_name))
scientific2local = dict(zip(species_tab.Scientific_name, species_tab.Local_name))
code2taxon = dict(zip(species_tab.Species_code, species_tab.taxon))
# Dictionaries to self, is usefull sometimes. Trust me...
local2local = dict(zip(species_tab.Local_name, species_tab.Local_name))
code2code = dict(zip(species_tab.Species_code, species_tab.Species_code))
scientific2scientific = dict(zip(species_tab.Scientific_name, species_tab.Scientific_name))
# Dict between species code and boolean species list
code2sel468 = dict(zip(species_tab.Species_code, species_tab.sel468.map({1: True, 0: False})))
code2sel281 = dict(zip(species_tab.Species_code, species_tab.sel281.map({1: True, 0: False})))
code2sel146 = dict(zip(species_tab.Species_code, species_tab.sel146.map({1: True, 0: False})))
code2selall = dict(zip(species_tab.Species_code, species_tab.selall.map({1: True, 0: False})))
# MNP Species tabel. Gebaseerd op w:\PROJECTS\qmar\MNP-SNL-ParameterSet\Parameters_v06_2019_12_09\08_MNP_versie4_par_taxonomic_group.csv en w:\PROJECTS\qmar\MNP-SNL-ParameterSet\Parameters_v06_2019_12_09\09_MNP_versie4_Group_Species_valid model_468.csv # MNP Species tabel. Gebaseerd op w:\PROJECTS\qmar\MNP-SNL-ParameterSet\Parameters_v06_2019_12_09\08_MNP_versie4_par_taxonomic_group.csv en W:\PROJECTS\QMAR\MNP-SNL-ParameterSet\Parameters_v06_2019_12_09\01_Base_species_name.csv
# Door: Hans Roelofsen, 18-May-2021 10:36 # Door: Hans Roelofsen, 12/Jan/2022 12:00
Species_code,Scientific_name,Local_name,tax_group Species_code,Scientific_name,Local_name,taxon,sel468,sel281,sel146,sel1018,selall
S02000070,Tachybaptus ruficollis,Dodaars,Vertebraten S02000020,Gavia stellata,Roodkeelduiker,V,0,0,0,1,1
S02000120,Podiceps nigricollis,Geoorde fuut,Vertebraten S02000030,Gavia arctica ssp. arctica,Parelduiker,V,0,0,0,1,1
S02000950,Botaurus stellaris,Roerdomp,Vertebraten S02000070,Tachybaptus ruficollis,Dodaars,V,1,0,0,1,1
S02000980,Ixobrychus minutus,Woudaap,Vertebraten S02000110,Podiceps auritus,Kuifduiker,V,0,0,0,1,1
S02001040,Nycticorax nycticorax,Kwak,Vertebraten S02000120,Podiceps nigricollis,Geoorde fuut,V,1,1,1,1,1
S02001210,Casmerodius albus,Grote zilverreiger,Vertebraten S02000550,Oceanodroma leucorhoa ssp. leucorhoa,Vaal stormvogeltje,V,0,0,0,1,1
S02001240,Ardea purpurea,Purperreiger,Vertebraten S02000720,Phalacrocorax carbo,Aalscholver,V,0,0,0,1,1
S02001340,Ciconia ciconia ssp. ciconia,Ooievaar,Vertebraten S02000950,Botaurus stellaris,Roerdomp,V,1,1,0,1,1
S02001440,Platalea leucorodia,Lepelaar,Vertebraten S02000980,Ixobrychus minutus,Woudaap,V,1,1,0,1,1
S02001730,Tadorna tadorna,Bergeend,Vertebraten S02001040,Nycticorax nycticorax,Kwak,V,1,1,1,1,1
S02001820,Anas strepera,Krakeend,Vertebraten S02001190,Egretta garzetta,Kleine zilverreiger,V,0,0,0,1,1
S02001840,Anas crecca,Wintertaling,Vertebraten S02001210,Casmerodius albus,Grote zilverreiger,V,1,1,0,1,1
S02001890,Anas acuta ssp. acuta,Pijlstaart,Vertebraten S02001240,Ardea purpurea,Purperreiger,V,1,1,0,1,1
S02001910,Anas querquedula,Zomertaling,Vertebraten S02001310,Ciconia nigra,Zwarte ooievaar,V,0,0,0,1,1
S02001940,Anas clypeata,Slobeend,Vertebraten S02001340,Ciconia ciconia ssp. ciconia,Ooievaar,V,1,1,0,1,1
S02001960,Netta rufina,Krooneend,Vertebraten S02001440,Platalea leucorodia,Lepelaar,V,1,1,0,1,1
S02002030,Aythya fuligula,Kuifeend,Vertebraten S02001730,Tadorna tadorna,Bergeend,V,1,1,1,1,1
S02002060,Somateria mollissima,Eider,Vertebraten S02001820,Anas strepera,Krakeend,V,1,1,0,1,1
S02002310,Pernis apivorus,Wespendief,Vertebraten S02001840,Anas crecca,Wintertaling,V,1,1,1,1,1
S02002600,Circus aeruginosus,Bruine kiekendief,Vertebraten S02001890,Anas acuta ssp. acuta,Pijlstaart,V,1,0,0,1,1
S02002610,Circus cyaneus,Blauwe kiekendief,Vertebraten S02001910,Anas querquedula,Zomertaling,V,1,1,0,1,1
S02002630,Circus pygargus,Grauwe kiekendief,Vertebraten S02001940,Anas clypeata,Slobeend,V,1,1,0,1,1
S02002670,Accipiter gentilis ssp. gentilis,Havik,Vertebraten S02001960,Netta rufina,Krooneend,V,1,1,0,1,1
S02002870,Buteo buteo ssp. buteo,Buizerd,Vertebraten S02002030,Aythya fuligula,Kuifeend,V,1,1,0,1,1
S02003040,Falco tinnunculus ssp. tinnunculus,Torenvalk,Vertebraten S02002040,Aythya marila,Topper,V,0,0,0,1,1
S02003320,Tetrao tetrix,Korhoen,Vertebraten S02002060,Somateria mollissima,Eider,V,1,1,1,1,1
S02003670,Perdix perdix,Patrijs,Vertebraten S02002200,Mergellus albellus,Nonnetje,V,0,0,0,1,1
S02003700,Coturnix coturnix,Kwartel,Vertebraten S02002210,Mergus serrator,Middelste zaagbek,V,0,0,0,1,1
S02004070,Rallus aquaticus,Waterral,Vertebraten S02002230,Mergus merganser ssp. merganser,Grote zaagbek,V,0,0,0,1,1
S02004080,Porzana porzana,Porseleinhoen,Vertebraten S02002310,Pernis apivorus,Wespendief,V,1,1,1,1,1
S02004100,Porzana parva,Klein waterhoen,Vertebraten S02002380,Milvus migrans ssp. migrans,Zwarte wouw,V,0,0,0,1,1
S02004110,Porzana pusilla,Kleinst waterhoen,Vertebraten S02002390,Milvus milvus ssp. milvus,Rode wouw,V,0,0,0,1,1
S02004210,Crex crex,Kwartelkoning,Vertebraten S02002430,Haliaeetus albicilla,Zeearend,V,0,0,0,1,1
S02004330,Grus grus,Kraanvogel,Vertebraten S02002600,Circus aeruginosus,Bruine kiekendief,V,1,0,0,1,1
S02004500,Haematopus ostralegus,Scholekster,Vertebraten S02002610,Circus cyaneus,Blauwe kiekendief,V,1,1,0,1,1
S02004560,Recurvirostra avosetta,Kluut,Vertebraten S02002630,Circus pygargus,Grauwe kiekendief,V,1,1,0,1,1
S02004590,Burhinus oedicnemus ssp. oedicnemus,Griel,Vertebraten S02002670,Accipiter gentilis ssp. gentilis,Havik,V,1,1,0,1,1
S02004690,Charadrius dubius,Kleine plevier,Vertebraten S02002870,Buteo buteo ssp. buteo,Buizerd,V,1,1,0,1,1
S02004700,Charadrius hiaticula,Bontbekplevier,Vertebraten S02003010,Pandion haliaetus,Visarend,V,0,0,0,1,1
S02004770,Charadrius alexandrinus,Strandplevier,Vertebraten S02003040,Falco tinnunculus ssp. tinnunculus,Torenvalk,V,1,1,0,1,1
S02005170,Philomachus pugnax,Kemphaan,Vertebraten S02003090,Falco columbarius ssp. aesalon,Smelleken,V,0,0,0,1,1
S02005190,Gallinago gallinago,Watersnip,Vertebraten S02003200,Falco peregrinus ssp. peregrinus,Slechtvalk,V,0,0,0,1,1
S02005320,Limosa limosa,Grutto,Vertebraten S02003320,Tetrao tetrix,Korhoen,V,1,1,0,1,1
S02005410,Numenius arquata,Wulp,Vertebraten S02003670,Perdix perdix,Patrijs,V,1,0,0,1,1
S02005460,Tringa totanus,Tureluur,Vertebraten S02003700,Coturnix coturnix,Kwartel,V,1,0,0,1,1
S02005750,Larus melanocephalus,Zwartkopmeeuw,Vertebraten S02004070,Rallus aquaticus,Waterral,V,1,1,0,1,1
S02006110,Sterna sandvicensis,Grote stern,Vertebraten S02004080,Porzana porzana,Porseleinhoen,V,1,1,0,1,1
S02006150,Sterna hirundo,Visdief,Vertebraten S02004100,Porzana parva,Klein waterhoen,V,1,1,0,1,1
S02006160,Sterna paradisaea,Noordse stern,Vertebraten S02004110,Porzana pusilla,Kleinst waterhoen,V,1,1,0,1,1
S02006240,Sterna albifrons,Dwergstern,Vertebraten S02004210,Crex crex,Kwartelkoning,V,1,1,0,1,1
S02006270,Chlidonias niger ssp. niger,Zwarte stern,Vertebraten S02004330,Grus grus,Kraanvogel,V,1,1,0,1,1
S02007680,Asio flammeus,Velduil,Vertebraten S02004500,Haematopus ostralegus,Scholekster,V,1,1,0,1,1
S02007780,Caprimulgus europaeus ssp. europaeus,Nachtzwaluw,Vertebraten S02004560,Recurvirostra avosetta,Kluut,V,1,1,1,1,1
S02008310,Alcedo atthis ssp. ispida,IJsvogel,Vertebraten S02004590,Burhinus oedicnemus ssp. oedicnemus,Griel,V,1,1,0,1,1
S02008480,Jynx torquilla,Draaihals,Vertebraten S02004690,Charadrius dubius,Kleine plevier,V,1,1,0,1,1
S02008560,Picus viridis,Groene specht,Vertebraten S02004700,Charadrius hiaticula,Bontbekplevier,V,1,1,0,1,1
S02008630,Dryocopus martius,Zwarte specht,Vertebraten S02004770,Charadrius alexandrinus,Strandplevier,V,1,1,1,1,1
S02008760,Dendrocopos major,Grote bonte specht,Vertebraten S02004820,Charadrius morinellus,Morinelplevier,V,0,0,0,1,1
S02008830,Dendrocopos medius,Middelste bonte specht,Vertebraten S02004850,Pluvialis apricaria,Goudplevier,V,0,0,0,1,1
S02008870,Dendrocopos minor,Kleine bonte specht,Vertebraten S02004860,Pluvialis squatarola,Zilverplevier,V,0,0,0,1,1
S02009740,Lullula arborea,Boomleeuwerik,Vertebraten S02004930,Vanellus vanellus,Kievit,V,0,0,0,1,1
S02009760,Alauda arvensis,Veldleeuwerik,Vertebraten S02004960,Calidris canutus ssp. islandica,Groenlandse kanoet,V,0,0,0,1,1
S02009810,Riparia riparia ssp. riparia,Oeverzwaluw,Vertebraten S02005120,Calidris alpina ssp. alpina,Bonte strandloper,V,0,0,0,1,1
S02010050,Anthus campestris,Duinpieper,Vertebraten S02005170,Philomachus pugnax,Kemphaan,V,1,1,0,1,1
S02010090,Anthus trivialis,Boompieper,Vertebraten S02005190,Gallinago gallinago,Watersnip,V,1,1,1,1,1
S02010110,Anthus pratensis,Graspieper,Vertebraten S02005290,Scolopax rusticola,Houtsnip,V,0,0,0,1,1
S02010171,Motacilla flava,Gele kwikstaart,Vertebraten S02005320,Limosa limosa,Grutto,V,1,1,0,1,1
S02010190,Motacilla cinerea ssp. cinerea,Grote gele kwikstaart,Vertebraten S02005340,Limosa lapponica ssp. lapponica,Rosse grutto,V,0,0,0,1,1
S02011040,Luscinia megarhynchos,Nachtegaal,Vertebraten S02005410,Numenius arquata,Wulp,V,1,1,1,1,1
S02011060,Luscinia svecica,Blauwborst,Vertebraten S02005460,Tringa totanus,Tureluur,V,1,1,1,1,1
S02011220,Phoenicurus phoenicurus,Gekraagde roodstaart,Vertebraten S02005540,Tringa glareola,Bosruiter,V,0,0,0,1,1
S02011370,Saxicola rubetra,Paapje,Vertebraten S02005640,Phalaropus lobatus,Grauwe franjepoot,V,0,0,0,1,1
S02011390,Saxicola rubicola,Roodborsttapuit,Vertebraten S02005750,Larus melanocephalus,Zwartkopmeeuw,V,1,0,0,1,1
S02011460,Oenanthe oenanthe,Tapuit,Vertebraten S02005780,Larus minutus,Dwergmeeuw,V,0,0,0,1,1
S02012000,Turdus philomelos,Zanglijster,Vertebraten S02005900,Larus canus ssp. canus,Stormmeeuw,V,0,0,0,1,1
S02012200,Cettia cetti,Cetti's zanger,Vertebraten S02005912,Larus fuscus ssp. intermedius,Kleine mantelmeeuw,V,0,0,0,1,1
S02012360,Locustella naevia,Sprinkhaanzanger,Vertebraten S02006060,Sterna caspia,Reuzenstern,V,0,0,0,1,1
S02012380,Locustella luscinioides,Snor,Vertebraten S02006110,Sterna sandvicensis,Grote stern,V,1,1,0,1,1
S02012430,Acrocephalus schoenobaenus,Rietzanger,Vertebraten S02006150,Sterna hirundo,Visdief,V,1,1,0,1,1
S02012530,Acrocephalus arundinaceus,Grote karekiet,Vertebraten S02006160,Sterna paradisaea,Noordse stern,V,1,1,0,1,1
S02012590,Hippolais icterina,Spotvogel,Vertebraten S02006240,Sterna albifrons,Dwergstern,V,1,1,0,1,1
S02012740,Sylvia curruca,Braamsluiper,Vertebraten S02006270,Chlidonias niger ssp. niger,Zwarte stern,V,1,0,0,1,1
S02013080,Phylloscopus sibilatrix,Fluiter,Vertebraten S02007350,Tyto alba ssp. guttata,Kerkuil,V,0,0,0,1,1
S02013150,Regulus ignicapilla,Vuurgoudhaan,Vertebraten S02007570,Athene noctua ssp. vidalii,Steenuil,V,0,0,0,1,1
S02013350,Muscicapa striata,Grauwe vliegenvanger,Vertebraten S02007610,Strix aluco,Bosuil,V,0,0,0,1,1
S02013490,Ficedula hypoleuca ssp. hypoleuca,Bonte vliegenvanger,Vertebraten S02007680,Asio flammeus,Velduil,V,1,1,1,1,1
S02013640,Panurus biarmicus,Baardman,Vertebraten S02007780,Caprimulgus europaeus ssp. europaeus,Nachtzwaluw,V,1,1,0,1,1
S02014400,Parus palustris ssp. palustris,Glanskop,Vertebraten S02008310,Alcedo atthis ssp. ispida,IJsvogel,V,1,1,0,1,1
S02014420,Parus montanus,Matkop,Vertebraten S02008460,Upupa epops ssp. epops,Hop,V,0,0,0,1,1
S02014790,Sitta europaea,Boomklever,Vertebraten S02008480,Jynx torquilla,Draaihals,V,1,1,0,1,1
S02014870,Certhia brachydactyla,Boomkruiper,Vertebraten S02008560,Picus viridis,Groene specht,V,1,1,0,1,1
S02014900,Remiz pendulinus,Buidelmees,Vertebraten S02008630,Dryocopus martius,Zwarte specht,V,1,1,1,1,1
S02015080,Oriolus oriolus,Wielewaal,Vertebraten S02008760,Dendrocopos major,Grote bonte specht,V,1,1,1,1,1
S02015150,Lanius collurio,Grauwe klauwier,Vertebraten S02008830,Dendrocopos medius,Middelste bonte specht,V,1,1,0,1,1
S02015200,Lanius excubitor,Klapekster,Vertebraten S02008870,Dendrocopos minor,Kleine bonte specht,V,1,1,0,1,1
S02015720,Corvus corax,Raaf,Vertebraten S02009720,Galerida cristata ssp. cristata,Kuifleeuwerik,V,0,0,0,1,1
S02016380,Fringilla montifringilla,Keep,Vertebraten S02009740,Lullula arborea,Boomleeuwerik,V,1,1,1,1,1
S02016490,Chloris chloris,Groenling,Vertebraten S02009760,Alauda arvensis,Veldleeuwerik,V,1,1,1,1,1
S02016530,Carduelis carduelis,Putter,Vertebraten S02009810,Riparia riparia ssp. riparia,Oeverzwaluw,V,1,0,0,1,1
S02016540,Carduelis spinus,Sijs,Vertebraten S02009920,Hirundo rustica ssp. rustica,Boerenzwaluw,V,0,0,0,1,1
S02016600,Carduelis cannabina,Kneu,Vertebraten S02010010,Delichon urbica ssp. urbica,Huiszwaluw,V,0,0,0,1,1
S02016634,Carduelis cabaret,Kleine barmsijs,Vertebraten S02010050,Anthus campestris,Duinpieper,V,1,1,1,1,1
S02017100,Pyrrhula pyrrhula ssp. europoea,Midden-Europese goudvink,Vertebraten S02010090,Anthus trivialis,Boompieper,V,1,1,0,1,1
S02017170,Coccothraustes coccothraustes,Appelvink,Vertebraten S02010110,Anthus pratensis,Graspieper,V,1,1,1,1,1
S02018570,Emberiza citrinella,Geelgors,Vertebraten S02010171,Motacilla flava,Gele kwikstaart,V,1,0,0,1,1
S02018660,Emberiza hortulana,Ortolaan,Vertebraten S02010190,Motacilla cinerea ssp. cinerea,Grote gele kwikstaart,V,1,0,0,1,1
S02018820,Emberiza calandra,Grauwe gors,Vertebraten S02011040,Luscinia megarhynchos,Nachtegaal,V,1,1,1,1,1
S06000002,Carterocephalus palaemon,Bont dikkopje,Evertebraten S02011060,Luscinia svecica,Blauwborst,V,1,1,1,1,1
S06000003,Thymelicus sylvestris,Geelsprietdikkopje,Evertebraten S02011220,Phoenicurus phoenicurus,Gekraagde roodstaart,V,1,1,0,1,1
S06000004,Thymelicus lineola,Zwartsprietdikkopje,Evertebraten S02011370,Saxicola rubetra,Paapje,V,1,0,0,1,1
S06000006,Hesperia comma,Kommavlinder,Evertebraten S02011390,Saxicola rubicola,Roodborsttapuit,V,1,1,1,1,1
S06000007,Ochlodes faunus,Groot dikkopje,Evertebraten S02011460,Oenanthe oenanthe,Tapuit,V,1,1,1,1,1
S06000008,Erynnis tages,Bruin dikkopje,Evertebraten S02012000,Turdus philomelos,Zanglijster,V,1,1,0,1,1
S06000012,Pyrgus malvae,Aardbeivlinder,Evertebraten S02012200,Cettia cetti,Cetti's zanger,V,1,0,0,1,1
S06000019,Anthocharis cardamines,Koninginnenpage,Evertebraten S02012360,Locustella naevia,Sprinkhaanzanger,V,1,1,1,1,1
S06000035,Callophrys rubi,Groentje,Evertebraten S02012380,Locustella luscinioides,Snor,V,1,1,0,1,1
S06000042,Lycaena dispar,Grote vuurvlinder,Evertebraten S02012430,Acrocephalus schoenobaenus,Rietzanger,V,1,0,0,1,1
S06000044,Lycaena tityrus,Bruine vuurvlinder,Evertebraten S02012500,Acrocephalus palustris,Bosrietzanger,V,0,0,0,1,1
S06000049,Plebeius argus,Heideblauwtje,Evertebraten S02012530,Acrocephalus arundinaceus,Grote karekiet,V,1,1,0,1,1
S06000050,Plebeius idas ssp. idas,Vals heideblauwtje,Evertebraten S02012590,Hippolais icterina,Spotvogel,V,1,1,0,1,1
S06000051,Plebeius optilete,Veenbesblauwtje,Evertebraten S02012740,Sylvia curruca,Braamsluiper,V,1,1,0,1,1
S06000052,Aricia agestis,Bruin blauwtje,Evertebraten S02012750,Sylvia communis,Grasmus,V,0,0,0,1,1
S06000057,Maculinea alcon,Gentiaanblauwtje,Evertebraten S02012770,Sylvia atricapilla,Zwartkop,V,0,0,0,1,1
S06000061,Maculinea teleius,Pimpernelblauwtje,Evertebraten S02013080,Phylloscopus sibilatrix,Fluiter,V,1,1,1,1,1
S06000062,Maculinea nausithous,Donker pimpernelblauwtje,Evertebraten S02013150,Regulus ignicapilla,Vuurgoudhaan,V,1,1,0,1,1
S06000064,Limenitis camilla,Kleine ijsvogelvlinder,Evertebraten S02013350,Muscicapa striata,Grauwe vliegenvanger,V,1,1,0,1,1
S06000065,Limenitis populi,Grote ijsvogelvlinder,Evertebraten S02013490,Ficedula hypoleuca ssp. hypoleuca,Bonte vliegenvanger,V,1,1,0,1,1
S06000066,Apatura iris,Grote weerschijnvlinder,Evertebraten S02013640,Panurus biarmicus,Baardman,V,1,0,0,1,1
S06000076,Boloria aquilonaris,Veenbesparelmoervlinder,Evertebraten S02014400,Parus palustris ssp. palustris,Glanskop,V,1,1,0,1,1
S06000077,Boloria selene,Zilveren maan,Evertebraten S02014420,Parus montanus,Matkop,V,1,1,1,1,1
S06000080,Brenthis ino,Purperstreepparelmoervlinder,Evertebraten S02014790,Sitta europaea,Boomklever,V,1,1,1,1,1
S06000081,Issoria lathonia,Kleine parelmoervlinder,Evertebraten S02014870,Certhia brachydactyla,Boomkruiper,V,1,1,0,1,1
S06000082,Argynnis niobe,Duinparelmoervlinder,Evertebraten S02014900,Remiz pendulinus,Buidelmees,V,1,1,0,1,1
S06000084,Argynnis aglaja,Grote parelmoervlinder,Evertebraten S02015080,Oriolus oriolus,Wielewaal,V,1,1,1,1,1
S06000088,Melitaea cinxia,Veldparelmoervlinder,Evertebraten S02015150,Lanius collurio,Grauwe klauwier,V,1,1,0,1,1
S06000092,Lasiommata megera,Argusvlinder,Evertebraten S02015200,Lanius excubitor,Klapekster,V,1,1,1,1,1
S06000097,Coenonympha arcania,Tweekleurig hooibeestje,Evertebraten S02015230,Lanius senator ssp. senator,Roodkopklauwier,V,0,0,0,1,1
S06000098,Coenonympha pamphilus,Hooibeestje,Evertebraten S02015720,Corvus corax,Raaf,V,1,1,0,1,1
S06000099,Coenonympha tullia ssp. tullia,Veenhooibeestje,Evertebraten S02016380,Fringilla montifringilla,Keep,V,1,1,0,1,1
S06000101,Maniola jurtina,Bruin zandoogje,Evertebraten S02016400,Serinus serinus,Europese kanarie,V,0,0,0,1,1
S06000106,Hipparchia semele,Heivlinder,Evertebraten S02016490,Chloris chloris,Groenling,V,1,0,0,1,1
S06000107,Hipparchia statilinus,Kleine heivlinder,Evertebraten