Zh-hant:mapnik in a nutshell
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 大致上有三種解法
- 等圖資改好:最根本作法,但是可能緩不濟急
- 改善造磚 SOP:不錯的方法,但是無法解決 100% 問題
- 使用秘技:最快的作法,但是可能也會製造出副作用
畫天龍國單車路網時,有遇到這些 Bug,後面的數字是上述的解法
- 湖被公園蓋掉 (2)
- 山被軍事基地蓋掉 (2)
- 景美溪沒有 Polygon (2)
- 阿柔洋的山區,被標記成人造景觀 (3)