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
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
eg. 02.01 --> N02.01 if as_mnp==False
......@@ -17,44 +18,61 @@ def fix_bt(code_in, as_mnp=False):
N04.02.00 is equivalent to N04.02
:param code_in: beheertypecode in any format
:param as_mnp: return MNP style beheertypecode, default=False
:param verbose: verbose feedback
:param strict: raise error if bt code is unexpected
:return: beheertypecode
"""
if verbose:
print('from {}'.format(code_in), end=' ')
if isinstance(code_in, numbers.Number):
code_in = str(code_in)
# Identify parts of code
parts = code_in.split(".")
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:
top, sub = parts
neer = None
elif len(parts) == 3:
top, sub, neer = parts
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
if top.isdigit():
top = "N{0}".format(top.zfill(2))
else:
assert top[0].isupper(), "Unexpected BT Code format: {}".format(code_in)
assert top[0].upper() in ['N', 'W', 'S', 'T', 'A', 'L'], "3. Unexpected BT Code: {}".format(code_in)
if top[0].islower():
top = top.capitalize()
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
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
keep_neer = False
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:
keep_neer = True
# Construct output
head = "{}.{}".format(top, sub)
if keep_neer:
return "{}.{}".format(head, neer)
output = "{}.{}".format(head, neer)
elif as_mnp:
return "{}.00".format(head)
output = "{}.00".format(head)
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
# Door: Hans Roelofsen, 18-May-2021 10:36
Species_code,Scientific_name,Local_name,tax_group
S02000070,Tachybaptus ruficollis,Dodaars,Vertebraten
S02000120,Podiceps nigricollis,Geoorde fuut,Vertebraten
S02000950,Botaurus stellaris,Roerdomp,Vertebraten
S02000980,Ixobrychus minutus,Woudaap,Vertebraten
S02001040,Nycticorax nycticorax,Kwak,Vertebraten
S02001210,Casmerodius albus,Grote zilverreiger,Vertebraten
S02001240,Ardea purpurea,Purperreiger,Vertebraten
S02001340,Ciconia ciconia ssp. ciconia,Ooievaar,Vertebraten
S02001440,Platalea leucorodia,Lepelaar,Vertebraten
S02001730,Tadorna tadorna,Bergeend,Vertebraten
S02001820,Anas strepera,Krakeend,Vertebraten
S02001840,Anas crecca,Wintertaling,Vertebraten
S02001890,Anas acuta ssp. acuta,Pijlstaart,Vertebraten
S02001910,Anas querquedula,Zomertaling,Vertebraten
S02001940,Anas clypeata,Slobeend,Vertebraten
S02001960,Netta rufina,Krooneend,Vertebraten
S02002030,Aythya fuligula,Kuifeend,Vertebraten
S02002060,Somateria mollissima,Eider,Vertebraten
S02002310,Pernis apivorus,Wespendief,Vertebraten
S02002600,Circus aeruginosus,Bruine kiekendief,Vertebraten
S02002610,Circus cyaneus,Blauwe kiekendief,Vertebraten
S02002630,Circus pygargus,Grauwe kiekendief,Vertebraten
S02002670,Accipiter gentilis ssp. gentilis,Havik,Vertebraten
S02002870,Buteo buteo ssp. buteo,Buizerd,Vertebraten
S02003040,Falco tinnunculus ssp. tinnunculus,Torenvalk,Vertebraten
S02003320,Tetrao tetrix,Korhoen,Vertebraten
S02003670,Perdix perdix,Patrijs,Vertebraten
S02003700,Coturnix coturnix,Kwartel,Vertebraten
S02004070,Rallus aquaticus,Waterral,Vertebraten
S02004080,Porzana porzana,Porseleinhoen,Vertebraten
S02004100,Porzana parva,Klein waterhoen,Vertebraten
S02004110,Porzana pusilla,Kleinst waterhoen,Vertebraten
S02004210,Crex crex,Kwartelkoning,Vertebraten
S02004330,Grus grus,Kraanvogel,Vertebraten
S02004500,Haematopus ostralegus,Scholekster,Vertebraten
S02004560,Recurvirostra avosetta,Kluut,Vertebraten
S02004590,Burhinus oedicnemus ssp. oedicnemus,Griel,Vertebraten
S02004690,Charadrius dubius,Kleine plevier,Vertebraten
S02004700,Charadrius hiaticula,Bontbekplevier,Vertebraten
S02004770,Charadrius alexandrinus,Strandplevier,Vertebraten
S02005170,Philomachus pugnax,Kemphaan,Vertebraten
S02005190,Gallinago gallinago,Watersnip,Vertebraten
S02005320,Limosa limosa,Grutto,Vertebraten
S02005410,Numenius arquata,Wulp,Vertebraten
S02005460,Tringa totanus,Tureluur,Vertebraten
S02005750,Larus melanocephalus,Zwartkopmeeuw,Vertebraten
S02006110,Sterna sandvicensis,Grote stern,Vertebraten
S02006150,Sterna hirundo,Visdief,Vertebraten
S02006160,Sterna paradisaea,Noordse stern,Vertebraten
S02006240,Sterna albifrons,Dwergstern,Vertebraten
S02006270,Chlidonias niger ssp. niger,Zwarte stern,Vertebraten
S02007680,Asio flammeus,Velduil,Vertebraten
S02007780,Caprimulgus europaeus ssp. europaeus,Nachtzwaluw,Vertebraten
S02008310,Alcedo atthis ssp. ispida,IJsvogel,Vertebraten
S02008480,Jynx torquilla,Draaihals,Vertebraten
S02008560,Picus viridis,Groene specht,Vertebraten
S02008630,Dryocopus martius,Zwarte specht,Vertebraten
S02008760,Dendrocopos major,Grote bonte specht,Vertebraten
S02008830,Dendrocopos medius,Middelste bonte specht,Vertebraten
S02008870,Dendrocopos minor,Kleine bonte specht,Vertebraten
S02009740,Lullula arborea,Boomleeuwerik,Vertebraten
S02009760,Alauda arvensis,Veldleeuwerik,Vertebraten
S02009810,Riparia riparia ssp. riparia,Oeverzwaluw,Vertebraten
S02010050,Anthus campestris,Duinpieper,Vertebraten
S02010090,Anthus trivialis,Boompieper,Vertebraten
S02010110,Anthus pratensis,Graspieper,Vertebraten
S02010171,Motacilla flava,Gele kwikstaart,Vertebraten
S02010190,Motacilla cinerea ssp. cinerea,Grote gele kwikstaart,Vertebraten
S02011040,Luscinia megarhynchos,Nachtegaal,Vertebraten
S02011060,Luscinia svecica,Blauwborst,Vertebraten
S02011220,Phoenicurus phoenicurus,Gekraagde roodstaart,Vertebraten
S02011370,Saxicola rubetra,Paapje,Vertebraten
S02011390,Saxicola rubicola,Roodborsttapuit,Vertebraten
S02011460,Oenanthe oenanthe,Tapuit,Vertebraten
S02012000,Turdus philomelos,Zanglijster,Vertebraten
S02012200,Cettia cetti,Cetti's zanger,Vertebraten
S02012360,Locustella naevia,Sprinkhaanzanger,Vertebraten
S02012380,Locustella luscinioides,Snor,Vertebraten
S02012430,Acrocephalus schoenobaenus,Rietzanger,Vertebraten
S02012530,Acrocephalus arundinaceus,Grote karekiet,Vertebraten
S02012590,Hippolais icterina,Spotvogel,Vertebraten
S02012740,Sylvia curruca,Braamsluiper,Vertebraten
S02013080,Phylloscopus sibilatrix,Fluiter,Vertebraten
S02013150,Regulus ignicapilla,Vuurgoudhaan,Vertebraten
S02013350,Muscicapa striata,Grauwe vliegenvanger,Vertebraten
S02013490,Ficedula hypoleuca ssp. hypoleuca,Bonte vliegenvanger,Vertebraten
S02013640,Panurus biarmicus,Baardman,Vertebraten
S02014400,Parus palustris ssp. palustris,Glanskop,Vertebraten
S02014420,Parus montanus,Matkop,Vertebraten
S02014790,Sitta europaea,Boomklever,Vertebraten
S02014870,Certhia brachydactyla,Boomkruiper,Vertebraten
S02014900,Remiz pendulinus,Buidelmees,Vertebraten
S02015080,Oriolus oriolus,Wielewaal,Vertebraten
S02015150,Lanius collurio,Grauwe klauwier,Vertebraten
S02015200,Lanius excubitor,Klapekster,Vertebraten
S02015720,Corvus corax,Raaf,Vertebraten
S02016380,Fringilla montifringilla,Keep,Vertebraten
S02016490,Chloris chloris,Groenling,Vertebraten
S02016530,Carduelis carduelis,Putter,Vertebraten
S02016540,Carduelis spinus,Sijs,Vertebraten
S02016600,Carduelis cannabina,Kneu,Vertebraten
S02016634,Carduelis cabaret,Kleine barmsijs,Vertebraten
S02017100,Pyrrhula pyrrhula ssp. europoea,Midden-Europese goudvink,Vertebraten
S02017170,Coccothraustes coccothraustes,Appelvink,Vertebraten
S02018570,Emberiza citrinella,Geelgors,Vertebraten
S02018660,Emberiza hortulana,Ortolaan,Vertebraten
S02018820,Emberiza calandra,Grauwe gors,Vertebraten
S06000002,Carterocephalus palaemon,Bont dikkopje,Evertebraten
S06000003,Thymelicus sylvestris,Geelsprietdikkopje,Evertebraten
S06000004,Thymelicus lineola,Zwartsprietdikkopje,Evertebraten
S06000006,Hesperia comma,Kommavlinder,Evertebraten
S06000007,Ochlodes faunus,Groot dikkopje,Evertebraten
S06000008,Erynnis tages,Bruin dikkopje,Evertebraten
S06000012,Pyrgus malvae,Aardbeivlinder,Evertebraten
S06000019,Anthocharis cardamines,Koninginnenpage,Evertebraten
S06000035,Callophrys rubi,Groentje,Evertebraten
S06000042,Lycaena dispar,Grote vuurvlinder,Evertebraten
S06000044,Lycaena tityrus,Bruine vuurvlinder,Evertebraten
S06000049,Plebeius argus,Heideblauwtje,Evertebraten
S06000050,Plebeius idas ssp. idas,Vals heideblauwtje,Evertebraten
S06000051,Plebeius optilete,Veenbesblauwtje,Evertebraten
S06000052,Aricia agestis,Bruin blauwtje,Evertebraten
S06000057,Maculinea alcon,Gentiaanblauwtje,Evertebraten
S06000061,Maculinea teleius,Pimpernelblauwtje,Evertebraten
S06000062,Maculinea nausithous,Donker pimpernelblauwtje,Evertebraten
S06000064,Limenitis camilla,Kleine ijsvogelvlinder,Evertebraten
S06000065,Limenitis populi,Grote ijsvogelvlinder,Evertebraten
S06000066,Apatura iris,Grote weerschijnvlinder,Evertebraten
S06000076,Boloria aquilonaris,Veenbesparelmoervlinder,Evertebraten
S06000077,Boloria selene,Zilveren maan,Evertebraten
S06000080,Brenthis ino,Purperstreepparelmoervlinder,Evertebraten
S06000081,Issoria lathonia,Kleine parelmoervlinder,Evertebraten
S06000082,Argynnis niobe,Duinparelmoervlinder,Evertebraten
S06000084,Argynnis aglaja,Grote parelmoervlinder,Evertebraten
S06000088,Melitaea cinxia,Veldparelmoervlinder,Evertebraten
S06000092,Lasiommata megera,Argusvlinder,Evertebraten
S06000097,Coenonympha arcania,Tweekleurig hooibeestje,Evertebraten
S06000098,Coenonympha pamphilus,Hooibeestje,Evertebraten
S06000099,Coenonympha tullia ssp. tullia,Veenhooibeestje,Evertebraten
S06000101,Maniola jurtina,Bruin zandoogje,Evertebraten
S06000106,Hipparchia semele,Heivlinder,Evertebraten
S06000107,Hipparchia statilinus,Kleine heivlinder,Evertebraten
S09000008,Actaea spicata,Christoffelkruid,Planten
S09000013,Agrimonia eupatoria,Gewone agrimonie,Planten
S09000014,Agrimonia procera,Welriekende agrimonie,Planten
S09000015,Agrostemma githago,Bolderik,Planten
S09000031,Allium oleraceum,Moeslook,Planten
S09000034,Allium ursinum,Daslook,Planten
S09000039,Alopecurus bulbosus,Knolvossenstaart,Planten
S09000043,Althaea officinalis,Heemst,Planten
S09000044,Alyssum alyssoides,Bleek schildzaad,Planten
S09000051,Anacamptis pyramidalis,Hondskruid,Planten
S09000053,Anagallis tenella,Teer guichelheil,Planten
S09000055,Andromeda polifolia,Lavendelhei,Planten
S09000061,Antennaria dioica,Rozenkransje,Planten
S09000062,Anthemis arvensis,Valse kamille,Planten
S09000063,Anthemis cotula,Stinkende kamille,Planten
S09000067,Anthoxanthum aristatum,Slofhak,Planten
S09000071,Anthyllis vulneraria,Wondklaver,Planten
S09000072,Misopates orontium,Akkerleeuwenbek,Planten
S09000074,Aphanes arvensis,Grote leeuwenklauw,Planten
S09000076,Apium graveolens,Selderij,Planten
S09000077,Apium inundatum,Ondergedoken moerasscherm,Planten
S09000091,Armeria maritima,Engels gras,Planten
S09000092,Armoracia rusticana,Mierik,Planten
S09000093,Arnica montana,Valkruid,Planten
S09000094,Arnoseris minima,Korensla,Planten
S09000100,Seriphidium maritimum,Zeealsem,Planten
S09000105,Asparagus officinalis subsp. prostratus,Liggende asperge,Planten
S09000124,Atriplex laciniata,Gelobde melde,Planten
S09000138,Beta vulgaris subsp. maritima,Strandbiet,Planten
S09000146,Blechnum spicant,Dubbelloof,Planten
S09000148,Botrychium lunaria,Gelobde maanvaren,Planten
S09000153,Briza media,Bevertjes,Planten
S09000157,Bromopsis erecta,Bergdravik,Planten
S09000164,Bromus secalinus,Dreps,Planten
S09000169,Bunium bulbocastanum,Aardkastanje,Planten
S09000170,Bupleurum tenuissimum,Fijn goudscherm,Planten
S09000175,Calamagrostis stricta,Stijf struisriet,Planten
S09000191,Campanula glomerata,Kluwenklokje,Planten
S09000196,Campanula rapunculus,Rapunzelklokje,Planten
S09000213,Carex appropinquata,Paardenhaarzegge,Planten
S09000214,Carex aquatilis,Noordse zegge,Planten
S09000217,Carex buxbaumii,Knotszegge,Planten
S09000218,Carex caryophyllea,Voorjaarszegge,Planten
S09000221,Carex diandra,Ronde zegge,Planten
S09000222,Carex digitata,Vingerzegge,Planten
S09000223,Carex dioica,Tweehuizige zegge,Planten
S09000230,Carex ericetorum,Heidezegge,Planten
S09000231,Carex extensa,Kwelderzegge,Planten
S09000233,Carex flava,Gele zegge,Planten
S09000234,Carex hartmanii,Kleine knotszegge,Planten
S09000236,Carex hostiana,Blonde zegge,Planten
S09000239,Carex lasiocarpa,Draadzegge,Planten
S09000242,Carex limosa,Slijkzegge,Planten
S09000247,Carex pallescens,Bleke zegge,Planten
S09000255,Carex pulicaris,Vlozegge,Planten
S09000256,Carex punctata,Stippelzegge,Planten
S09000266,Carex trinervis,Drienervige zegge,Planten
S09000268,Carex vulpina,Voszegge,Planten
S09000269,Carlina vulgaris,Driedistel,Planten
S09000271,Carum carvi,Karwij,Planten
S09000275,Catapodium marinum,Laksteeltje,Planten
S09000276,Catapodium rigidum,Stijf hardgras,Planten
S09000279,Centaurea cyanus,Korenbloem,Planten
S09000284,Centaurea scabiosa,Grote centaurie,Planten
S09000288,Centunculus minimus,Dwergbloem,Planten
S09000289,Cephalanthera damasonium,Bleek bosvogeltje,Planten
S09000293,Cerastium diffusum,Scheve hoornbloem,Planten
S09000321,Glebionis segetum,Gele ganzenbloem,Planten
S09000323,Chrysosplenium oppositifolium,Paarbladig goudveil,Planten
S09000324,Cicendia filiformis,Draadgentiaan,Planten
S09000327,Circaea alpina,Alpenheksenkruid,Planten
S09000330,Cirsium acaule,Aarddistel,Planten
S09000332,Cirsium dissectum,Spaanse ruiter,Planten
S09000337,Cladium mariscus,Galigaan,Planten
S09000341,Cochlearia officinalis subsp. anglica,Engels lepelblad,Planten
S09000343,Cochlearia officinalis subsp. officinalis,Echt lepelblad,Planten
S09000345,Colchicum autumnale,Herfsttijloos,Planten
S09000346,Comarum palustre,Wateraardbei,Planten
S09000356,Cornus suecica,Zweedse kornoelje,Planten
S09000360,Corrigiola litoralis,Riempjes,Planten
S09000373,Crepis paludosa,Moerasstreepzaad,Planten
S09000377,Cucubalus baccifer,Besanjelier,Planten
S09000379,Cuscuta epithymum,Klein warkruid,Planten
S09000386,Cynosurus cristatus,Kamgras,Planten
S09000389,Cystopteris fragilis,Blaasvaren,Planten
S09000392,Daphne mezereum,Rood peperboompje,Planten
S09000399,Deschampsia setacea,Moerassmele,Planten
S09000402,Dianthus armeria,Ruige anjer,Planten
S09000404,Dianthus deltoides,Steenanjer,Planten
S09000416,Drosera longifolia,Lange zonnedauw,Planten
S09000417,Drosera intermedia,Kleine zonnedauw,Planten
S09000418,Drosera rotundifolia,Ronde zonnedauw,Planten
S09000429,Baldellia ranunculoides subsp. ranunculoides,Stijve moerasweegbree,Planten
S09000430,Baldellia ranunculoides subsp. repens,Kruipende moerasweegbree,Planten
S09000432,Elatine hexandra,Gesteeld glaskroos,Planten
S09000438,Eleocharis quinqueflora,Armbloemige waterbies,Planten
S09000444,Elytrigia juncea subsp. boreoatlantica,Biestarwegras,Planten
S09000456,Epilobium palustre,Moerasbasterdwederik,Planten
S09000461,Epipactis palustris,Moeraswespenorchis,Planten
S09000467,Equisetum ramosissimum,Vertakte paardenstaart,Planten
S09000471,Equisetum variegatum,Bonte paardenstaart,Planten
S09000472,Erica cinerea,Rode dophei,Planten
S09000477,Eriophorum gracile,Slank wollegras,Planten
S09000478,Eriophorum latifolium,Breed wollegras,Planten
S09000479,Eriophorum vaginatum,Eenarig wollegras,Planten
S09000481,Erodium lebelii,Kleverige reigersbek,Planten
S09000486,Eryngium maritimum,Blauwe zeedistel,Planten
S09000488,Erysimum virgatum,Stijve steenraket,Planten
S09000491,Euphorbia amygdaloides,Amandelwolfsmelk,Planten
S09000492,Euphorbia cyparissias,Cipreswolfsmelk,Planten
S09000494,Euphorbia exigua,Kleine wolfsmelk,Planten
S09000496,Euphorbia palustris,Moeraswolfsmelk,Planten
S09000497,Euphorbia paralias,Zeewolfsmelk,Planten
S09000500,Euphorbia seguieriana,Zandwolfsmelk,Planten
S09000509,Odontites vernus subsp. serotinus,Rode ogentroost,Planten
S09000524,Filago minima,Dwergviltkruid,Planten
S09000529,Fragaria vesca,Bosaardbei,Planten
S09000532,Fritillaria meleagris,Wilde kievitsbloem,Planten
S09000536,Gagea spathacea,Schedegeelster,Planten
S09000541,Galeopsis segetum,Bleekgele hennepnetel,Planten
S09000548,Cruciata laevipes,Kruisbladwalstro,Planten
S09000553,Galium pumilum,Kalkwalstro,Planten
S09000558,Genista anglica,Stekelbrem,Planten
S09000560,Genista pilosa,Kruipbrem,Planten
S09000561,Genista tinctoria,Verfbrem,Planten
S09000562,Gentianella amarella,Slanke gentiaan,Planten
S09000563,Gentianella campestris,Veldgentiaan,Planten
S09000565,Gentianella ciliata,Franjegentiaan,Planten
S09000566,Gentiana cruciata,Kruisbladgentiaan,Planten
S09000567,Gentianella germanica,Duitse gentiaan,Planten
S09000568,Gentiana pneumonanthe,Klokjesgentiaan,Planten
S09000569,Geranium columbinum,Fijne ooievaarsbek,Planten
S09000575,Geranium pyrenaicum,Bermooievaarsbek,Planten
S09000578,Geum rivale,Knikkend nagelkruid,Planten
S09000588,Gnaphalium sylvaticum,Bosdroogbloem,Planten
S09000590,Goodyera repens,Dennenorchis,Planten
S09000593,Gymnadenia conopsea,Grote muggenorchis,Planten
S09000595,Atriplex pedunculata,Gesteelde zoutmelde,Planten
S09000597,Hammarbya paludosa,Veenmosorchis,Planten
S09000603,Helictotrichon pratense,Beemdhaver,Planten
S09000608,Herminium monorchis,Honingorchis,Planten
S09000612,Hieracium lactucella,Spits havikskruid,Planten