CoolFace
Apppublic

JinJia0618/Taiwan_earthquake_tracker

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
App README

🌋 台灣地震追蹤系統 (Taiwan Earthquake Tracker)

本專案是一個全自動化的台灣地震數據追蹤、儲存與視覺化平台。它能每天定時向中華民國交通部中央氣象署 (CWA) 抓取最新地震報告(包含「顯著有感地震」與「小區域有感地震」),自動排入 SQLite 資料庫中防止重複,並於每週產出精美的地震經緯度分布圖,最後自動將代碼、資料庫與網頁同步部署到 Hugging Face Spaces 上。

🌟 核心特色

  1. 1.雙資料集自動追蹤:同時整合氣象署 E-A0015-001 (顯著有感) 與 E-A0016-001 (小區域有感) API。
  2. 2.防重複寫入 SQLite:主鍵設計與 Robust 解析機制,防範重複匯入與 API 欄位格式異動。
  3. 3.歷史地震目錄匯入:支援 CSV 批次資料匯入,無編號資料將以時間與經緯度產生 MD5 雜湊做為唯一鍵,防止重複匯入。
  4. 4.Matplotlib 地震分布圖:將震央位置繪製於經緯度散點圖,圓點大小代表規模,點顏色代表震源深度(紅色為極淺層,藍色為深層),並標示台灣主要城市作為對照。
  5. 5.GitHub Actions 每日排程:定時抓取、產圖、提交,並自動同步至 Hugging Face Spaces 網頁。
  6. 6.Streamlit 互動網頁儀表板:包含近30天數據統計、互動式地圖分布、歷史資料網頁上傳及手動同步控制台。

🛠️ 本機安裝與執行步驟

1. 複製專案並安裝套件

請確保您已安裝 Python 3.8 以上環境,接著執行以下指令:

bash
pip install -r requirements.txt

2. 環境變數設定

本專案的 API 金鑰讀取自環境變數,請複製 .env.example 並重新命名為 .env:

bash
cp .env.example .env

編輯 .env 並填入您的中央氣象署授權碼:

env
CWA_API_KEY=您的中央氣象署開放資料授權碼

(氣象署授權碼申請網址: [https://opendata.cwa.gov.tw/](https://opendata.cwa.gov.tw/))

3. 命令列 (CLI) 工具使用說明

  • —抓取最新地震資料:
bash
    python main.py crawl
  • —產生成最近 7 天的地震分布圖:
bash
    python main.py plot --days 7
  • —批次匯入歷史 CSV 地震目錄:
bash
    python main.py import --csv 您的歷史目錄.csv

4. 啟動 Streamlit 互動網站

bash
streamlit run app.py

啟動後會自動在您的瀏覽器打開 http://localhost:8501。


🤖 GitHub Actions 與 Hugging Face 自動部署

為了讓專案能夠每天自動更新,請在您的 GitHub 倉庫的 Settings > Secrets and variables > Actions 中新增以下兩個 Secret:

  1. 1.CWA_API_KEY:中央氣象署開放資料授權碼。
  2. 2.HF_TOKEN:您的 Hugging Face 寫入權限 Token (前往 Hugging Face Settings > Access Tokens 申請,類型需為 Write)。

設定完成後,GitHub Actions 將會在每天台灣時間凌晨 00:10 自動更新資料庫、產圖,並將網站部署到您的 Hugging Face Space 上。


📂 專案架構

text
台灣地震追蹤/
├── .github/workflows/
│   └── earthquake_cron.yml      # GitHub Actions 自動化腳本
├── .agents/
│   └── AGENTS.md                # AI 助理維護指南
├── data/
│   └── earthquake.db            # SQLite 資料庫 (Git 忽略,動態生成)
├── outputs/
│   └── weekly_map.png           # 每週生成的地震分布圖 (動態提交/展示)
├── src/
│   ├── __init__.py
│   ├── database.py              # 資料庫邏輯 (初始化與防重寫)
│   ├── crawler.py               # API 爬蟲邏輯 (包含 Robust 欄位映射)
│   ├── visualizer.py            # 地震分布圖繪製 (Matplotlib 實作)
│   └── importer.py              # 歷史 CSV 地震目錄匯入
├── app.py                       # Streamlit 網頁應用程式主入口
├── main.py                      # 命令列介面 (CLI) 主入口
├── requirements.txt             # 專案相依性套件
└── README.md                    # 本專案說明文件 / HF Space 設定檔