Mittwoch, 2. Mai 2018

Species lists from different sources - how to synchronise names with the GBIF database in R

Species lists from different sources:
how to synchronize names with the GBIF database in R,
how to compile a list of Syrphidae from Switzerland and
how to determine which species are lacking in common identification keys



You may know this problem: you have 2 or more species list from different sources and they use different synonyms for the same species. You want to merge the lists to a single one that has only unique species. In this post you find:
  1. Getting species lists from books in to R
  2. Using R to compare these species list with the GBIF species database and merge them (including 'tricks', e.g. to extract names from a multidimensional list)
  3. Discussion of common problems to take in to account
  4. The final list of Syrphidae nicely formatted for printing

Case study description
The case study concerns European Hoverflies (Syrphidae). Unlike plants or mammals, this insect group has been subject to many synonymizations which results in very dissimilar name lists over  time frames of a decade. I want to identify Syrphidae species from the Alps (mainly Switzerland), with two commonly used identification keys that do not include all alpine species. I need to know which species have to be identified with additional keys and which genera are safe to identify with the common keys. I took the species list of Switzerland from the website World of Syrphidae. For convenience and usability I also downloaded the German species list.

For Northwest Europe there are two recent major identification works:
The first covers (almost) all lowland species:
Van Veen, M. (2004) Hoverflies of Northwest Europe: identification keys to the Syrphidae. 256pp.
Van Veen published an addendum to his book on his website which enables identification of even more Syrphidae. I copied those species names manually into a txt file, an this list will be used as well.
The second work comes in two volumes and covers many alpine species:
Bartsch, H. et al. (2009) Blomflugor: Syrphinae. Nationalnyckeln till Sveriges flora och flora, DH53a. Artdatabanken, SLU, Uppsala. 406 pp.
Bartsch, H. et al. (2009) Blomflugor: Eristalinae & Microdontinae. Nationalnyckeln till Sveriges flora och flora, DH 53b. Artdatabanken, SLU, Uppsala. 478pp.

1. Getting the species lists from books and web pages into R

