anoni-net / anoni-net/docs

技術評估:Navara 開源 3D 地圖引擎,供之後的公開資訊服務參考

Ouverte
#388 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement
Langage dominant
JavaScript
Étoiles
47
Forks
7
Merge moyen
2 h 42 min
PR mergées (30 j)
291

Description

記錄一份技術評估,供之後規劃新的公開資訊服務時參考。目前沒有要動任何已上線的作品。

## 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`

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, python, rust, three.js, wasm
Domaine
computer-graphics, data, documentation
Type d'issue
Documentation
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Active
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.