🌐 English version: English

系列第四篇,也是「農場篇」(Babb 的 AgriLink 世界觀)的收尾。前三篇把 LoRa 解調器練起來了,這篇在解調之外多了一層 GIS 與分類器重現

某種程度上是前面所有技能的綜合應用

系列其他篇:Channel Hop、True Color Is a Lie、Isodata Seven、Two Voices、No Name on the Door、Hopscotch

題目在講什麼

題目畫面

縣農業局,Babb 北邊地塊的面積給付申請被駁回:「地塊已被申報為牧草,衛星檢查通過」。有人用 Babb 的玉米田申請了給付,而辦公室的衛星檢查竟然認同對方。

辦事員順口透露一件事:今年辦公室的分類統計裡少放了一個類別 因為「這裡沒人申報那個作物,而且田野調查很貴」。另外,共用 SDR 在 12:05 錄到陌生人在「又一個頻道」上傳送這一批申報。

目標:找出陌生人這一批申報裡所有的不實申報,把它們的申報代碼依送出順序用連字號連起來。

給的檔案有 SDR 錄波、辦公室的檢查影像(5 頻道 GeoTIFF)、類別統計、訓練田與地塊登記簿、駁回信

先用 SDR 解出申報批次

這次的無線電是 434.65 MHz、SF9、BW125k、前導碼 8、顯式標頭、CR4/5。

沿用解調器,64 個 burst 解出來是:一個批次標頭 + 30 筆申報 + 一個短封包,然後整批再送一次(所以每筆內容有兩份可以互相驗證)

SDR 的頻譜、單個 burst 的頻譜圖、以及 64 個 burst 的結構(標頭 + 30 筆 + 重送)

每筆申報的格式是 <序號>;<地塊>;<申報作物>;<面積>;<申報代碼>,例如 01;MZH-8140;legelo;44.67;CUVE(legelo = 牧草)

關鍵:被刪掉的那個類別

辦公室的 .sta 檔用高斯最大似然分類、等先驗,但只有四個類別:牧草、殘茬、耕地、聚落,可以發現 玉米(kukorica)被拿掉了,只是訓練田還留著

監督式分類器只能輸出訓練過的類別,所以沒有玉米統計時,玉米田會被硬分成最像的一類(牧草),檢查就通過了,這就是整題的核心漏洞

我先把訓練田的多邊形光柵化到影像網格,重算每個類別的平均與共變異數,跟 .sta 檔逐位元組吻合,確認座標與取樣慣例都對。

然後用訓練田 T-01 補回玉米的統計,做 5 類分類,再逐筆比對:

左:真彩色;中:辦公室的 4 類分類(把玉米田分成牧草);右:補回玉米後(黃色),不實申報以紅線標出

辦公室的 4 類分類下 30 筆全部「通過」

補回玉米後,只有 3 筆不符,而且都是 申報牧草、實際是玉米 :

# 地塊 申報 補回玉米後 代碼
1 MZH-8140(Babb 的地塊) 牧草 玉米 93% CUVE
10 MZH-9183 牧草 玉米 84% UKEJ
28 MZH-1402 牧草 玉米 80% TRP6

Flag

1
GAIANSPACE{CUVE-UKEJ-TRP6}

心得

  1. 「少了一個類別」是整題關鍵。 監督式分類器只能輸出訓練過的類別,沒有玉米的統計就把玉米硬塞進最像的牧草——所以「檢查通過」不代表申報是真的。這是個很真實的遙測詐領情境。
  2. 先用已知資料驗證自己的處理方式。 訓練田像素數、.sta 的平均與共變異數逐位元組吻合之後,再去補缺少的類別,結論才站得住。
  3. 解 SDR 的批次要善用重送。 兩次傳輸內容一致,可以交叉確認每個字元,不必猜。
  4. 到這裡,農場篇的 LoRa 解調器已經很成熟了。接下來系列會跳到另一條故事線——深夜值班、衛星被劫持——同一支解調器會遇到更刁鑽的狀況。