技術評估:Navara 開源 3D 地圖引擎,供之後的公開資訊服務參考
- 主要言語
- JavaScript
- スター
- 47
- フォーク
- 7
- 平均マージ
- 2時間 42分
- マージ済み PR(30日)
- 291
説明
記錄一份技術評估,供之後規劃新的公開資訊服務時參考。目前沒有要動任何已上線的作品。
## Navara 是什麼
`reearth/navara`,日本 Eukarya 開發的開源 3D 地圖引擎,MIT 與 Apache-2.0 雙授權。核心是 Rust 加 WebAssembly 的 GIS 引擎,渲染交給 three.js,四層 API 分別是 Declarative、Plugin、API、Shader,最底層開放完整的 three.js 存取。
- 原始碼:
- 文件:
- FOSS4G 2025 議程:
npm 套件 `@navaramap/three` 目前是 `0.0.5`,2026 年 8 月中發布,官方自述為 prototype。
支援衛星影像、地形、3D Tiles 城市模型與向量資料。Eukarya 同時是日本 PLATEAU 的核心開發者,日本那側有現成的 3D 城市模型可用。
## 跟現有技術棧的關係
重疊得很剛好,`atlas.js` 本來就是 three.js WebGPU 加 TSL。Navara 補的是那 3729 行裡自己刻的 GIS 基礎建設:等距圓柱投影貼圖、國界 ring、`flyTo`、`zoomForExtent`、`subsolarPoint`,在 Navara 都是引擎內建的。
第四層開放完整渲染管線,代表極光、大氣輝光、三跳電路的粒子與殘影那些 TSL shader 可以帶著走,不必為了換引擎重寫畫面。
## 地球儀不改版的理由
### 隱私原則衝突
Navara 入門範例的底圖來自 NASA GIBS 的 tile 服務,使用者瀏覽器會直接對外站發請求。文件站在「Tor 中繼地球儀」那頁寫過,連 onionoo 的即時更新都預設關閉,理由是那個動作會讓伺服器看見使用者的 IP。改用外部串流 tile 等於推翻這條原則。
### 離線與 onion 版本
vendor 的 three.js 加十幾份 JSON 已經不小,再加 WASM 核心與 tile 快取,onion 上的體驗會塌掉。目前也沒有建置流程,改完存檔重整就看得到,引入 npm 套件與 WASM 載入路徑之後那個便利會消失。
### 版本仍在早期
`0.0.5` 的 API 還會變,押在已上線且資料整合度最高的作品上不划算。
## 之後可以考慮的方向
### 1. 資料先脫離自家 renderer(不需要 Navara 也該做)
`tools/` 底下十四支 `gen_*.py` 產出的是自訂 JSON,只有 `atlas.js` 讀得懂。讓它們同時輸出一份 GeoJSON,資料就能被 Navara、Re:Earth Visualizer、QGIS、kepler.gl 直接讀。
台灣那幾份特別值得:`14` 處海纜登陸點是自建資料集,逐點交叉查證過座標並標了精度分級,TeleGeography 收費、OpenStreetMap 沒收錄。`201` 座有座標的變電所與 `242` 段 345kV 輸電線同理。以 GeoJSON 形式公開,價值超出自家地球儀。
### 2. 台灣電網放到真實地形上
現在輸電線貼在球面,345kV 骨幹翻過中央山脈那段看起來跟平地沒兩樣。Navara 有 terrain 圖層,把電塔與線路放在真實高程上,東西部電力調度為什麼困難就成為看得到的事實,跟地球儀上「`64` 座變電所尖峰負載超過可靠容量」那組數字互補。
適合做成獨立的新作品,不動現有三件,順便當作 Navara 的試水溫。
### 3. 海纜登陸點的城市尺度
3D Tiles 城市模型加上登陸點座標,可以說明一條國際頻寬在哪裡上岸、上岸之後接到哪一座機房。日本側有 PLATEAU,台灣要先確認內政部有沒有開放的 3D 建物資料。
## 採用前要先決定的事
- **tile 從哪來**:走 Navara 的話,底圖與地形需自架並從 `assets.anoni.net` 出去,或把需要的範圍預先切好隨作品發布。不解決這件事,新作品上線第一天就會跟自己寫的隱私說明打架。
- **onion 版本怎麼辦**:可能的作法是 Navara 版本只上 clearnet,onion 保留現有的 `atlas.js`。
- **授權標註**:MIT 與 Apache-2.0 跟站上內容的 CC BY 4.0 並存沒問題,vendor 進來要在 `NOTICE` 補一筆。
## 相關
- 三件作品:`docs/zh-TW/games/`
- 資料產生腳本:`tools/gen_*.py`
コントリビューションガイド
調査の方向性
Read the linked Navara introduction and FOSS4G material, then inspect atlas.js, tools/gen_*.py, and docs/zh-TW/games/. This issue has no implementation task yet; done would require turning the evaluation into a separately scoped decision about data export, a possible new work, or adoption constraints.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript, python, rust, three.js, wasm
- 領域
- computer-graphics, data, documentation
- issue の種類
- ドキュメント
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 活発
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100