Skip to content

Repository files navigation

tw-drone-nofly — 台灣各縣市遙控無人機禁止/限制飛航區域(含時間變化)

Data License: CC BY 4.0 Code License: MIT

開放資料集,將各縣市政府依《遙控無人機管理規則》公告的禁止/限制飛航區域, 統一轉為標準 GeoJSON(WGS84),並盡可能保留歷次公告的時間變化

Repo:https://github.com/TCLeeTW/CD-TWN_Drone_Restrict_Area ·  歡迎協作(見 CONTRIBUTING.md),最缺歷史版次與互動視覺化。

互動地圖

index.html 是換頁式版次變化地圖(Leaflet):選縣市、按公告版次翻頁, 同時呈現變化(新增紅/解禁綠)與結果(該版全貌)。

  • 啟用 GitHub Pages(Settings → Pages → Source: main 分支 /root)即可線上瀏覽。
  • 本機預覽:python -m http.server 後開 http://localhost:8000/index.html (需經 HTTP,直接開檔 file:// 無法讀資料)。
  • ⚠️ 時間軸目前僅臺北市完整(9 版);其餘 21 縣市為單一版本,地圖會標注。

快速開始

直接使用整理好的資料(免安裝):

自行重建:

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python scripts/build.py        # 由 source/ 產生 data/ derived/ manifest.json crosswalk.csv
python scripts/gen_index.py    # 更新收錄目錄

原始政府公告檔不隨 repo 散布(見 source/來源連結.md); 地方政府公告/PDF 縣市需依連結重新下載原始檔才能完整重建,API 縣市可用 scripts/fetch_caa.py 重生。

目前收錄

全台 22 縣市全數收錄,約 4988 設施 + 24 廊道(WGS84 GeoJSON)。

  • 每縣「當前版」一律以交通部民航局 UAV 空域系統 API 為主來源(各縣官方彙整、最完整、可比對)。
  • 部分縣市另存有歷史公告版(地方政府公告 ODS/XLSX 或 PDF 解析),保留為時間切片。
  • 逐縣市、逐版本的收錄明細與缺漏一覽(含來源類型、原始連結、本地檔案): → 收錄目錄與缺漏一覽.md(由 scripts/gen_index.py 自動產生)。

關於「異動分析」的重要限制

  • 真正可信的「版次異動」需同一來源的連續版次。目前只有 臺北市(9 版地方政府公告 ODS,2022–2026 半年一版)具備。
  • 其他縣市多為「舊公告版 + 當前 API 版」的跨來源組合;兩者差異大多是完整度落差 (API 通常較完整,例:屏東公告 PDF 119 區、API 211 區),不代表政策變化。 地圖與資料在跨來源比較時會標示警告、不計為新增/解禁。
  • 各縣公告約半年一版(6 月底 / 12 月底,全國協調發布,多縣同日)。歷史版次須向縣府/議員追溯; 新北市已證實有公報 paper trail(見 歷史版次追溯清單.md)。

資料品質註記:花蓮 10 筆、金門 1 筆設施座標落在鄰縣緯度帶,研判為原始 PDF 謄錄錯誤; 本資料集忠實保留來源值,未逕行竄改,待查證。

為什麼做這個

各縣市各自公告、格式不一(ODS/XLSX/PDF),且沒有中央整合的「帶時間維度」可下載資料。 民航局 drone.caa.gov.tw 前台僅互動地圖,但其後端有公開的 ArcGIS REST FeatureServer (dronegis.caa.gov.tw/server/rest/services/Hosted/UAV_fs/FeatureServer,免登入、可輸出 GeoJSON),為各縣市當下禁限區的官方彙整——惟為即時單一快照(無歷史、無版本), 故僅用於補掃描件/未附座標縣市的最新座標(見 scripts/fetch_caa.py)。 本資料集把各官方公告正規化成單一格式並保留時間維度(這正是 API 缺、而本專案補上的), 方便 GIS、網頁地圖與程式分析。

目錄結構

tw-drone-nofly/
├── manifest.json                 索引:城市×版本、來源、筆數、出處檔
├── crosswalk.csv                 UID ↔ 各府原始編號 對照(1420 筆)
├── scripts/build.py              建置腳本(ODS/XLSX → GeoJSON)
├── source/{city}/{date}.{ods,xlsx}   政府原始檔(保留出處)
├── data/{city}/{date}.geojson            設施快照(扁平屬性,GIS 直接開)
├── data/{city}/{date}_corridors.geojson  廊道快照(緩衝多邊形)
└── derived/                      衍生檔(由 build.py 生成,勿手改)
    ├── {city}_temporal.geojson   每設施一 feature,含 history[] 時間變化
    ├── {city}_latest.geojson     / {city}_corridors_latest.geojson
    └── all_latest.geojson        / all_corridors_latest.geojson(全台合併)

