我要做一份台灣的物種觀測清單。資料來自一個公開的生物觀測庫,查以前要先選地點。
我在地點清單裡搜「台灣」,跳出兩個。名字幾乎一樣,我挑了看起來比較完整的那一個。查出來三百二十萬筆,數量很合理,我就接著往下做了。
搜「台灣」,跳出兩個地點 ────────────────────────────────────────── 7887 Taiwan 層級 0 6,029,824 筆 7888 Taiwan, TW 層級 10 3,206,460 筆 ────────────────────────────────────────── 兩個都是合法地點,兩次都成功 差 2,823,364 筆
我以為發生了什麼
我以為一個國家就是一個代號。清單裡跑出兩個同名的,我當成是重複登錄或新舊並存,內容應該差不多,挑哪個都一樣。
我也以為萬一挑錯,會有東西提醒我——回空的、跳警告、至少在名字後面加個註記。
實際發生了什麼
2026-09-17 實測。同一個資料庫、同樣的查詢條件,只換地點代號那一個值:
代號 7887 回 6,029,824 筆,代號 7888 回 3,206,460 筆。兩者差 2,823,364 筆,將近一半。兩次都回 HTTP 200,兩次都是正常回應,沒有任何一邊說我可能選錯。
再回頭查這兩個代號自己的定義:7887 的名稱是 Taiwan,行政層級 0;7888 的名稱是 Taiwan, TW,行政層級 10。
它們不是重複,是兩個不同的東西:一個是國家層級的台灣,一個是更細的行政層級的台灣。 兩個都對,只是它們回答的不是同一個問題。
官方文件寫了嗎
有寫地點是分層級的,也寫了怎麼用代號查資料。但文件替你回答不了的,是「你要的那個台灣是哪一層」——因為那要看你這份清單打算拿來做什麼,它不知道。
從它的角度看,你指定了一個存在的地點,它就照那個地點回答,沒有理由懷疑你選錯。是我把「名字裡有台灣」當成了「就是我要的台灣」。
你一定會踩的那個細節
真正貴的不是選錯,是發現選錯的時間點。
選代號是整件事的第一步,通常隨手就決定了。然後你寫程式、抓資料、算分布、畫圖、寫說明,一路做到最後,某天順手換另一個代號重查,發現筆數多了一倍。
那一刻要重來的不是一行程式,是前面每一個基於那份資料算出來的數字:物種數、地區分布、年份趨勢、哪些是稀有的,全部要重跑再重新核對一次。代號是所有統計的地基,地基換了就沒有一個數字能留下來。
所以它必須在動手之前就定案。方法是把候選的都查一次:
選定地點代號之前,先做這件事: 1. 用「台灣」搜一次地點清單,把回傳的每一個 代號都記下來,不要只拿第一個 2. 對每個代號各發一次「只要總數」的查詢 (每頁筆數設成 0,看回傳的總數欄位) 3. 把代號、名稱、行政層級、總筆數列成一張表 4. 筆數差一成以上的,逐一去查那個代號的定義, 確認它涵蓋的範圍是不是你要的那個範圍 表上只有一列,多半代表你沒搜完,不是真的只有一個。
站內延伸
來源: iNaturalist API v1 的觀測與地點端點,同一組查詢條件只換 place_id,並逐一取回兩個代號的名稱與行政層級,2026-09-17 實測。
查得到不等於查對了。一個合法的選項只保證它回答了某個問題,不保證那是你的問題。 所以看的不該是它的名字——名字是給人讀的,選之前要看的是它的定義,那才是它實際涵蓋的範圍。