資料科學課程報告:以台灣環境為例設計戰時避難疏散路線指引
資料科學課程報告:以台灣環境為例設計戰時避難疏散路線指引
- 撰稿日期:2025年2月23日
- 作者:aaronyu
- 類別:資料科學、地理資訊系統、公共安全
- 標籤:Python、KML、地理數據、MongoDB、避難疏散、資料清理、路線規劃、台灣環境、宮廟資料
摘要
本報告利用資料科學方法,從「車床天地」的Google Map KML檔案提取數據,結合台灣政府開放資料平台(https://data.gov.tw)中的多項資料集(包括內政部的宮廟資料),設計一套適用於台灣環境的戰時避難疏散路線指引系統。系統基於車泊點與宮廟資料,加入避難相關元數據(如可容納人數、即時收容人數),並採用MongoDB作為資料庫,實現高效儲存與查詢。本報告刻意排除民防系統常見的學校與公園作為主要避難場域,並解釋其理由。內容涵蓋資料提取與清理、Metadata設計、路線規劃邏輯、資料庫設計,以及未來擴展建議,旨在提供一個具實用性與可擴展性的避難解決方案。
課程目標
利用資料科學技術,將車床天地KML檔案中的車泊點數據與政府開放資料(特別是內政部的宮廟資料)整合,設計戰時避難疏散路線指引系統。目標包括:
- 整理並擴展車泊點與宮廟資料,適配避難需求。
- 結合政府開放資料,提升系統的全面性與即時性。
- 設計可擴展的資料結構與儲存方案,支援戰時應用。
- 明確排除學校與公園作為主要避難場域,提供替代方案。
資料來源與背景
主要資料來源
- 車床天地KML檔案:
- 內容:台灣各地車泊點的區域、名稱、經緯度座標(N,E)、地址及電話等基礎資訊。
- 格式:Google Map KML(XML結構)。
- 特點:涵蓋全台露營與車泊地點,多位於郊區或山區,具有避難潛力。
政府開放資料
從政府開放資料平台(https://data.gov.tw)獲取以下相關資料集,補充系統資訊:
宮廟資料
- 資料集:宗教團體登記資料(內政部)
- 內容:全台宮廟的登記名稱、地址、負責人資訊及部分經緯度資料。
- 應用:宮廟在台灣文化中常作為社區避難場所,具備空間、設施(如廁所、水源)及社會信任優勢,可與車泊點結合形成避難網絡。
- 格式:CSV,部分資料需透過地址轉換為經緯度。
地理與空間資料
- 全國避難收容處所資料(內政部):避難所位置、名稱、地址及經緯度,用於比對與驗證。
- 道路網圖資(交通部):台灣道路GIS數據,用於路線規劃。
- 全國建物資料(內政部營建署):建物分佈與用途,評估人口壓力與安全風險。
人口與容量相關資料
- 人口統計資料(內政部戶政司):鄉鎮區人口數與分佈,估算避難容量。
- 災害潛勢圖(國家災害防救科技中心):地震、颱風、洪水潛勢,計算安全評分。
交通與基礎設施資料
- 公共運輸站點資料(交通部運輸研究所):公車與火車站點,提升可達性評估。
- 電力設施分布(台灣電力公司):電網位置,判斷電力供應能力。
災害應變相關資料
- 即時地震資訊(中央氣象署):地震數據,動態調整路線與地點。
- 颱風即時資訊(中央氣象署):颱風路徑與影響,更新安全評分。
- 緊急醫療資源分布(衛生福利部):醫療設施位置,提供傷患支援。
其他潛在資料
- 土地使用分區資料(內政部國土測繪中心):土地用途,評估長期避難適宜性。
- 行動通訊基地台分布(國家通訊傳播委員會):通訊覆蓋,確保避難地點聯繫能力。
為何不納入學校與公園作為主要避難場域
在台灣民防系統中,學校與公園常被指定為避難場所,但本報告刻意排除其作為主要場域,理由如下:
- 戰時脆弱性:
- 學校:多位於人口密集區,建築結構(如教室)易受砲火或地震損壞,且為敵方潛在目標(如徵用為指揮中心)。
- 公園:多為開放空間,缺乏遮蔽與基礎設施,易受空襲或氣象災害影響。
- 容量與設施限制:
- 學校:雖有教室與操場,但戰時可能優先用於安置學生或軍事用途,避難容量受限,且缺乏獨立供水與電力。
- 公園:無穩定設施(如廁所、庇護所),不適合長期避難。
- 交通與隱蔽性不足:
- 學校與公園:多位於城市中心或顯眼位置,交通易堵塞,缺乏隱蔽性,增加暴露風險。
- 替代方案優勢:
- 車泊點位於郊區或山區,隱蔽性高且遠離潛在目標;宮廟具備社區信任與基礎設施(如水源、集會空間),更適合戰時分散避難。
背景
台灣地形多山,人口分佈不均,戰時避難需考慮地點的可達性、安全性及容量。車泊點與宮廟結合官方避難所,可形成分散式避難網絡,避免過度依賴脆弱的學校與公園,提升整體韌性。
資料整理思路與流程
1. 資料提取與清理
- 輸入格式:
- KML檔案:XML結構,含Placemark標籤。
- 宮廟資料:CSV格式,需地址轉經緯度。
- 提取步驟:
- 使用Python的
pykml
解析KML檔案,提取車泊點名稱、座標及描述。 - 從內政部「宗教團體登記資料」提取宮廟名稱、地址及負責人資訊,使用地理編碼工具(如Google Geocoding API)轉換地址。
- 將非結構化數據(如「雨棚◎」)轉為結構化欄位。
- 使用Python的
- 清理步驟:
- 座標轉換:將
"25° 7'43.50""N,121°46'48.34""E"
轉為[121.78009, 25.12875]
。 - 狀態標記:車泊點「解約」、「停業」設為非活躍,宮廟假設「活躍」除非註記歇業。
- 缺失值處理:地址或電話缺失時,補充「未知」或從其他資料填充。
- 座標轉換:將
2. Metadata設計
為適配避難需求,設計以下欄位:
- 基礎欄位:
type
(類型):區分「車泊點」或「宮廟」。region
(區域)name
(名稱)coordinates
(座標):[longitude, latitude]
address
(地址)phone
(電話)status
(狀態):活躍、解約、暫停
- 避難相關欄位:
capacity
(可容納人數):車泊點參考面積,宮廟參考人口與空間估計。current_occupancy
(即時收容人數):戰時動態更新。facilities
(設施):車泊點如「淋浴」,宮廟如「水源」、「集會空間」。accessibility
(可達性):參考道路網與運輸站點。safety_score
(安全評分):結合災害潛勢圖與隱蔽性計算。
- 擴展性欄位:
last_updated
(最後更新時間):ISO 8601格式。additional_notes
(附加註釋):如宮廟的「宗教活動頻率」或醫療資源位置。
3. 資料結構範例(JSON)
車泊點範例
{
"type": "車泊點",
"region": "信義",
"name": "基隆全方位汽車 (簡小璇)",
"coordinates": [121.78009, 25.12875],
"address": "基隆市信義區",
"phone": "02-24658636",
"status": "活躍",
"capacity": 50,
"current_occupancy": 0,
"facilities": ["淋浴", "車泊", "電力"],
"accessibility": "公路附近",
"safety_score": 70,
"last_updated": "2025-02-23T10:00:00Z",
"additional_notes": "遠離城市中心,隱蔽性佳"
}
宮廟範例
{
"type": "宮廟",
"region": "萬華",
"name": "台北市華中露營場",
"coordinates": [121.49634, 25.01463],
"address": "台北市萬華區萬大路底華中河濱公園左區",
"phone": "0932210734",
"status": "活躍",
"capacity": 100,
"current_occupancy": 0,
"facilities": ["淋浴", "集會空間", "水源"],
"accessibility": "河濱公園內",
"safety_score": 65,
"last_updated": "2025-02-23T10:00:00Z",
"additional_notes": "社區信任高,可短期避難"
}
4. 路線規劃邏輯
- 目標:根據使用者位置,推薦最近、安全且有空位的避難地點(車泊點或宮廟),並生成路線。
- 方法:
- 距離計算:使用Haversine公式:
from math import radians, sin, cos, sqrt, atan2 def haversine(lon1, lat1, lon2, lat2): R = 6371 dlon, dlat = radians(lon2 - lon1), radians(lat2 - lat1) a = sin(dlat/2)**2 + cos(radians(lat1)) * cos(radians(lat2)) * sin(dlon/2)**2 c = 2 * atan2(sqrt(a), sqrt(1-a)) return R * c
- 篩選條件:
status
= “活躍”current_occupancy
<capacity
safety_score
> 50
- 路線生成:使用道路網圖資與Google Maps API生成導航路徑。
- 距離計算:使用Haversine公式:
- 優先級:距離近、安全性高、容量充足,宮廟因社區信任可優先於偏遠車泊點;排除學校與公園以降低暴露風險。
5. MongoDB資料庫設計
- 選擇理由:
- 支援非結構化數據,適配車泊點與宮廟差異。
- 內建GeoJSON地理查詢。
- 高效更新即時數據。
- 集合設計:
- 集合名稱:
shelter_locations
- 索引:
db.shelter_locations.createIndex({ "coordinates": "2dsphere" })
- 集合名稱:
- 查詢範例:
db.shelter_locations.find({ "coordinates": { $near: { $geometry: { type: "Point", coordinates: [121.78009, 25.12875] }, $maxDistance: 10000 } }, "status": "活躍", "current_occupancy": { $lt: "$capacity" } });
政府開放資料應用
資料整合
- 方法:使用Python(Pandas)合併KML與政府資料:
import pandas as pd shelters = pd.read_csv("carpark_data.csv") temples = pd.read_csv("宗教團體登記資料.csv") gov_shelters = pd.read_csv("全國避難收容處所資料.csv") merged_data = pd.concat([shelters, temples, gov_shelters]).drop_duplicates(subset=["latitude", "longitude"])
容量估算
- 車泊點:根據面積估計(如每100平米10人)。
- 宮廟:結合人口統計與空間大小,假設平均容納50-200人。
即時更新
- 透過API(地震、颱風資料)更新
safety_score
與current_occupancy
。
注意事項
- 更新頻率:宮廟資料需定期驗證狀態。
- 格式轉換:地址轉經緯度使用地理編碼工具。
- 安全性:戰時加密敏感資訊。
未來擴展建議
- 動態數據整合:接入交通與氣象API。
- 手機應用程式:開發APP提供即時指引。
- 容量管理:使用IoT動態更新人數。
- 多用途應用:平時旅遊與宗教活動,戰時避難。
結論
本報告透過資料清理、Metadata設計與MongoDB儲存,將車床天地KML檔案與內政部宮廟資料等政府開放資料整合,打造一個高效、可擴展的戰時避難疏散系統。刻意排除學校與公園,轉而利用車泊點與宮廟的隱蔽性與設施優勢,形成分散式避難網絡。系統結合地理查詢與路線規劃,能為台灣民眾提供實用支援,未來可進一步提升即時性與應用範圍。