上回和大家示範過如何用 QGIS 做一張香港的街道圖。但如果你服務的組織或新聞機構涉及香港以外的地方又怎麼辦呢?今天就教大家用 QGIS 做大範圍的地圖,順便討論兩個概念:網格資料和球體投影。我們這次的目標是要在 5 分鐘之內 1 蚊都唔洗做到下面這張圖:
要做這張圖,首先你要 QGIS 這套軟件。下載和使用方式,上集已經說過,不重複了。
之後你要的是數據,而作為草根組織或媒體,最好當然是免費的數據。這兒介紹一個好幫手,叫 naturalearthdata.com ,用來做大範圍的地圖可謂非常方便。數據分 Large Scale, Medium Scale, Small Scale 三種尺度大細, Large Scale 的意思是東西看起來會比較大,也就是數據比較精細。你應視乎你的需要來選(例如你要做一張只佔手機螢幕大小的世界地圖,那麼 Small Scale 就已經足夠了)。每個尺度下面有分 Cultural, Physical 和 Raster,當中 Cultural 和 Physical 都是向量數據 (Vector) ,也就是上次用過的那些「點、線、面」 (Point Line Polygon);而 Raster 則是一種和 Vector 完全不同的數據結構,並不是以定點作為數據的基礎,而是用一幅密鋪的平面來表達,就好像一幅圖片一樣。通常 Vector 會用來表達一些有明顯界線的物件,例如建築物或者國界;Raster會用來表達一些連續不斷的現象,例如氣溫或者地形高度。
今次我們要出的包括國界、省界、河流,同埋地形,請先下載以下數據:
1:50m Cultural Vectors — Admin 0 — Countries
1:10m Cultural Vectors — Admin 1 — States, Provinces
1:50m Physical Vectors — Lakes+Reserviors
1:50m Raster Data — Cross-blended Hypsometric Tints
如果你把國家的數據加載,應該是這樣子的:
如果你把地形的數據加載,應該是這樣子的:
地形我們暫且關掉不要看,只看國界和河流。按上次介紹改 Layer Symbology 的方法,我們先把國界弄成中空楬色,河流弄成淺藍色,國界放在河流的上方:
接下來我們要處理一個在大範圍地圖才會明顯的問題:地球是圓的,但地圖的平的。上圖是沒有處理下純粹用經緯度畫出來的世界地圖,問題是越接近南北極的時候東西向就會被放大。一個負責任的做法是應該找一個合乎需要的投影方法。
坊間常見的技影方法有以上幾種。如果你要劃北韓的導彈會如何射到美國,由於兩地的最短航線會穿過北極,以北極為中心的投影法就會比以赤道為準的要合適。詳細內容要上一整課才講得完的,這兒只好略去。就我們這次要做的新疆地圖為例,可以使用一個現成的 Asia North Lambert Conformal Conic 做例。要在 QGIS 改投影法,在 Project 下面選 Properties ,然後選 CRS ,在 Coordinate reference systems of the world 下面就有很多現成的選擇。你也可以直接在 Filter 欄輸入 Asia North 就可以找到相關的選擇。選好後你的地圖會變成這樣(如果沒東西看就在國界的數據層上選 Zoom to Layer):
不用怕,這不是怪物。這只是用了一個專門給北亞地區使用的投影法放在全世界罷了。它適合北亞地區,但極不適合其他地方,所以看起來才很怪。不用理會其他地方,反正我們只要看北亞,也就把地圖對正我們要看的地方:
接下來我們要把新疆標出來。先把 States, Provinces 那個數據層載入,放到最上層,然後用上次教過的「Filter 大法」使得只有新疆才會顯示出來(Query Builder的語法是 “name” = ‘Xinjiang’),再把數據層的 Symbology 改成中空粗紅線:
之後只要把 Raster 的地形層也加載然後放最底:
喜歡的可以再調一下各種顏色。拿去後期加工,例如把地名標上去,便得到我們的製成品了:
係咪好簡單呢?熟手的話真係 5 分鐘都唔洗。嗱,香港的網媒基本上凡國際新聞都係地圖都冇張。問題是地理位置對理解新聞是很重要的。最起碼拿一張地圖看看,你會知道西非和東非的距離遠過香港去日本,見到西非有疫症所以唔去東非其實係好無常識(認真,就算在大學也有極大量這些人)。希望以上介紹可以鼓勵一眾傳媒在報國際新聞的時候可以加返張地圖,功德無量。
Again, 以上只是教你點㩒制,理論部分基本上完全略去,下次我響富德樓開堂的時候歡迎來聽⋯⋯
最後,一齊睇下美國人對世界地理幾無知,然後諗諗香港街頭做呢個實驗會點⋯⋯