Skip to contents
fao_settings(lang = "zh")   # 本文所有图表使用中文
📦 数据来源:FAO全球捕捞产量(Global Capture Production)2026.1.0版(FAO于2026-03-30发布,1950–2024年),下载地址Capture_2026.1.0.zip,许可证CC BY 4.0。用fao_data_info()查看你使用的版本和引用格式。

FAO捕捞统计给出每个物种条目的渔获量,以及它在ASFIS名录中的英文名和学名,但不包含任何生物学信息。这些特征可以从FishBase(鱼类)和SeaLifeBase(其他水生动物和植物)获得:营养级、偏好温度、栖息类型、最大体长、对捕捞的脆弱性、恢复力和先验r。本包在两处用到它们:渔获平均温度用偏好温度,CMSY++先验用恢复力和先验r。

数据来自FishBase和SeaLifeBase数据表的固定副本(版本),由rOpenSci的rfishbase项目以parquet文件发布(Boettiger等2012;源代码:https://github.com/ropensci/rfishbase,数据文件:https://data.source.coop/cboettig/fishbase/)。本包只按已发表的规则把它们与FAO物种条目匹配,每个匹配结果都附有核对所需的链接。

函数 作用 是否联网
check_fishbase_update() 列出网上最新的版本和本机已下载的版本 是
download_fishbase_data() 下载某个版本的数据表 是
fishbase_table() 读取某个版本的一张数据表 仅在该表尚未下载时
fishbase_match() 把FAO物种条目与FishBase和SeaLifeBase匹配 使用version = "builtin"或已下载的版本时不联网
fishbase_sources() 列出数据来源、许可、数据表和匹配规则 否

📦 版本、文件夹和内置表

版本以年份和月份命名,例如"26.06"(2026年6月)。每个版本都是固定的快照,下载过一次的表与网上的完全相同。各版本发布在https://data.source.coop/cboettig/fishbase/,本包把下载的表保存在fao_data_dir()的fishbase文件夹中:

fao_data_dir()中的路径 内容
fishbase/fb/<版本>/<表名>.parquet FishBase的表,如fishbase/fb/26.06/estimate.parquet
fishbase/slb/<版本>/<表名>.parquet SeaLifeBase的表
fishbase/fb/<版本>/files.csv(slb/下同) 每张表的网址、大小和下载日期
fishbase/corrections.csv 你对匹配结果的更正(见核对和更正匹配结果)
fishbase/worms_lookup.csv 在WoRMS中查询过的名称,离线时重复使用

fao_data_dir()默认是R的用户数据文件夹,可以用fao_settings(data_dir = ...)改到别处,例如团队共用的文件夹。每个函数也都有data_dir参数。读取parquet文件需要nanoparquet包,它会随faofishingreport一起安装。

version参数决定使用哪个版本:

version 使用的版本
"latest"(默认) 联网时:网上最新的版本,所需的表在第一次用到时下载。离线时,或设置了fao_settings(online = FALSE)时:本机已下载的最新版本,并给出提示。离线且什么都没有下载时:fishbase_match()改用内置表,fishbase_table()报错停止
某个版本,如"26.06" 这个版本,需要时自动下载
"builtin" 内置表,不联网(适用于fishbase_match()以及调用它的函数)

内置表

包里带有fishbase_match()对本包内置FAO数据中全部物种条目的匹配结果,没有经过人工更正。它保存在inst/extdata/fishbase_traits.rda,由data-raw/build_fishbase_traits.R生成,其属性记录了所用的版本:

load(system.file("extdata", "fishbase_traits.rda", package = "faofishingreport"))
attr(fishbase_traits, "fishbase_version")   # FishBase 和 SeaLifeBase 的版本
#>    fishbase sealifebase 
#>     "26.06"     "26.06"
attr(fishbase_traits, "fao_release")        # 参与匹配的物种条目所属的 FAO 数据版本
#> [1] "2026.1.0"
attr(fishbase_traits, "built")              # 生成日期
#> [1] "2026-10-10"
nrow(fishbase_traits)
#> [1] 3797
table(fishbase_traits$match_type)
#> 
#>                     class                     exact                    family 
#>                        17                      3030                       170 
#>                     genus               not matched                     order 
#>                       358                        76                        25 
#>                    phylum              plant (TL 1)                   synonym 
#>                         7                        71                        38 
#>  WoRMS valid name (exact) WoRMS valid name (family)  WoRMS valid name (genus) 
#>                         3                         1                         1

使用version = "builtin"时不下载任何数据,在每台电脑上的结果都相同。本文就使用内置表,这样构建网站时无需下载。不在内置表中的条目(如更新的FAO数据版本中新增的条目)标为“pending online check”(待联网核查)。version = "latest"给出网上最新版本的数值,FishBase发布新版本后,数值可能略有不同。

许可。FishBase和SeaLifeBase的数据由FishBase.org团队以CC BY-NC 4.0许可发布:可以使用,但须注明出处,且不得用于商业目的。引用时请注明FishBase(Froese和Pauly主编)和SeaLifeBase(Palomares和Pauly主编)以及所用的版本。内置表以及这些函数结果中的物种特征数值同样适用这一许可。来自WoRMS的有效名采用CC BY许可。fishbase_sources()列出了全部来源。

🔄 检查新版本:check_fishbase_update()

check_fishbase_update()列出网上发布的各个版本,并把最新版本与本机已下载的版本对比。它需要连接数据服务器,所以本文不运行。在还没有下载任何数据的电脑上,它会输出:

check_fishbase_update()
#> FishBase
#>   Latest online release: 26.06 (222 tables)
#>   Downloaded locally:    none
#>   Run download_fishbase_data("fishbase") to download the latest release (or the tables of it that are missing).
#> SeaLifeBase
#>   Latest online release: 26.06 (202 tables)
#>   Downloaded locally:    none
#>   Run download_fishbase_data("sealifebase") to download the latest release (or the tables of it that are missing).
参数 含义 默认值
server "fishbase"、"sealifebase"或两者 两者
data_dir 存放已下载数据的文件夹 fao_data_dir()
quiet 为TRUE时不输出任何信息 FALSE

它以不可见方式返回一个数据框,每个数据库一行:

列 含义
server "fishbase"或"sealifebase"
latest_online 网上最新的版本(离线时为NA)
newest_local 本机已下载的最新版本(没有时为NA)
tables_online 网上最新版本的数据表数量
tables_local 本机最新版本已下载的数据表数量
update_available 网上有更新的版本,或者最新版本已下载但其中的表没有全部下载时,为TRUE

由于第二个条件,按默认方式下载六张表之后(见下一节),update_available仍然是TRUE。要判断网上是否有更新的版本,请比较latest_online和newest_local。

⬇️ 下载版本:download_fishbase_data()

download_fishbase_data()把FishBase和/或SeaLifeBase某个版本的数据表下载到data_dir,供离线使用。提前下载不是必需的:在version = "latest"时,fishbase_match()和mean_temperature_catch()第一次运行会自动下载所需的四张表(26.06版两个数据库合计约23 MB)。如果以后要离线工作、要让整个项目固定使用同一个版本,或者需要全部数据表,可以提前下载。

download_fishbase_data()                              # 本包用到的六张表,两个数据库
download_fishbase_data(tables = "all")                # FishBase 和 SeaLifeBase 的全部表
download_fishbase_data("fishbase", tables = c("species", "estimate"))
download_fishbase_data(version = "25.04")             # 较早的版本
参数 含义 默认值
server "fishbase"、"sealifebase"或两者 两者
version 要下载的版本,如"26.06"。网上没有的版本会报错,并列出网上已有的版本 "latest"
tables "needed"表示本包用到的六张表,"all"表示全部表,也可以给出表名,如c("species", "estimate") "needed"
data_dir 保存数据表的文件夹 fao_data_dir()
overwrite 为TRUE时重新下载已下载过的表 FALSE
quiet 为TRUE时不输出进度信息 FALSE

26.06版的大小:

数据表 FishBase SeaLifeBase
tables = "needed"(6张表) 15.8 MB 13.2 MB
fishbase_match()用到的4张表 12.6 MB 10.3 MB
tables = "all" 222张表,约140 MB 202张表,约108 MB

tables = "needed"包含的六张表:

表 内容 使用者
species 属、种、科代码、栖息类型(DemersPelag)、最大体长(Length)、对捕捞的脆弱性(Vulnerability) fishbase_match()
estimate 营养级(Troph、seTroph)、偏好温度(TempPrefMean)、先验r(prior_r、lcl_r、ucl_r) fishbase_match();内置的CMSY++先验表
families 科、目、纲和门 fishbase_match()
synonyms 每个物种的其他名称及其状态(accepted name有效名、synonym异名、misapplied name误用名、ambiguous synonym歧义异名) fishbase_match()
stocks 恢复力(High、Medium、Low、Very low) 内置的CMSY++先验表
faoareas 各物种在FAO主要渔区的分布

下载之前,函数会列出要下载什么、从哪里下载、适用什么许可,以及保存到哪个文件夹。每张表先写成.part文件,下载完整后再改名。已下载(且大小与网上一致)的表会跳过,所以下载中断后重新运行即可接着下载;下载失败的表会给出警告。

它以不可见方式返回一个数据框,每张表一行:server、version、table、size(字节)和status("downloaded"已下载、"already downloaded"此前已下载或"failed"失败)。

📋 读取数据表:fishbase_table()

fishbase_table()以数据框的形式返回FishBase或SeaLifeBase的一张表,从本机的副本读取。联网时,它先查询网上最新的版本,本机还没有这张表就先下载。离线时,或设置了fao_settings(online = FALSE)时,它使用本机已下载、且含有这张表的最新版本,并给出提示。它需要已下载的数据表,所以本文不运行,下面给出的是26.06版的输出:

estimate <- fishbase_table("estimate")
#> Using FishBase release 26.06 (the latest online release).
attr(estimate, "fishbase_version")
#> [1] "26.06"
# 沙丁鱼(Sardina pilchardus)在 FishBase 中的 SpecCode 是 1350
estimate[estimate$SpecCode == 1350, c("SpecCode", "Troph", "seTroph", "TempPrefMean", "prior_r", "lcl_r", "ucl_r")]
#>      SpecCode Troph seTroph TempPrefMean   prior_r     lcl_r     ucl_r
#> 1243     1350  3.06     0.1         10.3 0.6281019 0.4145473 0.9421529

slb_species <- fishbase_table("species", server = "sealifebase", version = "26.06")
参数 含义 默认值
table 表名,如"species"、"estimate"、"ecology"、"synonyms"或"families" (必须给出)
server "fishbase"或"sealifebase" "fishbase"
version 版本,如"26.06" "latest"
data_dir 存放已下载数据的文件夹 fao_data_dir()

它返回整张表的全部列(FishBase 26.06版的estimate表有36,761行、70列),并带有三个属性:fishbase_server、fishbase_version和source_url(parquet文件的网址)。读取过的表在本次R会话中保留在内存里。check_fishbase_update()可以看到一个版本有多少张表,各表的内容见rfishbase文档。

🔗 匹配FAO物种条目:fishbase_match()

fishbase_match()逐个处理数据中的FAO物种条目,按FAO物种名录中的学名在FishBase或SeaLifeBase中查找,返回匹配到的记录及其营养级、偏好温度、栖息类型、最大体长和对捕捞的脆弱性。每一行都给出所用的规则及其出处,并附有FishBase、SeaLifeBase或WoRMS页面的链接,便于核对。没有任何规则能匹配的条目不填数值,标为匹配失败,并附上在网上搜索该名称的链接。

fb27 <- fishbase_match(FAO27$area_data, version = "builtin", corrections = FALSE)
#> FAO species items: 1029; matched 1001, failed 28, pending online check 0. Matched items cover 98.3% of the catch.

corrections = FALSE表示不使用本机保存的任何更正,这样示例在每台电脑上的结果都相同。条目按渔获量排序,前面几行就占了大部分渔获:

main <- head(fb27, 15)
main$page <- ifelse(is.na(main$url), "", paste0("[open](", main$url, ")"))
show_table(main[, c("species_name", "fao_scientific_name", "catch_pct", "match_type", "database",
                    "temp_pref_mean", "trophic_level", "page")], n = 15)
species_name fao_scientific_name catch_pct match_type database temp_pref_mean trophic_level page
大西洋鲱 Clupea harengus 18.55 exact FishBase 6.6 3.38 open
大西洋鳕 Gadus morhua 13.94 exact FishBase 6.6 4.09 open
毛鳞鱼 Mallotus villosus 10.02 exact FishBase 2.7 3.15 open
小鳍鳕 Micromesistius poutassou 7.09 exact FishBase 7.0 4.13 open
大西洋鲭 Scomber scombrus 6.19 exact FishBase 10.2 3.63 open
Sandeels(=Sandlances) nei Ammodytes spp 4.65 genus FishBase NA 3.16 open
黍鲱 Sprattus sprattus 3.95 exact FishBase 9.5 3.01 open
青鳕 Saithe(=Pollock) Pollachius virens 3.85 exact FishBase 7.0 4.31 open
黑线鳕 Melanogrammus aeglefinus 3.56 exact FishBase 8.4 4.03 open
挪威长臀鳕 Trisopterus esmarkii 2.11 exact FishBase 7.8 3.68 open
褐藻类 Phaeophyceae 2.11 plant (TL 1) SeaLifeBase NA 1.00 open
沙丁鱼 Sardina pilchardus 1.67 exact FishBase 10.3 3.06 open
Atlantic redfishes nei Sebastes spp 1.62 genus FishBase NA 3.70 open
大西洋竹筴鱼 Trachurus trachurus 1.54 exact FishBase 13.3 3.71 open
扁海鲽 Pleuronectes platessa 1.35 exact FishBase 10.2 3.17 open

按FAO学名直接找到的物种(exact)有全部数值。种以上的条目,如“竹筴鱼属物种”(Trachurus spp),得到所属属或科的平均营养级,但没有偏好温度。“未分类的海洋鱼类”(Marine fishes nei)没有任何数值:它的FAO学名Actinopterygii在FishBase中找不到,FishBase把这些鱼归入Teleostei等纲,而WoRMS给出的有效名仍是这个名称。这类条目的数值可以写进更正文件,并注明出处。

参数 含义 默认值
area_data FAO渔获数据:fishing_area_data()$area_data,或load_fao_data()的任意子集 NULL:load_fao_data()中的全部物种
version FishBase和SeaLifeBase的版本(见上文):"latest"、某个版本如"26.06",或"builtin" "latest"
corrections 更正文件的路径,FALSE表示不使用更正 NULL:data_dir中fishbase文件夹里的corrections.csv,第一次运行时创建一个空模板
table 为TRUE时把结果保存为tables/<label>_fishbase_match.csv TRUE
lang species_name列的语言:"en"、"zh"或"both" NULL:fao_settings()设置的语言
label 文件名中使用的名称 数据所属的渔区(或国家)
data_dir 存放已下载数据、更正文件和WoRMS查询结果的文件夹 fao_data_dir()

它以不可见方式返回一个数据框,每个FAO物种条目一行,按渔获量排序。属性fishbase_version记录所用的版本。各列含义:

列 含义
species_name、species_en 所选语言的FAO名称,以及英文名
alpha3、fao_scientific_name FAO三字母代码和学名
taxon_level、major_group 条目的分类级别(species、genus、family、higher)和FAO大类(PISCES、CRUSTACEA等)
catch_tonnes、catch_pct、cumulative_pct 该条目在数据全部年份中的渔获量、占总渔获量的比例和累计比例(%)
status "matched"(已匹配)、"failed"(匹配失败)或"pending online check"(待联网核查)
match_type 匹配所依据的规则(见下一节)
database、matched_name、SpecCode 所用记录的数据库、名称和物种代码
n_species 种以上条目所含的物种数
trophic_level、trophic_level_se 营养级(Troph)及其标准误
temp_pref_mean 偏好温度(TempPrefMean,°C)
habitat 栖息类型(DemersPelag,如pelagic-neritic、demersal、reef-associated)
max_length_cm 最大体长(cm)
vulnerability 对捕捞的脆弱性(FishBase指数,满分100)
url 所用记录在FishBase或SeaLifeBase中的页面(物种页、属的物种列表、科的页面或搜索页)
search_url、worms_url 在FishBase或SeaLifeBase中搜索该FAO名称的链接,以及它的WoRMS页面
match_note、rule_source 条目匹配或未匹配的原因,以及规则的文献出处
source 数据库和版本,使用内置表时附注“(built-in table)”
checked、note 空列,用于记录你的核对情况

营养级是FishBase和SeaLifeBase的估计值(estimate表的Troph列),来自食性研究;没有食性研究时,根据近缘物种和体长估算(Froese和Pauly 2000,“The FOOD ITEMS table”,专栏25和26)。偏好温度(TempPrefMean)是各物种AquaMaps分布范围内的平均值(FishBase文献123201;Froese 2020);Cheung等(2013)用的则是中位数。

匹配规则

鱼类(FAO大类PISCES)先在FishBase中查找,其他条目先在SeaLifeBase中查找,依据Branch等(2010,补充材料第1页)。match_type的值表明条目按哪条规则匹配:

match_type 规则 给出的数值 出处
exact FAO学名是数据库中的有效种名 全部 Branch等(2010)
synonym FAO名称在数据库的异名表中是某一个有效种的异名(状态为“synonym”)。误用名(misapplied name)一律不用,因为它们是错误鉴定,而不是该物种的别名;歧义异名,以及指向多个物种的名称,不予匹配 全部 Froese和Pauly(2000),“The SYNONYMS table”
WoRMS valid name (...) 以上规则找不到的名称,联网到世界海洋物种名录(WoRMS)中查询;FAO的ASFIS名录在大多数类群上遵循WoRMS。只采用状态为“accepted”、或只对应一个有效名的WoRMS精确匹配记录;再用这个有效名重新匹配,括号中注明它所符合的规则,如WoRMS valid name (exact) 与该规则相同 FAO(2026),第1–3页;WoRMS Editorial Board
genus、family、order、class、phylum 种以上的条目(如“Sardinella spp”或“Sparidae”)取数据库中该分类单元所有物种营养级的未加权平均值 只有营养级 Branch等(2010);Liang和Pauly(2017)
plant (TL 1) 水生植物(FAO大类PLANTAE AQUATICAE) 营养级为1 Pauly等(1998)
manual 更正文件中的更正 给出的数值或记录 你的出处,写在note中
not matched 找不到的物种(不借用其所属属的数值)、包含多个分类单元的条目(如“Sepiidae, Sepiolidae”)、WoRMS记录不确定或有多条 无(status为"failed") 这些情况没有已发表的规则

种以上的条目不给偏好温度、栖息类型、体长和脆弱性,因为渔获平均温度的研究都不使用这类条目(Tsikliras和Stergiou 2014;Liang等2018)。WoRMS的查询结果保存在worms_lookup.csv中,离线时重复使用;此前没有查询过的名称,离线时标为"pending online check"。内置表是联网生成的,其中的条目都已查询过。

渔获覆盖率

能匹配到的渔获比例取决于渔获的上报方式。catch_pct是占数据全部年份总渔获量的比例:

# 各匹配方式的渔获占比(%)
round(sort(tapply(fb27$catch_pct, fb27$match_type, sum), decreasing = TRUE), 1)
#>        exact        genus plant (TL 1)  not matched       family        order 
#>         86.3          7.8          3.0          1.7          0.8          0.2 
#>        class       phylum      synonym 
#>          0.1          0.0          0.0

# 有偏好温度的种一级条目的渔获占比(%)
species_level <- c("exact", "synonym", "WoRMS valid name (exact)", "WoRMS valid name (synonym)")
round(sum(fb27$catch_pct[fb27$match_type %in% species_level & !is.na(fb27$temp_pref_mean)]), 1)
#> [1] 86.2

在27区,已匹配条目占渔获量的98%。属和科一级的条目只有营养级;有偏好温度的种一级条目占86%,渔获平均温度能用到的就是这部分渔获。覆盖率每年也不相同,mean_temperature_catch()会给出逐年的覆盖率(见下文)。

核对和更正匹配结果

匹配是自动完成的,本包不做核对。不同数据库之间的名称并不总是一致:FAO的ASFIS名称更新缓慢,FishBase、SeaLifeBase和WoRMS采用不同的分类体系,异名和拼写错误也很常见(Grenié等2023)。使用这些数值之前:

  1. 打开保存在tables/中的表(这里是tables/Atlantic__Northeast_fishbase_match.csv)。条目按渔获量排序,越靠前越重要。
  2. 对每个条目,打开url(所用的记录)、search_url和worms_url,并阅读match_note和rule_source。核对记录是否就是这个FAO条目,数值对该渔区的种群是否合理。
  3. 在checked列写上核对人或日期。错误或缺失的数值写进更正文件,并注明出处。

更正文件是一个CSV文件,每个要更正的FAO条目一行:

列 含义
alpha3 条目的FAO三字母代码(必填)
species_en FAO英文名(可选,方便阅读)
database、SpecCode "FishBase"或"SeaLifeBase",以及要使用的记录的物种代码;其数值从已下载的表中读取
trophic_level、temp_pref_mean、habitat、max_length_cm、vulnerability 直接使用的数值(会替换记录中的数值)
note 更正的出处

fishbase_match()默认读取data_dir中fishbase文件夹里的corrections.csv,第一次运行时在那里创建一个空文件。每次运行都会应用这些更正,所以共用同一个data_dir的团队也共用这些更正。更正后的条目status为“matched”,match_type为“manual”,rule_source中写明更正文件和note的内容。

举个例子:条目“Frigate and bullet tunas”(FRZ)包含两个物种(Auxis thazard和A. rochei),没有规则能匹配它。下面把其中第一个物种Auxis thazard的数值(取自条目“Frigate tuna”的匹配结果)赋给它。这样的数值是否适合这个条目,需要你自己判断;note写明了数值的来源:

fri <- fb27[fb27$alpha3 == "FRI", ]
fix <- data.frame(alpha3 = "FRZ", species_en = "Frigate and bullet tunas",
                  trophic_level = fri$trophic_level, temp_pref_mean = fri$temp_pref_mean,
                  note = paste("Values of Auxis thazard,", fri$source, "SpecCode", fri$SpecCode))
write.csv(fix, "my_corrections.csv", row.names = FALSE)

fb27_fixed <- fishbase_match(FAO27$area_data, version = "builtin", corrections = "my_corrections.csv")
#> Applied 1 correction(s) from my_corrections.csv
#> FAO species items: 1029; matched 1002, failed 27, pending online check 0. Matched items cover 98.3% of the catch.
show_table(fb27_fixed[fb27_fixed$alpha3 == "FRZ", c("species_name", "status", "match_type", "trophic_level",
                                                    "temp_pref_mean", "rule_source")])
species_name status match_type trophic_level temp_pref_mean rule_source
172 扁鸵鲣,双鳍舵鲣 matched manual 4.37 22 Manual correction (my_corrections.csv): Values of Auxis thazard, FishBase 26.06 (built-in table) SpecCode 94

如果已经下载了数据表,更正也可以直接指定要使用的记录,其全部数值都从这条记录读取。内置表无法按SpecCode查找记录,所以使用version = "builtin"时,请直接给出数值:

fix <- data.frame(alpha3 = "FRZ", database = "FishBase", SpecCode = 94,
                  note = "Record of Auxis thazard; give your source here")
write.csv(fix, "my_corrections.csv", row.names = FALSE)
fishbase_match(FAO27$area_data, version = "26.06", corrections = "my_corrections.csv")

mean_temperature_catch()(以及通过它运行的fao_report())调用fishbase_match()时使用默认的更正文件。因此,要用于它们的更正应写进data_dir中fishbase文件夹里的corrections.csv(可以用电子表格软件添加行),或者写进核对过的匹配表,再用match =传入(在fao_report()中为mtc_match =)。

📜 来源与许可:fishbase_sources()

fishbase_sources()列出FishBase、SeaLifeBase和WoRMS数据的来源、许可和引用方式,下载的各张表及其内容,以及fishbase_match()的匹配规则及其文献出处。download_fishbase_data()下载前会输出同样内容的摘要。

参数 含义 默认值
print 为TRUE时输出列表 TRUE

它以不可见方式返回一个数据框,每个数据来源、数据表或规则一行,各列为type("data"、"table"或"rule")、item、description、source(引用或许可)和link。其中的数据来源:

src <- fishbase_sources(print = FALSE)
show_table(src[src$type == "data", c("item", "description", "source", "link")])
item description source link
1 FishBase Fishes: names, classification, ecology, trophic level, temperature preference, resilience Froese, R. and Pauly, D. (Eds.) FishBase. www.fishbase.se. Licence CC BY-NC 4.0 (FishBase.org team): cite, no commercial use https://www.fishbase.se
2 SeaLifeBase Other aquatic animals and plants: the same tables as FishBase Palomares, M.L.D. and Pauly, D. (Eds.) SeaLifeBase. www.sealifebase.se. Licence CC BY-NC 4.0 (FishBase.org team) https://www.sealifebase.se
3 Snapshots Versioned copies of the FishBase and SeaLifeBase tables as parquet files, the files downloaded by the package Published by the rfishbase project of rOpenSci (Boettiger et al. 2012, J. Fish Biol. 81(6): 2030-2039, doi:10.1111/j.1095-8649.2012.03464.x) https://data.source.coop/cboettig/fishbase/
4 rfishbase R package that publishes the snapshots and reads them; faofishingreport reads the same files directly, without depending on it Boettiger, C., Lang, D.T. and Wainwright, P.C. (2012). J. Fish Biol. 81(6): 2030-2039. Source code and documentation: https://github.com/ropensci/rfishbase, https://docs.ropensci.org/rfishbase/ https://github.com/ropensci/rfishbase
5 WoRMS Valid names of species and taxa, looked up online for names not found in FishBase or SeaLifeBase WoRMS Editorial Board. World Register of Marine Species. VLIZ. doi:10.14284/170. Licence CC BY https://www.marinespecies.org
19 Built-in table Used only when FishBase cannot be reached and has not been downloaded: FishBase 26.06, SeaLifeBase 26.06, made on 2026-10-10 for the 3797 species items of FAO release 2026.1.0 Made by data-raw/build_fishbase_traits.R with the rules above; CC BY-NC 4.0 (FishBase.org team)

🌡️ 用于渔获平均温度

mean_temperature_catch()计算渔获平均温度(MTC):以渔获量为权重,求渔获物种偏好温度的平均值(Cheung等2013)。偏好温度取自fishbase_match()(它用自己的version和data_dir调用该函数,并应用更正文件),或者取自用match =传入的匹配表。只有status为“matched”、且match_type属于use_match的条目才参与计算,默认是exact、synonym、WoRMS valid name (exact)、WoRMS valid name (synonym)和manual。属和科一级的条目没有偏好温度,不参与计算。

下面用match =传入上例更正后的表,所以条目“Frigate and bullet tunas”现在也参与计算:

mtc <- mean_temperature_catch(FAO27$area_data, match = fb27_fixed)
Atlantic__Northeast_mtc.png
show_table(mtc$species[mtc$species$used, c("species_name", "match_type", "temp_pref_mean", "catch_pct",
                                           "weight_pct", "contribution_c")], n = 8)
species_name match_type temp_pref_mean catch_pct weight_pct contribution_c
1 大西洋鲱 exact 6.6 18.55 21.52 1.42
2 大西洋鳕 exact 6.6 13.94 16.17 1.07
3 毛鳞鱼 exact 2.7 10.02 11.62 0.31
4 小鳍鳕 exact 7.0 7.09 8.22 0.58
5 大西洋鲭 exact 10.2 6.19 7.18 0.73
7 黍鲱 exact 9.5 3.95 4.58 0.44
8 青鳕 Saithe(=Pollock) exact 7.0 3.85 4.46 0.31
9 黑线鳕 exact 8.4 3.56 4.13 0.35

match =可以是数据框,也可以是CSV文件的路径:fishbase_match()保存的表,或者此前运行mean_temperature_catch()得到的物种表,核对之后传入。在checked列有标记的条目算作已核对;在参与计算的条目全部核对之前,函数会提示已核对的渔获占比,图注也会写明这些数值是自动初配结果。不给match =时,默认的version = "latest"会在第一次运行时下载所需的表(约23 MB):

mtc <- mean_temperature_catch(FAO27$area_data)                         # FishBase 最新版本
mtc <- mean_temperature_catch(FAO27$area_data, version = "builtin")    # 内置表,不下载
mtc <- mean_temperature_catch(FAO27$area_data, match = "tables/Atlantic__Northeast_fishbase_match.csv")

海表温度数据、趋势分析以及偏好温度的局限性,见🌡️ 海表温度与渔获平均温度。

📉 用于CMSY++先验

CMSY++需要每个种群内禀增长率r的先验范围。cmsy_priors()查询另一张内置表(inst/extdata/cmsy_priors.csv,由data-raw/cmsy_priors.R生成),表中是FAO捕捞统计中种一级条目在FishBase或SeaLifeBase 26.06版中的恢复力(stocks表)和先验r(estimate表)。它可以离线使用:

p27 <- cmsy_priors(c("HER", "WHB", "MAC", "COD"))
show_table(p27[, c("species_name", "matched_name", "match_type", "resilience", "prior_r",
                   "r_low", "r_high", "r_source")], digits = 3)
species_name matched_name match_type resilience prior_r r_low r_high r_source
大西洋鳕 Gadus morhua exact Medium 0.509 0.336 0.764 FishBase prior r, 95% CL (Based on 66 full stock assessments.)
大西洋鲱 Clupea harengus exact Medium 0.436 0.288 0.654 FishBase prior r, 95% CL (Based on 53 full stock assessments.)
大西洋鲭 Scomber scombrus exact Medium 0.429 0.283 0.644 FishBase prior r, 95% CL (Based on 10 full stock assessments.)
小鳍鳕 Micromesistius poutassou exact Medium 0.465 0.307 0.698 FishBase prior r, 95% CL (Based on 9 full stock assessments.)

r的范围按照CMSY++用户手册(Froese等2021)确定:物种在FishBase中有先验r时,取其95%置信限(手册表1);否则取其恢复力对应的范围(手册表2:高0.6–1.5,中0.2–0.8,低0.05–0.5,很低0.015–0.1);两者都没有时不给范围,需要由用户提供。这张表的匹配比fishbase_match()更严格:同样是鱼类先查FishBase、其他条目先查SeaLifeBase,先按有效种名、再通过数据库的异名表匹配,但不查询WoRMS,歧义异名和种以上的条目也没有数值(match_type为“ambiguous synonym”、“not a species”或“not found”)。fishbase_match()的更正文件不会改变这张表;自己的先验请用cmsy_input()的priors =参数给出。详见CMSY++资源评估的第三步。

📝 用于Word报告

渔区的Word报告可以包含渔获平均温度一节(fao_report(27, mtc = TRUE))。它默认使用内置的FishBase表(mtc_version = "builtin"),所以生成报告时不下载任何数据;要用其他版本,请设置mtc_version,如mtc_version = "latest"。参与计算的物种及其FishBase匹配结果以report$mtc_species返回,报告中也会引用所用的FishBase版本。详见📝 Word报告。

report <- fao_report(27, mtc = TRUE)
head(report$mtc_species[, c("species_name", "match_type", "temp_pref_mean", "used", "url")])
fao_report(27, mtc = TRUE, mtc_version = "latest")    # FishBase 最新版本

📖 参考文献

Boettiger, C., Lang, D.T. and Wainwright, P.C. (2012). rfishbase: exploring, manipulating and visualizing FishBase data from R. Journal of Fish Biology 81(6): 2030–2039. doi:10.1111/j.1095-8649.2012.03464.x. Source code: https://github.com/ropensci/rfishbase

Branch, T.A., Watson, R., Fulton, E.A., Jennings, S., McGilliard, C.R., Pablico, G.T., Ricard, D. and Tracey, S.R. (2010). The trophic fingerprint of marine fisheries. Nature 468: 431–435. doi:10.1038/nature09528

Cheung, W.W.L., Watson, R. and Pauly, D. (2013). Signature of ocean warming in global fisheries catch. Nature 497: 365–368. doi:10.1038/nature12156

FAO (2026). Nomenclature, revision, and references of the ASFIS list (version 2026). Rome: FAO. https://www.fao.org/fishery/static/ASFIS/ASFIS_References_2026_EN.pdf

Froese, R. (2020). Personal communication: R code (PrefTempBatch_5.R) to estimate preferred temperature from AquaMaps (version 10/2019). FishBase reference 123201. https://www.fishbase.se/references/FBRefSummary.php?ID=123201

Froese, R., Demirel, N., Coro, G. and Winker, H. (2021). User Guide for CMSY++. GEOMAR, Germany, 17 pp. https://oceanrep.geomar.de/id/eprint/52147/

Froese, R. and Pauly, D. (Eds.) (2000). FishBase 2000: concepts, design and data sources. ICLARM, Los Baños, Philippines. Chapters “The SYNONYMS table” (https://www.fishbase.se/manual/fishbasethe_synonyms_table.htm) and “The FOOD ITEMS table”, boxes 25 and 26 (https://www.fishbase.se/manual/fishbasethe_food_items_table.htm).

Froese, R. and Pauly, D. (Eds.) (2026). FishBase. World Wide Web electronic publication. Version (06/2026). https://www.fishbase.se

Grenié, M., Berti, E., Carvajal-Quintero, J., Dädlow, G.M.L., Sagouis, A. and Winter, M. (2023). Harmonizing taxon names in biodiversity data: a review of tools, databases and best practices. Methods in Ecology and Evolution 14: 12–25. doi:10.1111/2041-210X.13802

Liang, C. and Pauly, D. (2017). Fisheries impacts on China’s coastal ecosystems: unmasking a pervasive ‘fishing down’ effect. PLoS ONE 12: e0173296. doi:10.1371/journal.pone.0173296

Liang, C., Xian, W. and Pauly, D. (2018). Impacts of ocean warming on China’s fisheries catches: an application of “mean temperature of the catch” concept. Frontiers in Marine Science 5: 26. doi:10.3389/fmars.2018.00026

Palomares, M.L.D. and Pauly, D. (Eds.) (2026). SeaLifeBase. World Wide Web electronic publication. Version (06/2026). https://www.sealifebase.se

Pauly, D., Christensen, V., Dalsgaard, J., Froese, R. and Torres, F. (1998). Fishing down marine food webs. Science 279: 860–863. doi:10.1126/science.279.5352.860

Tsikliras, A.C. and Stergiou, K.I. (2014). Mean temperature of the catch increases quickly in the Mediterranean Sea. Marine Ecology Progress Series 515: 281–284. doi:10.3354/meps11005

WoRMS Editorial Board. World Register of Marine Species. Flanders Marine Institute (VLIZ). https://www.marinespecies.org, doi:10.14284/170