data/source/ 是真相來源,一對一對應政府公告;derived/ 全部可由 scripts/build.py 重新生成。新增城市只需在 build.pyCITIES 加設定。

ID 方案(UID ↔ 各府原始編號)

欄位 說明 範例
uid 本資料集全域 ID:<城市碼>-<原始編號> TPE-北95KHH-高府001
local_id 地方政府原始公告編號(無則 null 北95高府001
  • 1:1 對應、不撞號:直接以原始編號組成,故高雄 高87南87 不會衝突。
  • 無原始編號者(如桃園幼兒園分班)給 <城市碼>-U###local_idnull
  • 編號不重用:地方政府編號嚴格遞增;同設施若被移除後重新公告會拿到新號, 本資料集視為不同 uid(例如臺北陽明變電所 北224北322)。
  • 完整對照見 crosswalk.csv

座標系統

  • 輸出一律 WGS84(EPSG:4326),經度在前、緯度在後(GeoJSON 規範)。
  • 原始檔為 DMS 編碼(如 1213712.19, 250317.64 = 121°37′12.19″E, 25°03′17.64″N), 已換算為十進位度。五個城市的 DMS 格式一致。
  • 自動校正經緯順序:台灣經度(114–122)恆大於緯度(10–26),建置時以 「較大值為經度、較小值為緯度」正規化,修正部分來源將座標存成 (緯,經) 顛倒的情形 (桃園幼兒園),並對本島與南海離島(高雄東沙/南沙)皆正確。

檔案格式

快照(data/)— 扁平屬性,各 GIS 軟體通吃

{ "type":"Feature","geometry":{"type":"Polygon","coordinates":[[[121.52,25.00],...]]},
  "properties":{ "uid":"TPE-北95","local_id":"北95","name":"行政院",
    "category":"政府機關","restriction_type":"prohibited",
    "city":"臺北市","city_code":"TPE","valid_date":"2026-06-24","source":"臺北市政府交通局" } }

時間合併(derived/*_temporal.geojson)— 巢狀 history,網頁時間軸用

"properties":{ "uid":"TPE-北95","local_id":"北95","name":"行政院",
  "first_seen":"2022-06-30","last_seen":"2026-06-24","active":true,
  "history":[ {"date":"2022-06-30","status":"prohibited","restriction":"prohibited"}, ... ] }

restriction_type / restrictionprohibited(全面禁止)|conditional(有條件限制)。

使用方式

  • QGIS / 一般 GIS:開 data/{city}/{date}.geojson,一檔一圖層一時間點。
  • 網頁時間軸地圖:載入 derived/{city}_temporal.geojson,依 history 著色。
  • GitHub 預覽derived/all_latest.geojson 可直接在 GitHub 上以地圖檢視。
  • 程式化取用:讀 manifest.json 取得所有城市與版本清單,不必爬目錄。

已知限制

  • 廊道為簡化後的緩衝多邊形:鐵路/公路/捷運在原始檔為沿線密集點序列(閉合環, 屬緩衝面而非中心線),點數龐大(單條可達 3 萬點)。已以約 5 公尺容差做輕量簡化 (Douglas–Peucker),形狀幾乎不變但檔案大幅縮小,另存於 *_corridors.geojson。 新北市廊道座標在原始檔為外部連結,無幾何故未收。
  • 部分設施無內嵌座標:少數區域(如新北的自然保留區)在原始檔以外部連結提供座標, 無法繪製,已排除並記於建置日誌。
  • 桃園地方政府公告檔過時:桃園可下載之座標檔停留在民國 109 年(2020), 為目前唯一地方政府公告版本,非最新公告;使用時請注意。以其真實生效日 2020-06-19 標記。
  • 大範圍圓形需查證:部分政府設施(如臺北 TPE-北95 行政院)公告範圍為半徑約 5 km 的大圓,涵蓋市中心大片區域,疑似原始公告座標誤差,尚未與民航局互動地圖交叉比對。

資料來源與法源

  • 法源:《遙控無人機管理規則》,各直轄市/縣市政府公告。
  • 各縣市原始公告出處見 source/來源連結.mdmanifest.jsonsource_url。 部分縣市之座標取自交通部民航局 UAV 空域資訊系統(dronegis.caa.gov.tw)彙整。
  • 本資料集僅做格式轉換與時間彙整,未變更公告內容。

更新流程

  1. 從各縣市交通局下載最新公告檔(ODS/XLSX)放入 source/{city}/
  2. scripts/build.pyCITIES 補上該版本設定。
  3. 執行 python scripts/build.py,自動重建 data/derived/manifest.jsoncrosswalk.csv

授權

  • 資料data/derived/*.geojsoncrosswalk.csvmanifest.json): CC BY 4.0。使用時請標註來源:各縣市政府公告/交通部民航局, 及本資料集(tw-drone-nofly)。
  • 程式碼scripts/):MIT
  • 底層為政府公開資訊之重製與格式轉換;本資料集未變更公告內容。

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages