CTPL2通过中文名批量查询植物学名

关注plantlist程序包的朋友们可能记得我在半年前加了CTPL2函数,用来从excel文件中读取植物名并批量查询。这篇主要谈谈在整理CTPL2所用到的数据集时的心得。

写plantlist程序包CTPL2函数主要是想节约点时间。因为在野外调查结束后,整理植物名录总要花上很多时间,直接输入拉丁名显然是费时费力,极容易出错。其中一种方法是用输入法直接输拉丁名,例如拼音加加,不过要根据已经改过名的植物照片整理名录,用输入法逐个输入也是非常麻烦的,这是因为输入法词库大多不提供物种命名人,在严谨的植物名录中是不能用的。cfh可以基于照片生成名录,但是每个种都要有照片,照片要改好名称,上传到cfh,以便自动生成名录。不过这仍然有这样或那样的不便,例如要查询物种的分布,保护等级等信息,过程就非常繁琐。因此我就想能不能用中文名关联上一个数据库, 实现批量查询。

想法是好的,函数也很容易写,但是R的中文编码问题始终让人极为头疼。试了很多种方法让问题简单, 最终只能选用读取excel文件的方式,把字符编码交给openxlsx程序包处理。因为openxlsx包是依赖于Rcpp的,所以要运行新版的plantlist需要安装这两个包。

做一个工具函数同做艺术品是相通的,都要努力发挥创意。要让这个函数好用,最好能满足以下要求:只要在xlsx文件的第一列,依次输入物种中文名,保存,运行函数就能自动生成一个新的excel文件,里面有如下结果:

  1. 物种的中文名
  2. 学名
  3. 带命名人的学名
  4. APG等现代分类系统的科名
  5. 科中文名
  6. 属名
  7. 属中文名
  8. 该种在国内的IUCN保护等级
  9. 是否为特有植物
  10. 分布的省市缩写
  11. 分布的海拔范围等

因为这些数据都是多样性分析中常用的,所以应尽量出现在结果中。

不同地区物种不同,要满足国内大部分科研人员的需求,名录的覆盖度要很高,所以数据库必须要包括大部分植物的标准中文名。所以这个数据库合并了多个数据库,包括:

  1. 《中国植物志》中文名数据库
  2. The Plant List网站科属数据库
  3. 刘冰等2014中国被子植物属数据库
  4. 中国高等植物IUCN红色名录
  5. 中国种子植物名称和分布数据库

合并后,数据达到53000多条,包括苔藓、蕨类、裸子植物、被子植物的标准中文名。

数据库合并看似容易,实则问题非常多。例如,当前仍然未能找到苔藓的中文科属名称对照表,蕨类部分也仍然需要按照ppg系统整理,这些仍待下次更新时补充。被子植物部分还好有刘冰博士整理的中文名对照表,让进度加快不少。iucn红色名录数据中,有时候两个学名对应同一个中文名,此外还有为数众多的原变种、原亚种以及原变型等,这在匹配时都是很大的麻烦。不过由于它们的存在,几千条近似的条目分散在这五万多条数据中,要将这种条目合并,需要认真细致的校对。

由于数据量较大,在整理过程中,MS Excel还罢工几次:有时候整理到一万多条,不得不重新开始。吃了两次亏后,只能寄希望于随手按住Control+S了。经过多天的努力,数据终于整理干净了。

全部数据之后压缩成R数据库二进制文件。增加一个版本号后,经过检测,CTPL2函数可正常使用。

整理物种的学名以及相关信息,在植被多样性研究中是十分耗时的。真心希望plantlist程序包的CTPL2函数能帮大家节约时间。该程序包的下载地址是 https://www.github.com/helixcn/plantlist

如果有任何问题、意见或建议,请发email到jinlongzhang01@gmail.com

安装 plantlist 请参考 http://blog.sciencenet.cn/blog-255662-846673.html