2016年2月20日 星期六

離線地圖日記之二: JOSM 畫線 (路徑) 眉角

用 josm 繪製地圖, 畫道路或河流時都會用到 way, 也就是一長條折線。 熟悉 舊版 Dr. Geo 甚至已經為新版 Dr. Geo 寫 重力加速度教學文(英文) 的我, 竟然在這裡卡關很久。 原來拆解折線要兩步, 而不是一步! 同理, 合併也是。

圖1: 框選路徑上的一個節點 圖2: 拆成兩條 (仍舊黏在一起的) 路徑 圖3: 框選路兩個路徑的端點 圖4: 兩條路徑已合黏在一起 (但仍是兩條)

一、 拆路徑的兩步驟

原因是這樣的: 一條馬路可能前後拆成好幾段, 甚至名稱完全改變; 一條河流也可能上下游叫不同的名字 (每條支流可能會有自己的名字)。 所以, 在畫面上看起來一條單純的折線, 實際上可能由好幾條路徑 (way) 構成!

今天我們單純研究幾何, 所以連背景圖也不必載入了。 請直接 「File => 新增圖層」 開啟一片漆黑, 然後隨便畫一條好幾折的折線。

  1. 用選取工具選折線上一個節點 (不要選首尾)。 重點之一來了: 你怎麼點都無法選一個節點。 要用框的, 如圖 1。 (如果有其他方法麻煩分享一下。)
  2. 用 「Tools => 切割路徑」 把折線拆成兩段。 (快速鍵: P)
  3. 點一下空白處, 全部不選。 再把滑鼠移到折線上方剛才節點的附近, 你會看到 josm 現在把折線視為兩條了, 如圖 2。 你可以對每一條取不同的名字、 給不同的標籤。
  4. 移動其中一條折線。 再移動另一條折線。 你可以看到 josm 把它們當做兩個物件分別移動; 但會讓兩條折線維持黏合, 所以未被拉動的那條折線, 它的最後面 (或最前面) 那一小折會跟著動。
  5. 再次框取剛才的節點。
  6. 用 「Tools => 取消黏合路徑」。 (快速鍵: G) 好像什麼事都沒發生?
  7. 再次移動其中一條折線。 終於真的分家了!

接下來反過來做。

  1. 框取一條折線的一個端點, 跟另一條折線的一個端點, 如圖 3。
  2. 用 「Tools => 合併節點」。 (快速鍵: M) Josm 把一個點瞬間移動到另一個點上面, 兩點合併, 連帶地也動到其中一條路徑的一小折, 如圖 4。
  3. 現在又恢復一半: 兩條路徑可各別填寫不同標籤、 可各別移動; 但總是如膠似漆地黏在一起。 (浪漫!)
  4. 再同時框取兩條折線。
  5. 用 「Tools => 合併路徑」。 (快速鍵: C) 把兩條折線合而為一。 現在移動時所有的節點又一致行動了。

切割路徑的完整說明請見 Tools > Split Way

二、 更多眉角

在選取模式下, 路徑的每一小折的中點都有標記, 其實可以拉出來成為路徑上的新節點。 反過來, 如果框選路徑上的一個節點, 然後按 Del 鍵, 也可以快速地刪掉它。 這兩個功能對於微調路徑的長相很方便。

又注意到: 路徑是有方向性的。 兩條路徑可能已經黏在一起了, 但卻因為方向相反而無法合併。 這時應該先用 「Tools => 反轉路徑」 來反轉其中一條的方向, 再來合併。

到這裡, 你可能已經發現: josm 的 Tools 選單是 context-sensitive 的, 也就是說, 它會隨著目前你所選取的不同的物件 (已選取哪些節點? 或哪些物件) 而有不同的選項可用。 例如你若選取一個點, 「反轉路徑」 就不能用; 你若選取一條路線, 「切割路徑」 就不能用。 所以讀文件時, 如果發現你是因為選項 grayed-out (變灰色) 而無法使用, 那可能就是因為你沒選取正確的東西。

如果一次想選取很多個物件, 可是它們並不剛好落在一個長方框內 (或框內有不想要的其他物件) 那該怎麼辦呢? 點選時可以按著 ctrl 鍵, 就像推著購物車一樣, 可以逐一挑選哪些東西要加進來哪些要丟出去 (不想選取)。 詳見 Select, Move and Rotate Objects

三、 練習題

  1. 要如何讓一條路徑上的每一個點都可以自由活動? 提示: 「一條」 路徑, 沒辦法啦。
  2. 要如何把兩條交叉的路徑真的黏起來? 這點很重要。 例如導航軟體沒長眼睛, 它不會自動知道兩條路徑有交叉。 你一定要告訴 osm 它們交會於某個結點, 這樣導航軟體才敢叫你在這裡左轉右轉。 (OSM 為何不自動算交叉? 試想: 如果是快速道路跟平面道路交叉, 那是要指引用路人飛車跳橋嗎 ^_^)
  3. 兩條成十字交叉 (而且已經如上題黏合好) 的路, 要如何把它們拆成兩個不相通的九十度轉彎?

四、 結語

編輯 OSM 地圖, 有一些共通的規範。 例如橋樑應該跟前後的路段拆成 (黏在一起的) 三條路徑、 溪水應該從上游指向下游、 島嶼的邊界應該逆時針走 (沿著邊界走時, 陸地在左手邊、 海水在右手邊)、 ... 詳見 Editing Standards and Conventions Good practice 以及 OSM best practice 的連結。 對, 就是因為文章太多了, 連我也沒看完, 所以我不太敢編輯太複雜的東西, 只敢畫登山步道 :-) 這也是為什麼我要寫這一系列文章。 OSM 跟自由軟體一樣, 不需要強調每人都要貢獻。 越多人沒有壓力地當個開心的使用者, 當中就會出現越多 「未來的貢獻者」。 雖然我們現在只是在畫自己的私房地圖, 但如果從初學開始在就用正確的方式來畫圖, 那麼將來就更不會害怕貢獻。

離線地圖日記系列文章:

  1. 離線地圖日記之一: JOSM 新手入門
  2. 離線地圖日記之二: JOSM 畫線 (路徑) 眉角
  3. 離線地圖日記之三: 用 osmtracker 記錄、 gpsbabel 編輯軌跡

沒有留言:

張貼留言

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。