Zh-hant:mapnik in a nutshell

From OpenStreetMap Wiki
Jump to navigation Jump to search

返回 開發 (正體中文)

造磚工程技術重點

為什麼要造磚?因為可以讓地圖以自己覺得最爽的方式呈現~

造磚工程,大致上需要面對這些問題:

  • 數學知識:投影法、認識 Zoom、切磚法 (最難)
  • 實戰技術:造磚工具、造磚 API、效能最佳化、資料來源
  • 風格設計:圖層規劃 (最重要)、圖層風格、詳細程度管理、疑難雜症處理

數學知識

投影法

TODO

Zoom

TODO

切磚

TODO

實戰技術

造磚工具 (nik2img.py)

TODO

造磚 API (mapnik Python binding)

TODO

效能最佳化

TODO

風格設計

圖層規劃

天龍國單車路網採用的七層式圖層架構

為了讓圖磚能夠忠實呈現實際空間的層次,造磚時需要先做好圖層規劃。
以右圖為例,天龍國單車路網將圖磚分割為七層

陸地、海洋、天然地貌

這裡要注意,OSM 的圖資並不包含海岸線,所以圖資如果包含海洋,需要先取得海岸線資訊, 在造磚的一開始,先分離海洋和陸地 (嗯~很有上帝的 Fu),而天然地貌需要根據當地的環境複雜度來考量圖磚的配色, 以天龍國來說,主要需要畫這些內容。

  • 圖資完整的河流,以 polygon 表示 (基隆河、淡水河)
  • 圖資不完整的河流,以 line 表示 (景美溪)
  • 溼地 (關渡、社子、紅樹林)
  • 森林 (天龍盆地周邊山區都是)
  • 湖 (畫湖會遇到難搞的事,後面會解說)

人造地貌、道路

人造地貌種類非常多,至於要畫到什麼程度,要看地圖的用途以及作者的龜毛程度, 其中最討厭的是畫有湖的公園,例如內湖的碧湖公園和大湖公園,畫完以後就把湖蓋掉了, 所以要注意如果圖資有包含這種公園,湖需要重畫一次。

而道路,這是圖資最重要的,也是最麻煩的,而且在城市裡這是密密麻麻的。
有幾個製圖重點在畫道路前要先掌握:

  • 認識各種不同的路,在圖資裡的表示法
  • 依照道路立體高度升冪排序,高度低的優先畫
  • 每一條路需要畫 2 次,先畫粗線再畫細線達到邊框效果
  • 橋樑、隧道等特殊工法,依照喜好調整呈現方式

文字

文字比較需要注意的,就是務必要在最後階段才做,不然被其他東西蓋掉就沒用了。 另外要注意河川的名稱,似乎都標記在 line 上面而不是在 polygon 上, 至於有沒有例外,可能需要實際看圖資決定該怎麼畫。

圖層風格

實用優先風格

這種地圖,要能在最短時間找到想看的東西,而且能看懂

  • 資訊量適中,讓讀者可以快速消化內容
  • 配色對比鮮明,顯眼的色彩留給重點資訊
  • 依照地圖用途,顯示近距離的關鍵地標 (如單車地圖顯示 "廁所"、"飲水機")

設計優先風格

這種地圖,要能供在牆上,每天只看一眼也爽,所以質感最重要,實用性再說

  • 構圖規劃 (復古、時尚)
  • 資訊取捨 (捨棄會破壞主題性的圖資)
  • 素材規劃 (設定有限的材質和配色)

詳細程度管理

TODO

疑難雜症處理

有造磚就有 Bug,遇到 Bug 大致上有三種解法

  1. 等圖資改好:最根本作法,但是可能緩不濟急
  2. 改善造磚 SOP:不錯的方法,但是無法解決 100% 問題
  3. 使用秘技:最快的作法,但是可能也會製造出副作用

畫天龍國單車路網時,有遇到這些 Bug,後面的數字是上述的解法

  • 湖被公園蓋掉 (2)
  • 山被軍事基地蓋掉 (2)
  • 景美溪沒有 Polygon (2)
  • 阿柔洋的山區,被標記成人造景觀 (3)