When you get experienced with this, it is faster than typing every single species manually.
  • Scan the species list from your book, either with a modern copy machine or flatbed scanner (A digital camera often yield too strong distorted images that do not give a good text recognition.)
  • Get a good text recognition (OCR, optical character recognition). I prefer to do a good OCR with Acrobat pro on a pdf made from the scans. There is also free OCR software that can do a good job on tiff and bmp images (here some software suggestions to try).
  • For a good result, make sure that you have one column with species on your input. If you have e.g. 2 columns on a single page or printed  2 pages on a single pdf page, you have to edit the images a bit. For a pdf you can do the following. Crop your pdf to the left side first and export as tiff image. Rename from filename.* to filename_A.* (you can do this with e.g. total commander under Files -> multi-rename tool). Crop your pdf to right side and export as tiff images. Rename from filename.* to filename_B.* Now combine files to pdf again. You now should have a single list of species per page.
  • Perform the OCR. Either export to text (save as other, txt (accessible), or select parts of the list manually and copy it into a *.txt file.
  • Clean up the file. Keep a list of what to "find and replace": e.g. / must be l. 
  • Import the text file to excel or libre office calc. The delimiter is space. First 2 columns are genus and species. The rest may be rubbish or things like authority or common name and may be deleted. If you like to keep any of this (for example authority) you can do the following. Select all remaining columns (except genus/species), paste into a txt file, put behind the authority a sign for separation, instead of a space. In my example I had the kind of format: "Authority - Name". I replaced " - " by "-" to get a nice separation without spaces. Import and choose delimiter like "-". 

Everything should now be in a perfect table! Scan through for further OCR errors, remaining ones can be identified in R. For use in R, I named the columns "GenSpec" for the species name, "FullGenSpec" for the species with authority, and "Gen" and "Spec" for using both elements separately.

2. Using R to compare species list with the GBIF database

Start and read the files with species lists:

################################_
### Load packages and functions, set working directory     ####
################################_

setwd("C://.../specieslistsR")

#install.packages("taxize")
#install.packages("dplyr")

require(taxize) #for connecting to gbif species lists
require(dplyr) #for bind_rows

# a nice function for removing accidential spaces at end of species name
trimendspace <- function (x) sub("\\s+$", "", x) 


################################_
### Read files     ####
################################_


#DATAFILES

list_vV <- read.table ("VanVeen_species_list.txt",na.strings="NA",head=T,sep="\t", dec=",", encoding = "utf-8") #encoding is relevant when OCR on scanned documents was performed
head(list_vV)
for (i in c(1:5))    {list_vV[,i] <- trimendspace(as.character(list_vV[,i]))}

list_vVadd <- read.table ("vanVeen_Addendum.txt",na.strings="NA",head=T,sep="\t", dec=",", encoding = "utf-8")
head(list_vVadd)
for (i in c(1:1))    {list_vVadd[,i] <- trimendspace(as.character(list_vVadd[,i]))}

list_Ba <- read.table ("Bartsch_species_list.txt",na.strings="NA",head=T,sep="\t", dec=",", encoding = "utf-8")
head(list_Ba)
for (i in c(1:5))    {list_Ba[,i] <- trimendspace(as.character(list_Ba[,i]))}

list_CH <- read.table ("checklist_CH.txt",na.strings="NA",head=T,sep="\t", dec=",", encoding = "utf-8")
head(list_CH)
for (i in c(1:3))    {list_CH[,i] <- trimendspace(as.character(list_CH[,i]))}

list_DE <- read.table ("checklist_DE.txt",na.strings="NA",head=T,sep="\t", dec=",", encoding = "utf-8")
head(list_DE)
for (i in c(1:5))    {list_DE[,i] <- trimendspace(as.character(list_DE[,i]))}



Two functions - the heart of the code:



#function for consulting Gbif and putting the right information in a dataframe
#with the species list copied to 'Gbifask'

func.GbifQuery <<- function() 
{
  #get current status for a list of species from gbif
  listOfResults <<- get_gbifid_(Gbifask)
  
  cat("\n", file = "gbifunknown.txt", append = F) #File for species names without retuns; F: clean file
  
  #put data in dataframe
  for (i in c(1:length(specieslist)))
  {
    if(i==1) # first entry used to start new dataframe
    {
      #first entry is the exact match if any present
      #Gbifid <- listOfResults[[i]][1,]
      listOfResults[[i]][,"enteredname"] <<- names(listOfResults[i])
      Gbifid <<- listOfResults[[i]]
    }  else # second an further are added to dataframe by bindrows
    {
      if(length(listOfResults[[i]][])>0) # all valid entries
      {
        listOfResults[[i]][,"enteredname"] <<- names(listOfResults[i])
        Gbifid <<-  bind_rows(Gbifid, listOfResults[[i]])      
      } else # species unknown to gbif, write to file diectly
      {
        cat("\n", names(listOfResults[i]) ,file = "gbifunknown.txt", append = T)
      }
    }
  }
}


#function for corrections with synonym lists

func.correctlists <<- function()   {
  speciescorrect <<- 0
  
  for (i in c(1:nrow(CorrectionList)))     #go through list with synonyms
  {
    for (Listname in ToCorrect)           #go through series of lists to correct
    {
      Specieslist <<- get(paste(Listname))
      
      speciescorrect <<- as.character(CorrectionList[i, "OldGenSpec"])
      if(length(Specieslist[Specieslist$GenSpec==speciescorrect, "GenSpec"])>0)
      {
        #first save old name
        if(correctiontype=="Synonym")
        {Specieslist[Specieslist$GenSpec==speciescorrect, "SynSpec"] <<- as.character(CorrectionList[i, "OldGenSpec"])}
        #than replace
        Specieslist[Specieslist$GenSpec==speciescorrect, "GenSpec"] <<- as.character(CorrectionList[i, "NewGenSpec"])
      }
      assign(paste(Listname), Specieslist, inherits = TRUE)
    }
  }
}


Merge the species lists:

#Merge the species lists
speciesbind <- bind_rows(list_vV, list_vVadd, list_Ba, list_CH, list_DE)
speciesbind <- speciesbind[order(speciesbind$GenSpec),]

#remove duplicates

#which full species names (with authority) are duplicated?
speciesauthoritiesduplicated <- speciesbind[duplicated(speciesbind$FullGenSpec),"FullGenSpec"]
#remove them
set1 <- speciesbind[-which(speciesbind$FullGenSpec %in% speciesauthoritiesduplicated),]

#check what remains:
speciesduplicated <- set1[duplicated(set1$GenSpec),"GenSpec"]
set1[which(set1$GenSpec %in% speciesduplicated),"FullGenSpec" ]

Look at the saved table. Slightly different spelled authority names can be dismissed, clearly different authority names need to be retained.


Consult the GBIF database with the raw species list:

#make the species list. In our case all duplicates were Authority spelling variations
specieslist <- unique(speciesbind$GenSpec)

#Now find the synonyms
Gbifask <- specieslist
func.GbifQuery() #returns Gbifid


First get a list of typos:

# which entry has no exact match?

# get list of entries which have an exact match
matchingnames <- Gbifid[Gbifid$matchtype=="EXACT",  ]
matchingnameslist <- matchingnames[,c("enteredname")]

#get a list of entries which have a fuzzy match
unresolvednames <- Gbifid[Gbifid$matchtype=="FUZZY",  ]  
#reduce the fuzzy list; filter out entries that also have an exact match
unresolvednames <- unresolvednames[-which(unresolvednames$enteredname %in% matchingnameslist), ]

#save this list, these are possible typos making them unrecognizable for GBIF
namestosave <- unresolvednames[,c("enteredname", "scientificname", "canonicalname","species","matchtype")]
write.table(namestosave, "possibletypos.txt", row.names = FALSE, col.names = TRUE, sep = "\t", dec=".") 
  • Open the saved file in a spreadsheet program, with the goal to make make a correction list
  • FUZZY: mostly misspellings (by OCR) or male/female spelling changes - make a list for corrections. 
  • the column "entered name" gets "OldGenSpec" and the column "canonicalname" gets "NewGenSpec" (synonyms in "species" are handled later). This is a translation list to replace the typos.
  • Carefully check all entries. You can also consult the list of valid species names to see if one of  the fuzzy ones matches. If the fuzzy match is unclear and you like to see if the Authority matches somewhere, you can e.g. use: speciesbind[grep("^Pipiza ju",speciesbind$GenSpec),"FullGenSpec"]
  • Leave alone names that do not match at all! Remove them.
  • Look for crosslinking changes in the list (new name also occurs in old name list): forbidden! (here not present)
  • Name your file TypoCorrection.txt

Remove the typos:

### now replace typos in all lists with correction function ###

#load correction file
corrections <- read.table ("TypoCorrection.txt",na.strings="NA",head=T,sep="\t", dec=",")
head(corrections)
for (i in c(1:2))    {corrections[,i] <- trimendspace(as.character(corrections[,i]))}

ToCorrect <- c("list_vV","list_vVadd","list_Ba","list_CH","list_DE")
CorrectionList <- corrections
correctiontype <- "Typo"
func.correctlists() 


Get synonyms round 1

#Merge species lists
speciesbind <- bind_rows(list_vV, list_vVadd, list_Ba, list_CH, list_DE, list_SA)
speciesbind <- speciesbind[order(speciesbind$GenSpec),]
specieslist <- unique(speciesbind$GenSpec)

#get current status for species from Gbif and put in dataframe
Gbifask <- specieslist
func.GbifQuery() #returns Gbifid

### Identify synonyms and evaluate thoroughly ###

#having solved all Fuzzy returns without an accepted counterpart in the data in the previous step, we now only have fuzzy returns which can be ignored, because they have a recognized valid name as well
#the names remaining are species with exact match with either synonym false and synonym true

#in first instance you would try to get the synonyms in this way:
resolvenames <- Gbifid[Gbifid$matchtype=="EXACT" & Gbifid$synonym==TRUE,  ]  #list of names marked as synonym
namestosave1 <- resolvenames[,c("enteredname", "scientificname", "canonicalname","species")]
#however this also lists all other known synonyms that are not relevant here. 
#the list needs to be reduced to the names that were originally entered - and see which of those ar now considered synonyms
getnames <- namestosave1[, "enteredname"]  
resolvenames2 <- Gbifid[which(Gbifid$enteredname %in% getnames),  ]  #reduce Gbifid
resolvenames3 <- resolvenames2[resolvenames2$matchtype=="EXACT", ]  #retain those labelled as exact match
namestosave2 <- resolvenames3[,c("enteredname", "scientificname", "canonicalname","species", "synonym")]
write.table(namestosave2, "synonymsfromgbif.txt", row.names = FALSE, col.names = TRUE, sep = "\t", dec=".") # save this table
  • open the saved file in a spreadsheet program, with the goal to make make a synonym list to replace 'old' names
  • the column "entered name" gets "OldGenSpec" and the column "species" gets "NewGenSpec"
  • when one name has both an entry for synonym true and false, choose the right one: you can check for options in your data like this: speciesbind[speciesbind$GenSpec=="Eristalis lineata","FullGenSpec"] If multiple sources (duplicates in speciesbind) consistently use the same authority, you can use that one (if synonym=false you can thus delete both entries). You can also check other sources for the right authority
  • go through all remaining names and decide what is the right and accepted name
  • at the end of this blog post I will give some hints on doing this, since GBIF is far from perfect when it comes to insect classification in general.
  • for now accept the synonym list you made
  • look for crosslinking changes in the list (new name also occurs in old name list): forbidden! (here not present)
  • name your file Synonyms1.txt


Replace synonym names with most actual one:

# Prepare new columns and variables

synonyms1 <- read.table ("Synonyms1.txt",na.strings="NA",head=T,sep="\t", dec=",")
head(synonyms1)
for (i in c(1:2))    {synonyms1[,i] <- trimendspace(as.character(synonyms1[,i]))}

ToCorrect <- c("list_vV","list_vVadd","list_Ba","list_CH","list_DE")
CorrectionList <- synonyms1
correctiontype <- "Synonym"
func.correctlists() 


Resolve remaining issues:

#Merge species lists
speciesbind <- bind_rows(list_vV, list_vVadd, list_Ba, list_CH, list_DE, list_SA)
speciesbind <- speciesbind[order(speciesbind$GenSpec),]
specieslist <- unique(speciesbind$GenSpec)

#get current status for species from Gbif and put in dataframe
Gbifask <- specieslist
func.GbifQuery() #returns Gbifid

#get list of species names with exact match 
matchingnames <- Gbifid[Gbifid$matchtype=="EXACT",  ]
matchingnameslist <- matchingnames[,c("enteredname")]

#get unresolved names
unresolvednames <- Gbifid[Gbifid$matchtype!="EXACT",  ]  
#filter out those with exact match
unresolvednames <- unresolvednames[-which(unresolvednames$enteredname %in% matchingnameslist), ]
#save unresolved names to file
namestosave <- unresolvednames[,c("enteredname", "scientificname", "canonicalname","species","matchtype")]
write.table(namestosave, "gbifunclear.txt", row.names = FALSE, col.names = TRUE, sep = "\t", dec=".") 

# open gbifunknown.txt and gbifunclear.txt and edit as spreadsheet
# there are probably more misspellings and/or synonyms to resolve
# make a new file with synonyms, name it Synonyms2.txt

# replace synonyms

synonyms2 <- read.table ("Synonyms2.txt",na.strings="NA",head=T,sep="\t", dec=",")
head(synonyms2)
for (i in c(1:2))    {synonyms2[,i] <- trimendspace(as.character(synonyms2[,i]))}

ToCorrect <- c("list_vV","list_vVadd","list_Ba","list_CH","list_DE")
CorrectionList <- synonyms2
correctiontype <- "Synonym"
func.correctlists() 



Combining the different species lists in one table and solve multiple synonyms:

#challenge: some accepted species names have multiple synonyms that need to be merged

#Merge species lists
speciesbind <- bind_rows(list_vV, list_vVadd, list_Ba, list_CH, list_DE)
speciesbind <- speciesbind[order(speciesbind$GenSpec),]
speciesbind <- speciesbind[!is.na(speciesbind$GenSpec),]

#make unique species list
#specieslist <- unique(speciesbind[, c("GenSpec","SynSpec")]) #does not work: many duplicate entries
specieslist <- unique(speciesbind$GenSpec)

#deal with  multiple synonyms
speciessynonyms <-  unique(speciesbind[speciesbind$SynSpec!="0", c("GenSpec","SynSpec")  ])
specieslistwithdouble <- speciessynonyms[duplicated(speciessynonyms$GenSpec),c("GenSpec")]

#merge synonyms
specieswithdouble <- setNames(as.data.frame(specieslistwithdouble),c("GenSpec"))
specieswithdouble$DSynSpec <- as.character("0")
for(i in c(1:nrow(specieswithdouble)))
{
  allsynonyms <- paste(as.character(speciessynonyms[speciessynonyms$GenSpec==specieslistwithdouble[i] & !is.na(speciessynonyms$GenSpec),c("SynSpec")], sep=","))
  syncombi <- NULL
  for (j in c(1:length(allsynonyms)))
  {
    if(j==1)
      syncombi <- paste0(allsynonyms[j])
    else syncombi <- paste0(syncombi,", ", allsynonyms[j])
  }
  specieswithdouble[i,"DSynSpec"] <- syncombi
}

#replace single synonyms with double synonyms
for (i in c(1:nrow(specieswithdouble)))
{
  speciessynonyms[speciessynonyms$GenSpec==specieswithdouble[i, "GenSpec"] & !is.na(speciessynonyms$GenSpec), "SynSpec"] <- as.character(specieswithdouble[i, "DSynSpec"])  
} 
#reduce duplicates
speciessynonyms <- unique(speciessynonyms)
speciessynonyms <- speciessynonyms[!is.na(speciessynonyms$GenSpec) ,]

#merge species list with synonyms
speciestable <- merge(setNames(as.data.frame(specieslist),c("GenSpec")), speciessynonyms, by="GenSpec", all.x = TRUE)



Other steps: 
add genus name
get a clean standardized authority name for your species
get a column for year of description, which is helpful for judging older species list.

#add Genus name, work with string splitting 
#strsplit(specieslist, " ")
speciestable$Genus <- 0
for (i in c(1:nrow(speciestable)))
{
  speciestable[i,"Genus"] <- strsplit(as.character(speciestable$GenSpec), " ")[[i]][1]
}

#Get fresh Authority names
Gbifask <- specieslist
func.GbifQuery() #returns Gbifid

getnames <- Gbifid[(Gbifid$matchtype=="EXACT" & Gbifid$synonym==FALSE),c("enteredname", "scientificname") ]  
length(specieslist)-nrow(getnames) #some, because of one reversed name change

authority <- setNames(Gbifid[Gbifid$matchtype=="EXACT", c("enteredname", "scientificname") ] ,c("GenSpec", "ScientificName"))  

speciestable <- merge(speciestable, authority, by="GenSpec", all.x = TRUE, all.y = FALSE)

#authorities not available from Gbif, get from own input files
getAuthority <- speciestable[is.na(speciestable$ScientificName), "GenSpec"]

if(length(getAuthority)>0)   #if(nrow(getAuthority)>0)
{
  getAuthority <- setNames(as.data.frame(getAuthority), c("GenSpec"))
  # here Scaeva selenetica does not occur in the list, take the other name?
  getAuthority$ScientificName <- list_vV[list_vV$GenSpec==getAuthority$GenSpec, "FullGenSpec"]
  for (i in c(1:nrow(getAuthority)))
  {  genspec <- getAuthority[i,"GenSpec"]
  ScientificName <- getAuthority[i,"ScientificName"]
  speciestable[speciestable$GenSpec==genspec, "ScientificName"] <- ScientificName
  }
}

#check double authorities
speciestable[duplicated(speciestable$GenSpec),c("GenSpec","ScientificName")]
speciesauthoritiesduplicated <- speciestable[duplicated(speciestable$GenSpec),"GenSpec"]
speciestable[which(speciestable$GenSpec %in% speciesauthoritiesduplicated),]

#from the returned list, choose which to remove
listofnamestoremove <- c("Cheilosia griseiventris Vujic, 1994","Eristalis lineata Wahlberg, 1843",
                         "Eumerus argyropus Doleschall, 1857","Eumerus ruficornis Macquart, 1829",
                         "Merodon rufus (Macquart, 1835)", "Microdon analis Curran, 1940",
                         "Microdon myrmicae", "Paragus quadrifasciatus Say, 1824",
                         "Rhingia rostrata Scopoli, 1763", "Sphaerophoria interrupta Jones, 1917")

#remove them
speciestable <- speciestable[-which(speciestable$ScientificName %in% listofnamestoremove),]

#check if certain authorities were given to multiple species

speciestable[duplicated(speciestable$ScientificName),c("GenSpec","ScientificName")]

#cleanup: remove one non-meaningfull entry:
speciestable <- speciestable[speciestable$GenSpec!="Cheilosia melanura ssp. Rubra",]

# add year of description
speciestable$ID_Year <- 0
for (i in c(1:nrow(speciestable)))
{
  speciestable[i,"ID_Year"] <- substr(strsplit(as.character(speciestable$ScientificName), ", ")[[i]][2], 1, 4)
}





Compare the species lists and put the information in new columns and write the final table

# now see which species is in which list

#KEY van Veen
speciestable$Key_vVeen <- ifelse(speciestable$GenSpec %in% list_vV$GenSpec, "y", "n")
speciestable$Key_vVeen <- ifelse(speciestable$GenSpec %in% list_vVadd$GenSpec, "A", speciestable$Key_vVeen)

#Genus completely covered? #Make table with species per genus and 'no' counts
vVeensum <- setNames(as.data.frame(table(speciestable[speciestable$Key_vVeen=="n","Genus"])), c("Genus", "NumOfNo"))
speciestable$Key_vVeenGen <- ifelse(speciestable$Genus %in% vVeensum$Genus, "n", "y")

#KEY Bartsch
speciestable$Key_Bartsch <- ifelse(speciestable$GenSpec %in% list_Ba$GenSpec, "y", "n")
#Genus completely covered? #Make table with #species per genus and 'no' counts
Basum <- setNames(as.data.frame(table(speciestable[speciestable$Key_Bartsch=="n","Genus"])), c("Genus", "NumOfNo"))
speciestable$Key_BartschGen <- ifelse(speciestable$Genus %in% Basum$Genus, "n", "y")

#Checklists CH, DE, S-A
#Switzerland
speciestable$PA_CH <- ifelse(speciestable$GenSpec %in% list_CH$GenSpec, "p", "a")
speciestable$KeyCH <- ifelse( (speciestable$Key_vVeen=="n" & speciestable$Key_Bartsch=="n" & speciestable$PA_CH=="p"), "n", "y")
speciestable$KeyCH <- ifelse( (speciestable$PA_CH=="a"), "-", speciestable$KeyCH)
#Germany
speciestable$PA_DE <- ifelse(speciestable$GenSpec %in% list_DE$GenSpec, "p", "a")
speciestable$KeyDE <- ifelse( (speciestable$Key_vVeen=="n" & speciestable$Key_Bartsch=="n" & speciestable$PA_DE=="p"), "n", "y")
speciestable$KeyDE <- ifelse( (speciestable$PA_DE=="a"), "-", speciestable$KeyDE)
#small optic correction: 
speciestable$SynSpec <- as.character(speciestable$SynSpec)
speciestable$SynSpec <- ifelse(is.na(speciestable$SynSpec), "-", speciestable$SynSpec)

speciestable <- speciestable[ , c("GenSpec", "Genus", "SynSpec", "Key_vVeen", "Key_vVeenGen","Key_Bartsch", "Key_BartschGen", "PA_CH","KeyCH", "PA_DE", "KeyDE") ]
# "ScientificName","ID_Year" can be added in subsequent step

#FIN
write.table(speciestable, "SyrphidSpecies&Keys&Presence.txt", row.names = FALSE, col.names = TRUE, sep = "\t", dec=".") 


The full R script and its input files can be downloaded here.


3. Discussion of common problems to take in to account

Unfortunately the GBIF database is often wrong about the names of Syrphidae, like:
  • Synonyms are very wrong (e.g. Chrysotoxum festivum and Xanthogramma festiva are separate species, not synonyms)
  • Old and new name should be reveresed (many examples, e.g. Brachypalpoides lentus and Xylota lenta)
  • Genus name changes should be consistent, but aren't always (resulting in two genera names instead of one, e.g. Anasimyia vs Lejops -> choose Anasimya and reverse respective synonyms)
  • Synonymization merging species that should remain separate (e.g. Eristalis picea and    Eristalis rupium are separate species, not synonyms)
  • Some species do not have an exact GBIF match, but are valid anyway (e.g. Eristalis similis, Myathropa florea and Sphaerophoria interrupta)
  • The "Syrph the Net (StN) Species Accounts" is the most elaborate documentation about European Syrphid species, synonyms and doubtfull species names. I trusted this source more than GBIF and consulted it many times to get to my final list of species. 
  • The Genus Cheilosia (not well handled by Gbif) is covered by a separate publication: Claußen, C.; Speight, M.C.D. (2007): Names of uncertain application and some previously unpublished synonyms, in the European Cheilosia fauna (Diptera, Syrphidae). - Volucella 8, 73-86. Stuttgart.
As a final note: I had a very strange error caused by the OCR software. In some species names it turned the letter 'l' into a special character, that I could not convert to a 'l' in R in any way, leading to the strange fact that R handled e.g. 'Episyrphus balteatus' and 'Episyrphus balteatus' as being equal, but both unique at the same time. The only working solution was to re-type the specific names in the spreadscheet files manually, to get rid of these type of duplicates in the list.
The supplied synonym files used in my R-script include all those changes needed for the list I received from GBIF. Note that GBIF is constantly changing, possibly requiring a slightly different synonyization list.

Code for some of the manual work

# track more misspellings
similarspecies <- as.data.frame(specieslist)
similarspecies$specieslist <- as.character(similarspecies$specieslist)
similarspecies$short <-  substr(similarspecies$specieslist, 1, nchar(similarspecies$specieslist)-5)
templist <- similarspecies[duplicated(similarspecies$short), "short"]
similarspecies[similarspecies$short %in% templist,]
 
# check for double species names accepted under different genera
# similarnames <- as.data.frame(speciesbind[, c("GenSpec", "Genus", "Species")])
similarnames <- as.data.frame(specieslist)
# add Genus name and species name, work with string splitting 
similarnames$Genus <- 0
similarnames$Species <- 0
for (i in c(1:nrow(similarnames)))
{
  similarnames[i,"Genus"] <- strsplit(as.character(similarnames$specieslist), " ")[[i]][1]
  similarnames[i,"Species"] <- strsplit(as.character(similarnames$specieslist), " ")[[i]][2]
}
similarnames$short <-  substr(similarnames$Species, 1, nchar(similarnames$Species)-2)
doublenames <- similarnames[duplicated(similarnames$short), "short"]
doublenamestable <- similarnames[similarnames$short %in% doublenames,]
doublenamestable[order(doublenamestable$short),]
 
# I also recommend to do new Gbif Queries
# You can use an extra file for replacement "Extra synonyms.txt" 
# Or do manual replacements like this:
speciestable [speciestable $GenSpec=="Merodon subfasciatus", "GenSpec"] <- "Merodon cinereus" 
 
# "Doubtfull species" can be removed like this 
list_Chei <- read.table ("Cheilosia.txt",na.strings="NA",head=T,sep="\t", dec=",")
head(list_Chei)
for (i in c(1:4))    {list_Chei[,i] <- trimendspace(as.character(list_Chei[,i]))}
# Or remove species manually
speciestable <- speciestable[speciestable$GenSpec!="Eumerus emarginatus",]
 



4. The final list

The final formatted list for downloading

The final table has for both identification keys a colomn with yes/no for each species. The species supplied in the addendum by van Veen, are specified with "A". A genus completely covered by the key is marked with a vertical black line. For Switserland and Germany there is present/absent column, with an additional column whether or not the present species can be identified with one of both keys, with "n" highlighted. These are the species that require additional keys. Any species in the same genus identified with those two main keys need to be treated carefully, since it can also be one of the rarer species for which you need an additional key. Have fun identifying!
 



Donnerstag, 26. April 2018

Die besten Pflanzen für Wildbienen und Schmetterlinge

Einige Anregungen zu Insekten-freundlich Gärtnern: eine Tabelle mit den besten Pflanzen für Wildbienen und Schmetterlinge.


Orientalischer Mohn, Hauswurz und Schafgarbe werden gerne von Wildbienen besucht.

"Mit welche Pflanze kann ich im Garten Bestäuber unterstützen?"
"Was kann ich gegen das Insektensterben machen?"

Solche Fragen bekomme ich oft, und diese sind gar nicht so einfach zu beantworten. Zum ersten hat jede Pflanze eigene Qualitäten die ein Insekt gefallen. So hat Pflanze A viel Nektar und wenig Pollen und Pflanze B umgekehrt. Manche Pflanzen wie Brennnessel sind für uns langweilig aber großartiges Insektenfutter. Zum zweiten ist das Fördern von  Insekten so viel mehr ist als nur 5 Pflanzen in einer Ecke setzen oder ein Bienenhotel hinstellen. Als Faustregel gilt, um so intensiver der Garten gepflegt wird und 'sauber gehalten', umso weniger Platz es für Insekten gibt, die gerne in allen Ecken kriechen. Natürlich gibt es viele Zwischenwege, zwischen ein gefliester Garten mit Monokultur-Rasen und ein wilder ungepflegter 'Herrenloser' Garten. Um diesen Zwischenweg im eigenen Garten zu finden braucht man zuerst eine Liste von Pflanzen die für verschiedene Insekten geeignet sind, sodass man Kombinationen wählen und 'Biotopen' im Garten gestalten kann.

Ich wollte die Frage wissenschaftlich angehen und habe einige (wissenschaftliche) Publikationen zu diesem Thema zusammen gesucht und habe die Daten zu einen Lesbaren Tabelle bearbeitet.

Tabelle: Die besten Pflanzen für Wildbienen und Schmetterlinge


Pflanze Wissenschaftlicher Name Familie Unterstützung von: Bienenkenner Favorit? Nektarmenge Pollenmenge (/Wert) Früh- blüher Lang- blüher
Ziergartenblumen
Acker-Hundskamille Anthemis arvensis Asteraceae viele Bienenarten ja
Korn-Flockenblume Centaurea cyanus Asteraceae viele Bienenarten, Schmetterlinge ja mittel hoch
Mädchenaugen Coreopsis picta Asteraceae mittel mittel
Mädchenaugen Coreopsis tinctoria Asteraceae mittel hoch
Schmückkörbchen Cosmos bipinnatus Asteraceae ungeeignet ja mittel hoch
Gewöhnliche Sonnenblume Helianthus annuus Asteraceae
Cosmidium Brünette Thelesperma burridgeanum Asteraceae
Wegerichblättrige Natternkopf Echium plantagineum Boraginaceae viele Bienenarten ja
Schöterich Erysimum spec. Brassicaceae viele Bienenarten ja wertvoll
Gewöhnliche Nachtviole Hesperis matronalis Brassicaceae viele Bienenarten ja
Strand-Silberkraut Lobularia maritima Brassicaceae niedrig niedrig
Judas-Silberling (Einjähriges-Silberblatt) Lunaria annua Brassicaceae viele Bienenarten ja ja
Strandlevkoje Malcolmia maritima Brassicaceae niedrig mittel
Gewöhnlicher Sommerflieder Buddleja davidii Buddlejaceae Schmetterlinge
Kartäuser-Nelke Dianthus carthusianorum Caryophyllaceae ja
Schleierkraut Gypsophila elegans Caryophyllaceae mittel mittel
Heidekraut Calluna vulgaris Ericaceae Hummeln, Schmetterlinge (Raupen)
Lerchensporn Corydalis spec. Fumariaceae wertvoll ja
Kriechender Günsel Ajuga reptans Lamiaceae Hummeln ja
Roter Lein Linum grandiflorum Linaceae ungeeignet ja niedrig mittel
Kalifornische Mohn Eschscholzia californica Papaveraceae ungeeignet ja niedrig hoch
Klatsch-Mohn Papaver rhoeas Papaveraceae viele Bienenarten, Hummeln ja niedrig hoch ja
Persischer Ehrenpreis Veronica persica Plantaginaceae niedrig niedrig
Gewöhnliche Grasnelke Armeria maritima Plumbaginaceae ja
Jungfer im Grünen (Schwarzkümmel) Nigella damascena Ranunculaceae mittel hoch
Weiße Resede Reseda alba Resedaceae viele Bienenarten ja
Garten-Resede Reseda odorata Resedaceae viele Bienenarten ja
Gold-Schafgarbe Achillea filipendula Asteraceae viele Bienenarten ja
Zwiebelgewächse
Berg-Lauch Allium montanum Liliaceae Maskenbienen ja
Runden Lauch Allium rotundum Liliaceae Maskenbienen ja
Kugelköpfiger Lauch Allium sphaerocephalon Liliaceae Maskenbienen ja
Traubenhyazinthe Muscari spec. Liliaceae Frühlingsbienen ja
Breitblättriger Dolden-Milchstern Ornithogalum umbellatum Liliaceae Schmetterlinge ja ja
Heil-/Gewürzkräuter
Echte Kamille Matricaria recutita Asteraceae viele Bienenarten ja
Echte Johanniskraut Hypericum perforatum Hypericaceae ja
Echter Ysop Hyssopus officinalis Lamiaceae viele Bienenarten ja
Echter Salbei Salvia officinalis Lamiaceae viele Bienenarten ja
Muskatteller-Salbei Salvia sclarea Lamiaceae viele Bienenarten, Holzbienen ja
Bergbohnenkraut Satureja montana Lamiaceae viele Bienenarten ja
Zitronen-Thymian Thymus citridorus Lamiaceae viele Bienenarten ja
Thymian Thymus spec. Lamiaceae viele Bienenarten, Schmetterlinge ja
Gewürz-Thymian Thymus vulgaris Lamiaceae viele Bienenarten ja
Nutzpflanzen
Küsten-Salzkraut Salsola kali Amaranthaceae ja
Gewöhnlicher Pastinak Pastinaca sativa Apiaceae
Garten-Boretsch Borago officinalis Boraginaceae viele Bienenarten, Hummeln
Raps Brassica napus Brassicaceae viele Bienenarten ja ja
Schmalblättriger Doppelsame (Rucola) Diplotaxis tenuifolia Brassicaceae ja
Senf Sinapis spec. Brassicaceae Hummeln, viele Bienenarten ja niedrig niedrig
Echtes Seifenkraut Saponaria officinalis Caryophyllaceae
Echte Luzerne Medicago sativa Fabaceae viele Bienenarten, Mauerbienen, Schmetterlinge
Gemüse-Spargel Asparagus officinalis Liliaceae
Saat-Lein Linum usitatissimum Linaceae viele Bienenarten
Bäume und Sträucher
Ahorn Acer spec. Aceraceae Frühlingsbienen wertvoll ja
Berberitze Berberis spec. Berberidaceae wertvoll ja
Erle Alnus spec. Betulaceae Schmetterlinge (Raupen)
Birke Betula spec. Betulaceae Mauerbienen, Schmetterlinge (Raupen) wertvoll ja
Gewöhnliche Hasel Corylus avellana Betulaceae Schmetterlinge (Raupen) wertvoll ja
Heckenkirsche Lonicera spec. Caprifoliaceae viele Bienenarten, Schmetterlinge
Gewöhnliche Hainbuche Carpinus betulus Corylaceae Schmetterlinge (Raupen) ja
Heidelbeere (Blaubeere) Vaccinium myrtillus Ericaceae viele Bienenarten, Schmetterlinge ja
Trunkelbeere Vaccinium uliginosum Ericaceae viele Bienenarten, Schmetterlinge
Gewöhnlicher Blasenstrauch Colutea arborescens Fabaceae viele Bienenarten ja
Besenginster Cytisus scoparius Fabaceae Schmetterlinge (Raupen), Bienen
Gewöhnlicher Goldregen Laburnum anagyroides Fabaceae Mauerbienen
Rot-Buche Fagus sylvatica Fagaceae Schmetterlinge (Raupen) ja
Eiche Quercus spec. Fagaceae Mauerbienen, Schmetterlinge (Raupen) wertvoll ja
Alpen-Johannisbeere Ribes alpinum Grossulariaceae viele Bienenarten ja ja
Rote Johannisbeere Ribes rubrum Grossulariaceae viele Bienenarten ja ja
Stachelbeere Ribes uva-crispa Grossulariaceae viele Bienenarten ja ja
Walnuss Juglans spec. Juglandaceae Mauerbienen
Linde Tilia spec. Malvaceae viele Bienenarten, Schmetterlinge (Raupen) x
Gewöhnliche Esche Fraxinus excelsior Oleaceae Schmetterlinge (Raupen) wertvoll ja
Gewöhnlicher Liguster Ligustrum vulgare Oleaceae Schmetterlinge (Raupen)
Gewöhnliche Fichte Picea abies Pinaceae Schmetterlinge (Raupen) ja
Faulbaum Frangula alnus Rhamnaceae Schmetterlinge (Raupen)
Zwergmispel Cotoneaster spec. Rosaceae wertvoll ja
Weißdorn Crataegus spec. Rosaceae Frühlingsbienen, Schmetterlinge ja wertvoll ja
Echte Quitte Cydonia oblonga Rosaceae
Kultur-Apfel Malus domestica Rosaceae Mauerbienen ja
Wild-Apfel Malus sylvestris Rosaceae Mauerbienen wertvoll ja
Süß-Kirsche (Vogel-Kirsche) Prunus avium Rosaceae Frühlingsbienen ja ja
Kirsch-Pflaume Prunus cerasifera Rosaceae Frühlingsbienen ja
Pflaume (Zwetschge) Prunus domestica Rosaceae Frühlingsbienen, Schmetterlinge (Raupen) ja
Trauben-Kirsche Prunus padus Rosaceae Frühlingsbienen, Schmetterlinge (Raupen) ja
Späte Trauben-Kirsche Prunus serotina Rosaceae
Kirsche Prunus spec. Rosaceae Frühlingsbienen, Schmetterlinge (Raupen) wertvoll ja
Gewöhnliche Schlehe Prunus spinosa Rosaceae Frühlingsbienen, Schmetterlinge (Raupen) ja ja
Hunds-Rose Rosa canina Rosaceae
Rose Rosa spec. Rosaceae viele Bienenarten, Schmetterlinge (Raupen) ja
Brombeere/Himbeere Rubus spec. Rosaceae viele Bienenarten, Mauerbienen, Hummeln, Schmetterlinge (Raupen)
Eberesche (Vogelbeere) Sorbus aucuparia Rosaceae Schmetterlinge (Raupen)
Pappel Populus spec. Salicaceae Schmetterlinge (Raupen) ja
Weide Salix spec. Salicaceae Frühlingsbienen, Schmetterlinge (Raupen) ja wertvoll ja
Ulme Ulmus spec. Ulmaceae Schmetterlinge (Raupen)
Wildblumen Wiese
Wiesen-Kerbel Anthriscus sylvestris Apiaceae viele Bienenarten ja
Gewöhnliche Möhre Daucus carota Apiaceae viele Bienenarten ja niedrig niedrig
Gewöhnliche Bärenklau Heracleum sphondylium Apiaceae viele Bienenarten ja
Garten-Ringelblume Calendula officinalis Asteraceae viele Bienenarten mittel hoch
Wiesen-Pippau Crepis biennis Asteraceae viele Bienenarten ja
Kleinköpfige Pippau Crepis capillaris Asteraceae kein mittel ja
Dach-Pippau Crepis tectorum Asteraceae
Gewöhnliches Ferkelkraut Hypochaeris radicata Asteraceae viele Bienenarten ja hoch mittel ja
Steifhaariger Löwenzahn Leontodon hispidus Asteraceae viele Bienenarten ja hoch mittel
Acker-Vergissmeinnicht Myosotis arvensis Boraginaceae niedrig kein ja
Hügel-Vergissmeinnicht Myosotis ramosissima Boraginaceae ja
Wiesen-Schaumkraut Cardamine pratensis Brassicaceae viele Bienenarten ja ja
Wiesen-Glockenblume Campanula patula Campanulaceae viele Bienenarten ja
Rundblättrige Glockenblume Campanula rotundifolia Campanulaceae viele Bienenarten ja
Tauben-Skabiose Scabiosa columbaria Caprifoliaceae viele Bienenarten, Schmetterlinge ja
Wiesen-Witwenblume Knautia arvensis Dipsacaceae viele Bienenarten, Schmetterlinge ja
Zypressen-Wolfsmilch Euphorbia cyparissias Euphorbiaceae ja ja
Gewöhnlicher Hufeisenklee Hippocrepis comosa Fabaceae viele Bienenarten, Mauerbienen, Schmetterlinge
Wiesen-Platterbse Lathyrus pratensis Fabaceae viele Bienenarten ja
Gewöhnlicher Hornklee Lotus corniculatus Fabaceae viele Bienenarten, Mauerbienen, Schmetterlinge ja niedrig mittel
Weiße Steinklee Melilotus albus Fabaceae Hummeln ja
Gelbe Steinklee Melilotus officinalis Fabaceae Hummeln ja
Futter-Esparsette Onobrychis viciifolia Fabaceae viele Bienenarten ja
Kleiner Vogelfuß Ornithopus perpusillus Fabaceae
Wiesen-Salbei Salvia pratensis Lamiaceae viele Bienenarten ja ja
Zweijährige Nachtkerze Oenothera biennis Onagraceae
Scharfer Hahnenfuß Ranunculus acris Ranunculaceae viele Bienenarten, Mauerbienen ja mittel mittel
Knolliger Hahnenfuß Ranunculus bulbosus Ranunculaceae viele Bienenarten, Mauerbienen ja
Kriechender Hahnenfuß Ranunculus repens Ranunculaceae Mauerbienen mittel mittel
Hahnenfuß Ranunculus spec. Ranunculaceae Mauerbienen
Gamander-Ehrenpreis Veronica chamaedrys Scrophulariaceae viele Bienenarten ja niedrig
Acker-Stiefmütterchen Viola arvensis Violaceae ja
Wildstauden
Gewöhnliches Bitterkraut Picris hieracioides Asteraceae viele Bienenarten ja
Flachblättiger Mannstreu Eryngium planum Apiaceae viele Bienenarten ja
Gewöhnliche Schafgarbe Achillea millefolium Asteraceae viele Bienenarten niedrig mittel
Färber-Hundskamille Anthemis tinctoria Asteraceae viele Bienenarten ja
Feld-Beifuß Artemisia campestris Asteraceae
Ochsenauge Buphthalmum salicifolium Asteraceae viele Bienenarten ja
Wiesen-Flockenblume Centaurea jacea Asteraceae viele Bienenarten, Schmetterlinge ja
Schwarze Flockenblume Centaurea nigra Asteraceae viele Bienenarten, Schmetterlinge hoch hoch
Skabiosen-Flockenblume Centaurea scabiosa Asteraceae viele Bienenarten, Schmetterlinge
Rispen-Flockenblume Centaurea stoebe Asteraceae viele Bienenarten ja ja
Gewöhnliche Wegwarte Cichorium intybus Asteraceae viele Bienenarten ja
Gewöhnlicher Wasserdost Eupatorium cannabinum Asteraceae Schmetterlinge, Bienen
Strohblume Helichrysum spec. Asteraceae viele Bienenarten ja
Wollige Strohblume (var. Schwefellicht) Helichrysum thianshanicum Asteraceae viele Bienenarten ja
Mausohr-Habichtskraut Hieracium pilosella Asteraceae ja
Habichtskraut Hieracium spec. Asteraceae Schmetterlinge
Schwertalant Inula ensifolia Asteraceae viele Bienenarten ja
Frühe Margerite Leucanthemum vulgare Asteraceae mittel hoch
Großes Flohkraut Pulicaria dysenterica Asteraceae viele Bienenarten ja
Herbst-Schuppenlöwenzahn Scorzoneroides autumnalis Asteraceae mittel hoch
Rainfarn Tanacetum vulgare Asteraceae ja
Großer Bocksbart Tragopogon dubius Asteraceae ja
Acker-Krummhals Anchusa arvensis Boraginaceae viele Bienenarten
Gewöhnliche Ochsenzunge Anchusa officinalis Boraginaceae viele Bienenarten ja
Schmalblättriges Lungenkraut Pulmonaria angustifolia Boraginaceae viele Bienenarten ja
Weiches Lungenkraut Pulmonaria mollis Boraginaceae viele Bienenarten ja ja
Geflecktes Lungenkraut Pulmonaria officinalis Boraginaceae viele Bienenarten ja wertvoll
Beinwell Symphytum spec. Boraginaceae wertvoll
Kelch-Steinkraut Alyssum alyssoides Brassicaceae Frühlingsbienen ja ja
Felsen-Steinkraut Alyssum saxatile Brassicaceae Frühlingsbienen ja ja
Steinkraut Alyssum spec. Brassicaceae Frühlingsbienen ja
Blaukissen Aubriecia deltoidea Brassicaceae viele Bienenarten ja ja
Bleicher Schöterich Erysimum crepidifolium Brassicaceae viele Bienenarten ja ja
Pfirsichblättrige Glockenblume Campanula persicifolia Campanulaceae viele Bienenarten ja
Glockenblume Campanula spec. Campanulaceae viele Bienenarten ja
Rote Lichtnelke Silene dioica Caryophyllaceae mittel mittel ja
Weiße Lichtnelke Silene latifolia Caryophyllaceae mittel mittel
Breitblättrige Lichtnelke Silene latifolia Caryophyllaceae
Nickendes Leimkraut Silene nutans Caryophyllaceae Schmetterlinge
Ohrlöffel-Leimkraut Silene otites Caryophyllaceae
Taubenkropf-Leimkraut Silene vulgaris Caryophyllaceae Schmetterlinge
Gewöhnliches Sonnenröschen Helianthemum nummularium Cistaceae ja
Scharfer Mauerpfeffer Sedum acre Crassulaceae viele Bienenarten ja ja
Fetthenne Sedum spec. Crassulaceae viele Bienenarten ja
Spinnwebiger Hauswurz Sempervivum arachnoideum Crassulaceae viele Bienenarten ja
Hauswurz Sempervivum spec. Crassulaceae viele Bienenarten ja
Wald-Platterbse Lathyrus sylvestris Fabaceae ja
Knollen-Platterbse Lathyrus tuberosus Fabaceae ja
Sichel-Luzerne Medicago falcata Fabaceae ja
Hauhechel Ononis spec. Fabaceae viele Bienenarten ja ja
Hasen-Klee Trifolium arvense Fabaceae ja
Feld-Klee Trifolium campestre Fabaceae ja
Rot-Klee Trifolium pratense Fabaceae viele Bienenarten, Mauerbienen, Hummeln, Schmetterlinge niedrig niedrig
Weiß-Klee Trifolium repens Fabaceae viele Bienenarten, Mauerbienen niedrig niedrig
Persischer Klee Trifolium resupinatum Fabaceae viele Bienenarten ja
Schmalblättrige Wicke Vicia angustifolia Fabaceae ja
Vogel-Wicke Vicia cracca Fabaceae mittel niedrig
Behaarte Wicke Vicia hirsuta Fabaceae niedrig niedrig
Platterbsen-Wicke Vicia lathyroides Fabaceae ja
Zaun-Wicke Vicia sepium Fabaceae viele Bienenarten ja
Gewöhnliche Schwarznessel Ballota nigra Lamiaceae viele Bienenarten, Mauerbienen ja
Gewöhnlicher Dost Origanum vulgare Lamiaceae viele Bienenarten, Schmetterlinge mittel niedrig
Gewöhnliche Braunelle Prunella vulgaris Lamiaceae mittel niedrig
Woll-Ziest Stachys byzantina Lamiaceae viele Bienenarten ja
Heil-Ziest Stachys officinalis Lamiaceae viele Bienenarten ja
Sumpf-Ziest Stachys palustris Lamiaceae viele Bienenarten ja
Aufrechter Ziest Stachys recta Lamiaceae viele Bienenarten ja ja
Wald-Ziest Stachys sylvatica Lamiaceae viele Bienenarten ja
Gamander Teucrium spec. Lamiaceae viele Bienenarten ja
Gewöhnlicher Blutweiderich Lythrum salicaria Lythraceae viele Bienenarten ja
Echter Eibisch Althaea officinalis Malvaceae viele Bienenarten ja
Spitzblatt-Malve Malva alcea Malvaceae viele Bienenarten ja
Moschus-Malve Malva moschata Malvaceae viele Bienenarten ja mittel hoch
Wilde Malve Malva sylvestris Malvaceae viele Bienenarten
Drüsige Weidenröschen Epilobium ciliatum Onagraceae mittel niedrig ja
Berg-Weidenröschen Epilobium montanum Onagraceae niedrig niedrig ja
Punkt-Gilbweiderich Lysimachia punctata Primulaceae viele Bienenarten ja
Gilbweiderich Lysimachia spec. Primulaceae viele Bienenarten ja
Gewöhnlicher Gilbweiderich Lysimachia vulgaris Primulaceae viele Bienenarten ja
Echte Schlüsselblume Primula veris Primulaceae ja
Busch-Windröschen Anemone nemorosa Ranunculaceae Frühlingsbienen wertvoll
Gewöhnliche Waldrebe Clematis vitalba Ranunculaceae viele Bienenarten, Schmetterlinge (Raupen)
Silber-Fingerkraut Potentilla argentea Rosaceae ja
Gewöhnliches Frühlings-Fingerkraut Potentilla tabernaemontani Rosaceae ja ja
Hügel-Meier Asperula cynanchica Rubiaceae
Labkraut Galium spec. Rubiaceae Schmetterlinge (Raupen) niedrig niedrig
Gewöhnliches Leinkraut Linaria vulgaris Scrophulariaceae
Kleiner Klappertopf Rhinanthus minor Scrophulariaceae
Windblumen-Königskerze Verbascum phlomoides Scrophulariaceae ja
Frühlings-Ehrenpreis Veronica verna Scrophulariaceae ja
Pionierpflanzen
Nickende Distel Carduus nutans Asteraceae viele Bienenarten ja ja
Lanzett-Kratzdistel Cirsium vulgare Asteraceae viele Bienenarten ja hoch
Gewöhnlicher Natternkopf Echium vulgare Boraginaceae viele Bienenarten, Schmetterlinge ja mittel mittel ja
Einjähriger Knäuel Scleranthus annuus Caryophyllaceae ja
Ausdauernder Knäuel Scleranthus perennis Caryophyllaceae
Gelber Wau Reseda lutea Resedaceae viele Bienenarten ja mittel mittel
Färber-Resede Reseda luteola Resedaceae viele Bienenarten ja
Dreifinger-Steinbrech Saxifraga tridactylites Saxifragaceae ja
Gewöhnlicher Efeu Hedera helix Araliaceae viele Bienenarten ja
Rotbeerige Zaunrübe Bryonia dioica Cucurbitaceae viele Bienenarten ja
Schwarze Platterbse Lathyrus niger Fabaceae viele Bienenarten ja
Unkräuter
Weißer Gänsefuß Chenopodium album Amaranthaceae viele Bienenarten
Ausdauerndes Gänseblümchen Bellis perennis Asteraceae niedrig mittel
Großer Knorpellattich Chondrilla juncea Asteraceae
Acker-Kratzdistel Cirsium arvense Asteraceae viele Bienenarten, Schmetterlinge hoch mittel
Sumpf-Kratzdistel Cirsium palustre Asteraceae viele Bienenarten, Schmetterlinge
Feinstrahl-Berufkraut Erigeron annuus Asteraceae
Saat-Wucherblume Glebionis segetum Asteraceae mittel hoch
Kompass-Lattich Lactuca serriola Asteraceae
Lattich Lactuca spec. Asteraceae
Gemeiner Rainkohl Lapsana communis Asteraceae niedrig mittel
Strahlenlose Kamille Matricaria discoidea Asteraceae kein mittel
Jakobs-Greiskraut Senecio jacobaea Asteraceae hoch mittel ja
Frühlings-Greiskraut Senecio vernalis Asteraceae ja
Gewöhnliches Greiskraut Senecio vulgaris Asteraceae kein mittel
Raue Gänsedistel Sonchus asper Asteraceae mittel mittel
Kohl-Gänsedistel Sonchus oleraceus Asteraceae mittel mittel
Löwenzahn Taraxacum spec. Asteraceae viele Bienenarten, Schmetterlinge hoch hoch
Geruchlose Kamille Tripleurospermum inodorum Asteraceae hoch hoch
Falsche Strandkamille Tripleurospermum perforatum Asteraceae
Drüsiges Springkraut Impatiens glandulifera Balsaminaceae
Gewöhnliche Hundszunge Cynoglossum officinale Boraginaceae
Gewöhnliche Knoblauchsrauke Alliaria petiolata Brassicaceae Frühlingsbienen ja
Acker-Schmalwand Arabidopsis thaliana Brassicaceae ja
Turmkraut Arabis glabra Brassicaceae
Behaarte Gänsekresse Arabis hirsuta Brassicaceae
Graukresse Berteroa incana Brassicaceae ja
Gewöhnliches Hirtentäschel Capsella bursa-pastoris Brassicaceae niedrig kein
Wasabi-Rauke Diplotaxis erucoides Brassicaceae
Ungarische Rauke Sisymbrium altissimum Brassicaceae ja
Weg-Rauke Sisymbrium officinale Brassicaceae niedrig niedrig
Thymianblättriges Sandkraut Arenaria serpyllifolia Caryophyllaceae
Acker-Hornkraut Cerastium arvense Caryophyllaceae ja ja
Quellen-Hornkraut Cerastium fontanum Caryophyllaceae niedrig niedrig
Gewöhnliches Hornkraut Cerastium holosteoides Caryophyllaceae
Gras-Sternmiere Stellaria graminea Caryophyllaceae niedrig niedrig
Vogel-Sternmiere Stellaria media Caryophyllaceae niedrig kein
Gewöhnlicher Erdrauch Fumaria officinalis Fumariaceae niedrig niedrig
Gewöhnlicher Reiherschnabel Erodium cicutarium Geraniaceae ja ja
Weicher Storchschnabel Geranium molle Geraniaceae niedrig niedrig ja
Kleiner Storchschnabel Geranium pusillum Geraniaceae
Stechender Hohlzahn Galeopsis tetrahit Lamiaceae niedrig
Weiße Taubnessel Lamium album Lamiaceae viele Bienenarten ja
Gefleckte Taubnessel Lamium maculatum Lamiaceae viele Bienenarten ja ja
Purpurrote Taubnessel Lamium purpureum Lamiaceae viele Bienenarten niedrig niedrig
Acker-Winde Convolvulus arvensis Liliaceae
Schmalblättriges Weidenröschen Chamerion angustifolium Onagraceae mittel hoch
Spitz-Wegerich Plantago lanceolata Plantaginaceae viele Bienenarten, Schmetterlinge (Raupen) kein niedrig
Wegerich Plantago spec. Plantaginaceae viele Bienenarten, Schmetterlinge (Raupen)
Acker-Flügelknöterich Fallopia convolvulus Polygonaceae
Pfeffer-Knöterich Persicaria hydropiper Polygonaceae
Floh-Knöterich Persicaria maculosa Polygonaceae niedrig kein
Acker-Vogelknöterich Polygonum aviculare Polygonaceae niedrig
Großer Sauerampfer Rumex acetosa Polygonaceae Schmetterlinge (Raupen)
Kleiner Sauerampfer Rumex acetosella Polygonaceae Schmetterlinge (Raupen)
Schwarzer Nachtschatten Solanum nigrum Solanaceae
Große Brennnessel Urtica dioica Urticaceae Schmetterlinge (Raupen)
Gräser
Wiesen-Knäuelgras Dactylis glomerata Poaceae Schmetterlinge (Raupen)
Rasen-Schmiele Deschampsia cespitosa Poaceae Schmetterlinge (Raupen)
Gewöhnliches Pfeifengras Molinia caerulea Poaceae Schmetterlinge (Raupen)
Gewöhnliches Schilf Phragmites australis Poaceae Schmetterlinge (Raupen), Bienen (Nestmaterial)


Die Pflanzen 

Die orange markierten Pflanzen sind die mit besonders gutem Wert für Wildbienen oder Schmetterlinge. Wer wenig Platz im Garten hat sollte also diese bevorzugen. Pflanzendiversität und Insektendiversität sind positiv korreliert, also besser ist es mehr Arten zu haben. Und oft gilt auch: die besten Pollen-Pflanzen sind nicht die dominantesten und andere Pflanzen wie Schafgarbe oder Strand-Silberkraut liefern durch deren hohe Pflanzenzahl wieder viel Pollen oder Nektar.
Was auffällt in der Tabelle ist das man bereits einiges im Garten hat; entweder als angepflanzte Staude oder als Unkraut. Solche Kategorien wie 'Unkraut' sind natürlich weich, weil es eben Geschmackssache ist und kein Wissenschaft. Ich habe versucht in 'Wildblume Wiese' einjährige und zweijährige Arten zu packen und in 'Wildstaude' die ausdauernde Arten.

Pflanzenwert

"Unterstützung von" ist eigentlich die Zusammenfassung von verschiedene Wildbienen-Publikationen. Frühlingsbienen sind hauptsächlich Mauerbienen und Sandbienen. Zudem ist Unterstützung von Schmetterlinge basiert auf eine Tabelle von Floraweb, wenn die Pflanze für mehr als 25 Schmetterlingsarten als Futter geeignet ist. Raupen werden genannt wenn die Pflanze vorwiegend als Raupenfutter dient, aber oft sind sowohl der Nektar für die Schmetterlinge als die Blätter für ihre Raupen wertvoll. Die übrigen Pflanzenarten ohne definierte Unterstützung wurden in einer der Artikeln als Bienenpflanze aufgeführt, haben aber kein Wert der besonders erwähnt werden muss.


Den besonders guten Wert für Wildbienen (orangene Markierung) ist definiert nach "Hauptpflanze für Bienen über längere Blütezeit" (Beil 2014), von Hummeln favorisierte Pflanze (hochfrequenter Besuch von von Bombus terrestris oder B. pascuorum oder Körper mit hoher Pollen-Volumen dieser Pflanze, wie untersucht von Carvell et al., 2006), oder von Wildbienen sehr häufig besucht in Kombination mit gut im Bestäuber-Netzwerk Eingebundenheit (Warzecha 2018). Zum Schluss gibt es eine Aufwendige Untersuchung über die Menge Pollen und Nektar die Pflanzen produzieren (Hicks 2016). Diese Publikation listet auch noch einige Pflanzen auf, die laut Literatur Pollen mit einem hohen Eiweiß-Gehalt haben ('wertvoll').

Aus diesen Publikationen wurden die meiste Pflanzen die in Gärten eine Rolle spiele übernommen, auch die mit 'geringerem' Wert. Die Liste wurde erweitert mit Pflanzen die vom Bienenkenner Paul Westrich empfohlen werden in seinem Buch (Westrich 2011) und auf seiner Webseite.
Auch ist diese Reihe von Publikationen ist die Grundlage für welche Art von Wildbienen die Pflanze am wertvollsten ist. Für Mauerbienen gibt es eine weitere Reihe von Publikationen die Pollen in Nester untersucht haben (Raw 1974, Tasei 1976, Márquez 1994, Ivanov 2006, Maclvor 2014, Müller 2015) und so zu wichtigen Futterquellen belegt haben für diese Gruppe.


Pflanzen die in März, April und Mai blühen, werden hier 'Frühblüher' genannt und liefern das wichige erste Futter für nach dem Winterschlaf. Viele Wildbienen haben ihre Hauptflugzeit in diesen Monate und Hummelköninginnen bauen ihre Nester auf. Wichtige Frühblüher sind gekennzeichnet, aber die Information ist nicht vollständig. Die Information 'Langblüher' ist aus dem Artikel von Beil et al. entnommen und erweitert (aber auch nicht komplett für allen Arten). Die lange Blütezeit garantiert Bestäuber verlässliche Futterquellen.

Einige Auffälligkeiten


Auffällig ist das Schmetterlinge als Raupe viele Gräser als Futterpflanze benutzen. Zusammen mit der für Raupen sehr wichtige Brennnessel, kann man sehr gut 'eine wilde Ecke' einrichten mit hochwachsende Gräser und Brennnesseln. Diese wachsen oft am Graben und im Schatten, wo andere Pflanzen sich sowieso weniger wohl fühlen. Auch viele andere nicht gelistete Gras-Arten unterstützen Schmetterlinge, nur die Gräser die mehr als 25 Schmetterlingsarten futtern sind aufgenommen.

Schmückkörbchen (Cosmos bipinnatus), Roter Lein (Linum grandoflorum), Marienkäfermohn (Papaver commutatum) und Goldmohn (Escholtzia californica), sind alle Exoten auf den unsere heimischen Bienenarten nicht angepasst sind. Sie haben trotz guten Nektar- und Pollenmenge kaum Wert für Bienen (Westrich 2011). Ähnliches könnte für weitere nicht-heimischen Mohn-Arten gelten, wie z.B. Orientalischer Mohn (Papaver orientale), aber dazu kenne ich keine Untersuchungen. Letztere Art ist bei Hummeln wegen Pollen beliebt (Bild oben).
Bei manche Pflanzenarten gibt es Zuchtformen die Pollen- oder Nektarzugang durch eine geschlossene Mitte blockieren, wie z.B. Rose, Ringelblume und Kornblume und somit auch ungeiegnet für Bestäuber geworden sind.

Was vielen nicht wissen, ist das Bäume und Sträucher sehr wichtig sind für Bienen. Nicht nur Obstbäume sind wichtig, aber auch viele andere Bäume wie Weide, Eiche, Esche und Walnüsse sind für Bienen wichtige Futterquellen. Auch sind Eiche und Weide wichtige Futterquellen für Raupen. Bei Linden muss man aufpassen, weil die Linden sowohl wertvoll als tödlich sein können (!) Die Linde bietet wertvolle Blätter an Raupen und Nektar an Bienen. Doch ist bei manchen Linden der Zuckergehalt im Nektar niedrig, und verbraucht ein Hummel so viel Energie zur nächste Blüte wie er gerade getrunken hat. Ohne Reserven kommt der Hummel also nicht mehr vom Baum weg. Gerade so was kann passieren dort wo nach Massenblüte wenig Nahrungsangebot ist; da ziehen die Linden Hummeln von weit an und werden zum Hummelfriedhof. Die Lösing is Einfach: unter den Linden ein reiches Blütenangebot sichern mit viele Langzeitblüher. Der Gemeine Hasel (Corylus avellana) ist bekannt als Bienen-Baum aber nur Honigbienen (und wenig andere) können was mit den Wind-getriebene, nicht klebende Pollen anfangen; Nektar wird nicht produziert.
Für Honigbienen und Hummeln ist blühender Efeu sehr wichtig, weil dieser in September und Oktober blüht wenn die meisten andere Blüten schon verschwunden sind. Efeu blüht erst nach 10 Jahren, also ältere Bestände unbedingt behalten!

Viele Pflanzen eignen sich sehr gut als Balkonpflanze. Selber habe ich gute Erfahrungen (robuste gut wachsend oder winterhard mit Malvengewächse (Malven, Stockrosen) und Schmetterlingsblütler (Steinklee, Hopfenklee, Rotklee). Vor allem Steinklee ist einer meinen Favoriten weil dieser pflegeleicht ist und monatelang bis in Oktober blüht und so auch Hummelvölker lange mit Nektar unterstützen.


Die Tabelle als Dokument
Die Daten aus den Papern als Tabellen-Dokument

Quellen:
Beil, M., Kratochwil, A., Storm, C., Schwabe, A. (2014) Community structure and diversity of vegetation and flower-visiting wild bees (Hymenoptera: Apoidea) in sandy dry grassland: are there congruent characteristics? Phytocoenologia Vol. 44, Issue 3-4, 175–192.
Carvell, C., Westrich, P., Meek, W. R., Pywell, R. F. & Nowakowski, M. (2006) Assessing the value of annual and perennial forage mixtures for bumblebees by direct observation and pollen analysis. Apidologie 37, 326–340.
Hicks, D.M., Ouvrard, P., Baldock, K.C.R., Baude, M., Goddard, M.A., Kunin, W.E., et al. (2016) Food for Pollinators: Quantifying the Nectar and Pollen Resources of Urban Flower Meadows. PLoS ONE 11(6): e0158117
Ivanov 2006
MacIvor, J.S., Cabral, J.M., Packer, L. (2014) Pollen specialization by solitary bees in an urban landscape. Urban Ecosyst 17,139–147
Marquez, J., Bosch, J. and Vicens, N. (1994) Pollens collected by wild and managed populations of the potential orchard pollinator Osmia cornuta (Latr.) (Hym., Megachilidae). Journal of Applied Entomology 117, 353-359.
Müller, A. (2015) Nest architecture and pollen hosts of the boreoalpine osmiine bee species Hoplitis (Alcidamea) tuberculata (Hymenoptera, Megachilidae). Journal of Hymenoptera Research 47, 53-64.
Raw, A. (1974) Pollen Preferences of Three Osmia Species (Hymenoptera), Oikos 25, 54–60.
Tasei J.N. (1976) Récolte des pollens et approvisionnement du nid chez Osmia coerulescens L. (Hym. Megachilidae). Apidologie 7, 277-300.
Warzecha, D., Diekötter, T., Wolters, V., Frank Jauker, F. (2018) Attractiveness of wildflower mixtures for wild bees and hoverflies depends on some key plant species. Insect Conservation and Diversity, Volume11, Issue1.
Westrich, P. (2011) Wildbienen. Die anderen Bienen. München (Verlag Dr. Friedrich Pfeil), 168 S.