トキ (Nipponia nippon) の分布をしらべる

伊東宏樹

2026-05-30

はじめに

2026年5月31日、羽咋市においてトキ野生復帰(石川県能登地域)の放鳥が実施されます

トキ (© Marco Mussita www.inaturalist.org/photos/77371650)

本日の内容

  • Kanazawa.R #1での発表「Rで生物多様性情報を取得する

    • コウノトリの出現 (Occurrence) 情報を地図にプロット
  • 今回はトキ

  • GBIFから出現データを取得

  • 内容を確認

  • 位置を地図表示

GBIFとは

GBIF-地球規模生物多様性情報機構は、地球上のあらゆる種類の生物に関するデータを誰でも、どこにでも、オープンアクセスで提供することを目的として、世界中の政府から資金提供されて設置された国際的なネットワークであり、データ基盤です。

GBIFとは何か?

rgbifパッケージ

  • Rからはrgbifパッケージによりデータを取得できる

  • 処理の流れ

    1. 種 (species) データの取得

    2. 種を条件に指定して、出現(occurrence) データをダウンロード

種 (species) のデータ取得

  • rgbifパッケージのname_backbone()関数で、トキの学名Nipponia nipponを指定して種のデータを取得
species_data <- name_backbone("Nipponia nippon") # トキの学名
species_data |>
  dplyr::select(scientificName, usageKey)
# A tibble: 1 × 2
  scientificName                   usageKey
  <chr>                            <chr>   
1 Nipponia nippon (Temminck, 1835) 2480810 

ダウンロード情報の取得

  • occ_download()関数でダウンロードを要求
    • pred()関数でtaxonKeyにトキのusageKeyを指定
  • GBIFのアカウントが必要。rgbifの設定は Set Up Your GBIF Username and Password を参照
occ_info <- occ_download(pred("taxonKey",
                              species_data$usageKey))

ダウンロードしたデータを読み込み

  1. occ_download_wait()でダウンロード可能になるのを待つ
  2. occ_download_get()でデータをダウンロード
  3. occ_download_import関数で、ダウンロードしたデータを読み込みむ
occ_download_wait(occ_info)
x <- occ_download_get(occ_info)
df <- occ_download_import(x)

2回目以降

ダウンロード済みのファイルを読み込む

download_file <- list.files(pattern = "*.zip")[1]
df <- occ_download_import(as.download(download_file))

引用情報の表示

GBIFのデータをダウンロードして研究成果等に使うときはDOIで引用(Citing GBIF Mediated Data

key <- tools::file_path_sans_ext(download_file)
occ_download_meta(key = key) |>
  gbif_citation()
$download
[1] "GBIF Occurrence Download https://doi.org/10.15468/dl.9z833w Accessed from R via rgbif (https://github.com/ropensci/rgbif) on 2026-05-26"

$datasets
NULL

データの確認

Darwin Core形式。特定の変数のみ表示。

国別の頻度分布

トキの出現情報のある国の頻度分布を表示


       CN   JP   KR   NG   PG   RU   TW 
  28 1057  273  168    1    1    1    4 
  • やはり中国(CN)が多い
  • NG(ナイジェリア)やPG(パプアニューギニア)というデータも。
    • 何かの間違いらしい。

地図データの準備

  • データから、観察データかつ観察国が中国・日本・韓国・台湾であるものを残し、緯度経度座標のないものを除外
df_loc <- df |>
  dplyr::filter(basisOfRecord == "HUMAN_OBSERVATION",
                countryCode %in% c("CN", "JP", "KR", "TW")) |>
  dplyr::filter_out(is.na(decimalLatitude) |
                    is.na(decimalLongitude))
  # filter_out は dplyr 1.2.0以降

地図の生成

  • 地図表示のためleafletパッケージを使用
library(leaflet)
labs <- paste(htmltools::htmlEscape(df_loc$eventDate),
              "<br />",
              htmltools::htmlEscape(df_loc$locality))
toki_map <- leaflet(df_loc) |>
  addTiles() |>
  setView(lng = 125, lat = 35, zoom = 4) |>
  addCircleMarkers(~decimalLongitude, ~decimalLatitude,
                   color = "red", radius = 2,
                   popup = labs)

東アジアにおけるトキの観察場所