2017年11月18日 星期六

GRASS 地理資訊系統入門指南

GRASS 地理資訊系統 GRASS (Geographic Resources Analysis Support System) 是一套極強大的地理資訊系統自由軟體。 它能處理網格資料、 向量資料 (例如 geojson) 及資料庫形式的表格資料。

安裝/啟動 GRASS 之前, 要先了解它存放圖資的目錄結構。 在 GRASS 裡面, 最上層的所有圖資根目錄稱為 「GRASS GIS database directory」。 例如我決定把 GRASS 的所有圖資通通放在 /x/grass 目錄下。 第一層的每一個子目錄, 稱為一個 「location」, 你可把它想成是一個與其他圖資不相關、 獨立的 project。 同一個 location 底下的所有圖資, 都採用相同的投影/座標系統。 第二層的每個子目錄稱為一個 mapset (圖集)。 按照 GRASS 多人分工合作的設計, 同一個 project (location) 底下可以有好幾位 users 分工合作, 每個人有一個自己的 mapset, 可以設定讀寫權限; 另有一個特殊的圖集稱為 PERMANENT, 所有人都可以讀取。 以我們個人使用來說, PERMANENT 圖集就放固定不太變動的圖資, 然後另外創一個自己實驗亂玩的工作圖集。

請先到 這裡 下載範例圖資 smaller subset NC location => GRASS 7 data subset。 在 /x/grass (或是你自選的 GRASS 圖資根目錄) 底下解壓縮, 會產生一個名為 nc_basic_spm_grass7 的子目錄, 這底下又有 PERMANENT 跟 user1 兩個子目錄。

好的, 那就開始動手玩吧。 在 debian (含 ubuntu) 系列系統下 apt-get install grass 一句話就安裝起來了。 我用 grass 指令啟動後, 點選剛剛解壓縮得到的 nc_basic_spm_grass7 這個 location, 再點選它底下的 user1 這個 mapset, 然後就可點 「Start GRASS Session」。

想要學習 GRASS, Hands-on to GIS and Remote Sensing with GRASS GIS GRASS GIS Quickstart Welcome, First time Users of GRASS! 是三個很好的起點。 遇到看不懂的名詞或指令, 則可以到 「开源GIS软件GRASS实用指南」 簡中手冊查詢。

GRASS 啟動畫面 在 GRASS 裡面, 有兩大類的圖資: 網格類型的 raster maps 及向量類型的 vector maps。 兩者的差別就像 jpg/png 跟 svg 的差別一樣。 等一下在創建一個新的 location 時, 圖形介面會叫你填 region extents 跟 resolution。 這只對 raster maps 有用; 而我未來將從 geojson 或 csv 匯入資料、 只對向量類型的圖資有興趣, 所以可以直接跳過這一步。 離開 grass、 再重新進入一次, 這次 (依據 osm 官網的說明)、 創一個名為 tw 的新的 location、 選取 EPSG 4326 也就是 WGS84 座標系統、 略過 region extents and resolution 的設定、 在這個 location 底下 (跟 PERMANENT 平行處) 建一個名為 work 的圖集。 然後就可以進入 GRASS 玩自己的資料了。

貴哥很忙, 不想學 GUI, 也不想學 raster maps, 只想用 v.* 系列指令做一些神奇的向量運算。 以上的推薦閱讀, 其實自己只認真地讀了兩三篇 (的一部分) ^_^

想學命令列的讀者, GRASS GIS Session 1 是個不錯的起點。 到底總共有哪些指令可以用? 可以從 指令分類表 出發, 並且在命令列上按 「tab」 鍵, 就可按照第一個字元逐一列出所有指令。 也可從 shell 或檔案總管底下查看 /usr/lib/grass70/bin 跟 /usr/lib/grass70/scripts 兩個目錄的內容。 GRASS 的命令列支援 GNU readline 命令列快打。 可以用 v.in.ascii helpman v.in.ascii 查看 v.in.ascii 指令的用法。

想要認識 GRASS 的向量圖資處理, 強烈建議先略讀 6.4 版 6.1 版 的 Vector data processing in GRASS GIS 手冊。

摸索了很久之後, 終於發現:

  1. 只要你啟動過一次 grass, 在 ~/.grass7/rc 設定檔裡面就會出現一句 GISDBASE: /x/grass 之類的, 指定 grass 最上層圖資根目錄。
  2. 在啟動 grass 的命令列上加上 -gtext 選項, 就可以省略圖形介面。 它同時也會在 ~/.grass7/rc 裡面加一句 GUI: gtext 於是以後啟動 grass 時都不會有 GUI。 (下 g.gui wxpython 可以再度叫出 GUI。)
  3. 可以這樣直接建立 kaohsiung 這個 location: grass -c EPSG:4326 /x/grass/kaohsiung 這裡的 -c 是 create 的意思。
  4. 可以這樣直接建立 kaohsiung 底下的 roads 這個圖集: grass -c /x/grass/kaohsiung/roads
  5. 以後可以這樣直接進入 kaohsiung 這個 location 底下的 roads 這個圖集: grass /x/grass/kaohsiung/roads

沒有留言:

張貼留言