QGIS 更新屬性表以及用簡單的正規表示式(regular expression)來選擇資料之值

Qgis 中更新屬性表,簡單說就是類似像 SQL 語言去更新或計算某些欄位的資料。

先將屬性表開啟,然後開啟編輯模式(toggle edit mode)之後,選欄位計算(field calculator),如下圖

qgis attribute table

接下來就可以進入欄位計算的介面。如果你想計算後的結果建立一個新的欄位,就選擇建立新欄位(create a new field),並設定好該欄位的名稱、類型(例如整數、浮點數等),精確度等,之後就可在運算式(expression)處輸入你想要的值。

 

 

 

1. 簡單語法:

假設你要把某欄位名稱 * 10 再減一的話,就是

"欄位名稱"*10 - 1

接下來 qgis 就會將該欄位名稱 *10-1 並儲存至新的欄位中(或是你可以選擇既有的欄位)

2. if-else 語法:

CASE WHEN statement THEN statement
ELSE statement
END

舉個簡單的例子來說,假設某欄位 “NCODE" 等於 FC21 時,更新另一個欄位 “SU_BELT_CO" 之值為 1,其他的則為零,語法如下:

CASE WHEN "NCODE" = 'FC21' THEN 1
ELSE 0
END

如果你想要更細緻的去處理,QGIS  的 Field calculator 也支援正規表示式 (regular expression),以下用 POSIX 的語法來解釋:

當欄位 A 的值是 1,2,3, … , 9 的時候,新增或更新某欄位 B 的值為 1,若 A 值為 A, B 或 C 時,則更新欄位 B 的值為 -1,可以這麼寫:

CASE WHEN "A" ~ '[1-9]' THEN 1
ELSE 0
END

‘~’ 符號代表 LIKE 的意思,也可以打 LIKE,中括號([ ])內代表是範圍,用’-‘ (dash) 來表示,例如 1 到 9 就是 [1-9],另外常用的正規表示式還有像是 pipeline (|),表示 OR 的意思,例如 A|B|C 代表欄位中 A 或 B 或 C 的值;’^’ 代表以什麼為開頭的表示,例如 ^F 表示開頭是 F 的值,而 ‘$’ 符號表示以什麼為結尾,例如 o$ 代表結尾是 o 的值。

另外,如果你想用正規表示式取代某些值時,可以用 regexp_replace(“欄位名稱", 要取代的pattern, 取代的值),例如:

 regexp_replace("Company", '^台糖', '臺灣糖業股份有限公司')

還有最重要的是,當你開啟編輯模式,並且建立或更新欄位後,請記得按下儲存(在開啟編輯模式的旁邊有個磁片的符號),否則剛剛做的都是做身體健康的喔!

QGIS field calculator 螢幕截圖如下:

QGIS field calculator

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

w

連結到 %s