QGIS 欄位計算機教學:24 個實測運算式與常見陷阱
發布於
要在 QGIS 中計算欄位,先開啟圖層的屬性表,點選 Field Calculator(欄位計算機)圖示(Ctrl+I),選擇新欄位或既有欄位,輸入運算式後按 OK。這部分很快。真正麻煩的是運算式沒有報錯,卻寫入了 NULL、平方度或錯誤的分級。
2026 年 11 月 7 日,我在印度班加羅爾 Indiranagar 及周邊行政區的真實 OpenStreetMap 圖層上(8,709 棟建物、854 條道路、35 所學校、37 個公車站、10 個行政區)執行了 24 個欄位計算機運算式,並在每一個旁邊執行常見的錯誤寫法。以下是附上精確輸出值的運算式手冊、以橢球體為基準量測的隱藏陷阱,以及我把其中最難的三個交給 QGIS 內的 AI 代理之後的結果。
什麼是 QGIS 欄位計算機?
QGIS 欄位計算機是內建工具,用 QGIS 運算式建立或更新屬性表欄位。它可以計算面積、長度、座標等幾何數值,改寫文字,用 CASE WHEN 為資料分級,也能從專案中的其他圖層取得數量或距離。
QGIS 其實提供四個地方執行同樣的運算式,選錯地方是遺失成果的第一個原因:
- Field Calculator 對話框(
Ctrl+I): 直接修改圖層。你可以新增欄位或覆寫既有欄位,套用到全部圖徵或只套用到選取的圖徵。變更會留在編輯暫存區,直到你儲存編輯。 - 虛擬欄位(對話框內的勾選框): 每次開啟屬性表或繪製地圖時即時計算運算式。我在測試圖層中把建物
fid27 的面積加倍後,一般面積欄位仍是197.355,虛擬欄位則更新為789.418。問題在於虛擬欄位存在.qgs專案檔裡,而不是 GeoPackage 或 Shapefile 裡。在新專案中開啟該檔案,這個欄位就不見了。 - Processing 的「Field calculator」工具(
native:fieldcalculator): 寫出一個全新的輸出圖層,原始圖層保持不變。適合用在模型中,或不想直接修改原圖層時。注意@row_number,它在這裡從0開始,在對話框中則從1開始。 - 屬性表上方的快速計算列: 不用開啟完整對話框就能更新既有欄位,已經在編輯模式時寫一行快速運算式很方便。
逐步計算欄位
開啟 Field Calculator
在圖層上按右鍵,選擇 Open Attribute Table(開啟屬性表),再點選屬性表工具列中的算盤圖示。在圖層面板選取該圖層後,按 Ctrl+I 可直接開啟 Field Calculator。
檢查選取狀態與欄位設定
如果地圖上有任何圖徵被選取,Only update N selected feature(s) 預設會被勾選。若要計算整個圖層,請取消勾選。選擇 Create a new field(新增欄位)或 Update existing field(更新既有欄位),設定 Output field name,並選擇 Output field type(有小數的面積與長度用 Decimal number (real),整數計數用 Integer,標籤與分級用 Text (string))。
輸入運算式並檢查 Preview
在左側編輯器輸入運算式,或在中間的函式清單搜尋後按兩下插入。按 OK 之前,一定要檢查編輯器下方的 Preview(預覽)那一行。如果顯示錯誤、NULL,或像 0.0000003 這樣的數字,先修正運算式,再寫入 8,000 筆資料。
按 OK 並儲存編輯
按 OK。如果圖層原本不在編輯模式,QGIS 會提醒你將自動開啟編輯模式。計算完成後,點選屬性表工具列中的 Save Edits(儲存編輯)磁碟片圖示,欄位才會寫入檔案。
以下是道路圖層上的對話框,準備寫入道路等級:

不知道函式名稱時,使用中間欄上方的搜尋框。它會篩選函式樹,並在右側開啟說明文件,包括參數順序與範例。

實測運算式手冊
以下每個運算式都於 2026 年 11 月 7 日在 QGIS 3.44.15 中,以我們的班加羅爾 OpenStreetMap 圖層執行(儲存為 EPSG:4326,專案橢球體 WGS 84)。如果你需要自己區域的測試資料,我們的 在 QGIS 下載 OpenStreetMap 資料 教學說明如何乾淨地取得建物、道路與點位。
下方的建物範例輸出來自建物 fid 27、28、30、60 和 62(有地址和樓層數),以及 fid 1、2 和 3(兩者皆無)。
面積、長度、周長與座標
| 你要的結果 | 可直接貼上的運算式 | 範例實測結果 | 常見錯誤寫法(與結果) |
|---|---|---|---|
| 建物面積,單位 m²(橢球體) | $area | 197.35、110.86、141.11、219.71、318.83 | area($geometry) 傳回 0.0(約 3e-7 平方度),沒有錯誤 |
| 建物面積,單位 m²(投影至 UTM 43N) | area(transform($geometry, 'EPSG:4326', 'EPSG:32643')) | 197.60、110.99、141.29、219.98、319.22 | 轉換至 'EPSG:3857'(Web Mercator)在這裡會使面積膨脹 +5.95% |
| 道路長度,單位公尺(橢球體) | $length | 616.34、7.99、1104.32、9.14、72.24 | length($geometry) 傳回 0.005681、0.000074(度),沒有錯誤 |
| 道路長度,單位公尺(投影至 UTM 43N) | length(transform($geometry, 'EPSG:4326', 'EPSG:32643')) | 616.72、7.99、1105.01、9.14、72.29 | 轉換至 'EPSG:3857' 會使道路長度中位數膨脹 +3.03% |
| 建物周長,單位公尺 | $perimeter | 56.72、44.97、48.60、61.54、72.69 | perimeter($geometry) 在 EPSG:4326 圖層上傳回度 |
| 多邊形形心 X(東距,公尺) | x(centroid(transform($geometry, 'EPSG:4326', 'EPSG:32643'))) | 786714.46、786437.79、786237.28 | 在多邊形上用 $x 會傳回 NULL 且不報錯;x_at($geometry, 0) 傳回第一個節點(77.642744),不是中心 |
| 多邊形形心 Y(北距,公尺) | y(centroid(transform($geometry, 'EPSG:4326', 'EPSG:32643'))) | 1435359.45、1435116.32、1436699.32 | 圖層為 EPSG:4326 時,y(centroid($geometry)) 傳回度(12.97...) |
| 列號或圖徵 ID | @row_number 或 $id | 1, 2, 3, 4(對話框),fid 27 的 $id 為 27 | @row_number 在 GUI 對話框中從 1 開始,在 Processing native:fieldcalculator 中從 0 開始 |
如果把 $area 寫入 Integer 輸出欄位而不是 Decimal number (real)(以 Processing Field calculator 測試),QGIS 會四捨五入到最接近的整數(197.35 變成 197,110.86 變成 111),而不是無條件捨去。
條件分級(CASE WHEN 與 NULL 處理)
| 你要的結果 | 可直接貼上的運算式 | 範例實測結果 | 常見錯誤寫法(與結果) |
|---|---|---|---|
| 依面積分大小等級 | CASE WHEN $area < 100 THEN 'small' WHEN $area < 250 THEN 'medium' ELSE 'large' END | medium、medium、medium、medium、large | 未測試 |
| 以預設整數取代 NULL 樓層數 | coalesce(to_int("building:levels"), 1) | 4、4、2、4、3(樓層數為 NULL 時為 1) | "building:levels" + 'a' 傳回 '4a',因為 OSM 標籤是以文字字串儲存 |
| 高度分級,NULL 另外歸類 | CASE WHEN to_int("building:levels") IS NULL THEN 'unknown' WHEN to_int("building:levels") <= 2 THEN 'low' WHEN to_int("building:levels") <= 4 THEN 'mid' ELSE 'high' END | mid、mid、low、mid、mid(fid 1 為 unknown) | 省略 WHEN ... IS NULL 會讓每一筆空值落入 ELSE,把 7,636 棟沒有樓層資料的建物標成 'high' |
文字整理、格式化與日期
| 你要的結果 | 可直接貼上的運算式 | 範例實測結果 | 常見錯誤寫法(與結果) |
|---|---|---|---|
| 安全地合併門牌號碼與街道名 | concat("addr:housenumber", ' ', "addr:street") | '594 12th Main Road'、'83/4 13th Main Road'(兩者皆 NULL 時為 ' ') | "addr:housenumber" || ' ' || "addr:street" 只要任一欄為 NULL 就傳回 NULL |
去除道路名稱的字尾(Road、Main、Cross) | regexp_replace("name", '\\s+(Road|Main|Cross)$', '') | 'Chinmaya Mission Hospital'、'13th Main'、'12th Main' | 只用一個反斜線 \s+ 會失敗,顯示 Invalid regular expression '?+(Road|Main|Cross)$' |
| 將 ID 補零至 12 位數 | lpad(to_string("osm_id"), 12, '0') | '000313829229'、'000313835091' | 未測試 |
| 格式化數字以供顯示 | format_number($area, 1) | '197,4'、'110,9'(在逗號地區設定的 Mac 上,3958.7 顯示為 '3 958,7') | 輸出是依作業系統地區設定格式化的文字(小數逗號與窄不換行空格),之後無法再拿來計算 |
| 兩個日期相差的天數 | day(age(to_date('2026-11-07'), to_date('2019-03-15'))) | 2794 | 只寫 age(...) 會傳回 QgsInterval 物件;to_date('07/11/2026') 會失敗,除非第二個參數傳入 'dd/MM/yyyy' |
把文字寫入 GeoPackage 或 Shapefile 時,也要注意輸出欄位長度。我在 Processing 中把 concat("addr:housenumber", ' ', "addr:street") 寫入長度 40 的文字欄位時,整個執行中止且沒有任何輸出,因為有一條道路(" 80 Feet Road(Sir C.V. Raman Hospital Road)")長達 43 個字元。
跨圖層的空間計數、加總與最近距離
這些運算式讓一個圖層查詢專案中的另一個圖層,不必另外執行 QGIS 空間連結。
| 你要的結果 | 可直接貼上的運算式 | 範例實測結果 | 常見錯誤寫法(與結果) |
|---|---|---|---|
| 計算與每個行政區相交的建物數 | aggregate('buildings', 'count', "osm_id", filter:=intersects($geometry, geometry(@parent))) | 4、1552、336、3141、79、402、1179、348、1539、139 | 忘了 filter:=... 會讓每個行政區都得到整個圖層的總數(8709),且不報錯 |
| 每個行政區的建物總面積(公頃) | round(aggregate('buildings', 'sum', $area, filter:=intersects($geometry, geometry(@parent))) / 10000, 3) | 0.565、20.292、5.605、59.116、1.037、14.094、16.646、7.991、21.39、1.7 | 會加總碰到行政區邊界的完整建物面積,所以跨界建物會在兩個行政區都被計入 |
| 計算每個行政區內的學校數 | array_length(overlay_contains('schools', "osm_id")) | 0、2、3、18、0、0、7、3、2、0(總計:35) | overlay_contains('schools') 不加第二個參數會傳回 true 或 false,不是數量 |
| 到最近公車站的距離(公尺) | distance(transform($geometry, 'EPSG:4326', 'EPSG:32643'), transform(array_first(overlay_nearest('bus_stops', $geometry)), 'EPSG:4326', 'EPSG:32643')) | 125.17、49.39、199.59、158.39、187.97、74.67、123.00、226.61 | distance($geometry, array_first(overlay_nearest('bus_stops', $geometry))) 傳回 0.001142(度) |
| 計算建物 300 公尺內的公車站數 | aggregate('bus_stops', 'count', "osm_id", filter:=distance(transform($geometry, 'EPSG:4326', 'EPSG:32643'), transform(geometry(@parent), 'EPSG:4326', 'EPSG:32643')) <= 300) | 1、1、4、2、2、6、7、7 | array_length(overlay_nearest('bus_stops', $id, max_distance:=300, limit:=-1)) 傳回 37(所有站點),因為 300 被當成 300 度 |
五個不會報錯的欄位計算機陷阱
我讀了 YouTube 上 QGIS 教學影片底下的 70 則求助留言:其中 48 則是真正關於撰寫運算式的問題,而這 48 則中有 8 則是運算式無效、傳回 NULL 或什麼都沒選到。更糟的情況反而沒人問,因為運算式照常執行,寫入看似合理的數字。以下是我們在班加羅爾資料上量測到的五個陷阱。
1. $area 與 area($geometry),以及專案橢球體的作用
$area 和 area($geometry) 的計算方式不同,而至少有一篇 2026 年的教學說 $area 在地理座標系統中會傳回平方度。在我們測試的兩種專案設定下都不是這樣。2026 年 11 月 7 日,我們在 EPSG:4326 的班加羅爾圖層上,針對前 200 棟建物和 200 條道路量測了這兩者以及 transform(),並以 WGS 84 橢球體為基準(QgsDistanceArea)比較。
$area和$length使用專案橢球體(在Project > Properties > General > Measurements設定)。當橢球體為WGS 84時,即使圖層和專案都是以度為單位(EPSG:4326),$area仍會傳回準確的平方公尺。- 當專案橢球體設為
None / Planimetric時,$area在我們的EPSG:4326圖層上仍然沒有傳回平方度。在 QGIS 3.44.15 中,它傳回的平方公尺在 200 棟建物上大了 +3.24% 。 area($geometry)和length($geometry)永遠是在圖層本身 CRS 中做平面計算。 在EPSG:4326圖層上,area($geometry)傳回平方度(一棟房子約0.0000003),在一般小數欄位中會四捨五入成0.0。- 在
area()之前轉換至 Web Mercator(EPSG:3857),每棟建物面積都會膨脹 +5.95%,即使在班加羅爾的緯度(北緯 13°)也一樣,道路長度則膨脹 +3.03%。轉換至當地 UTM 分區(EPSG:32643)則與橢球體面積相差不超過 +0.12% 。
EPSG:4326 圖層上的運算式(n = 200 棟建物、200 條道路) | 相對 WGS 84 橢球體的誤差中位數 | 最大誤差 |
|---|---|---|
$area(專案橢球體 WGS 84) | 0.00% | 0.00% |
$area(專案橢球體 None) | +3.24% | +3.25% |
$perimeter(專案橢球體 None) | +1.72% | +2.25% |
道路的 $length(專案橢球體 None) | +1.31% | +2.61% |
area($geometry) | -100.00%(平方度) | -100.00% |
道路的 length($geometry) | -100.00%(度) | -100.00% |
area(transform($geometry, 'EPSG:4326', 'EPSG:32643')) | +0.12% | +0.12% |
道路的 length(transform($geometry, 'EPSG:4326', 'EPSG:32643')) | +0.06% | +0.06% |
area(transform($geometry, 'EPSG:4326', 'EPSG:3857')) | +5.95% | +5.96% |
道路的 length(transform($geometry, 'EPSG:4326', 'EPSG:3857')) | +3.03% | +3.26% |
如果你不確定為什麼 EPSG:4326、EPSG:3857 和 UTM 分區的表現差這麼多,請看我們的說明文章 QGIS 中的 CRS 是什麼。
2. overlay_nearest 的 max_distance 以圖層單位計算,不是公尺
overlay_nearest 函式因為使用空間索引而很快,還有方便的 max_distance 參數。但 max_distance 永遠以圖層的座標單位計算。
當建物與公車站都在 EPSG:4326(度)時,寫 array_length(overlay_nearest('bus_stops', $id, max_distance:=300, limit:=-1)) 會讓 QGIS 找 300 度內的公車站。這涵蓋了整個地球,所以每一棟建物都得到 37(圖層中全部 37 個公車站)。把 300 公尺猜成 max_distance:=0.003 也不太行,因為一度經度和一度緯度換算成公尺並不一樣長:在建物 fid 62 上,0.003 傳回 8 個站,而正確答案是 7。要嘛先把兩個圖層都重新投影到 UTM,要嘛使用上方空間表格最後一列的 aggregate(..., filter:=distance(transform(...))) 寫法。
3. NULL 資料會直接落入 CASE WHEN 的 ELSE 分支
在我們的班加羅爾資料集中,8,709 棟建物只有 1,073 棟(12.3%)有 building:levels 標籤。其餘 7,636 棟是 NULL。
如果你寫 CASE WHEN to_int("building:levels") <= 2 THEN 'low' WHEN to_int("building:levels") <= 4 THEN 'mid' ELSE 'high' END,兩個 <= 比較在 NULL 資料上都會得到未知,於是該筆資料落入 ELSE。結果你會在沒有任何警告的情況下,把 7,636 棟沒有樓層資料的建物歸類為高樓。資料有缺漏時,一定要把 WHEN "field" IS NULL THEN 'unknown' 放在第一個分支(或省略 ELSE,讓不符合的資料維持 NULL)。
4. 「Only update selected features」會讓欄位其餘部分維持 NULL
只要地圖畫布上選取了任何一個圖徵,Field Calculator 就會自動勾選 Only update N selected feature(s) 。
我在班加羅爾選取了 39 條 primary 道路,然後把 CASE WHEN "highway" IN ('primary', 'secondary') THEN 'arterial' ELSE 'local' END 寫入新欄位 road_rank,QGIS 對這 39 筆寫入 'arterial',其他 815 條道路(包括運算式明確列出的全部 28 條 secondary 道路)都維持 NULL。

5. 雙引號與單引號(為什麼 "building" = "yes" 傳回 NULL)
在 QGIS 運算式中,雙引號 " " 代表欄位名稱,單引號 ' ' 代表文字值。
如果你輸入 "building" = "yes",QGIS 會找名為 building 的欄位,並拿它和另一個名為 yes 的欄位比較。因為沒有名為 yes 的欄位,運算式會得到 NULL(底層的 QgsExpression 解析器會回報 Field 'yes' not found)。同樣地,如果欄位名稱含有冒號,例如 OpenStreetMap 的 building:levels,少了雙引號就會失敗,顯示 syntax error, unexpected Unknown_CHARACTER。在 Fields and Values 清單中按兩下欄位名稱,每次都會插入正確的引號。
跳過語法:用 AI 代理執行同樣的計算
手寫 $area 很快。但要寫出包含兩個 transform()、一個 @parent 幾何參照和距離篩選條件的巢狀 aggregate(),大家最後往往會跑去 Stack Exchange 求救。
我們開發的 AI Agent 是嵌入 QGIS 的對話面板,所以這一節談的是我們自己的工具。因為它在你開啟的 QGIS 專案中運作,會先檢查你的圖層名稱、欄位型別、CRS 和唯一值,再替你執行 Field Calculator 或 Processing 工具。
2026 年 11 月 7 日,我把測試計畫中三個多步驟計算交給 AI Agent(v1.9.4,Medium effort,Balanced permissions),每個對話一句話,使用完全相同的五個 EPSG:4326 班加羅爾圖層。
| 任務 | 實際送出的提示詞 | 代理耗時 | 與我們獨立檢查的比對結果 |
|---|---|---|---|
| A. 鄰近計數 | "Add a field called bus_stops_300m to the buildings layer with the number of bus stops within 300 metres of each building." | 39 秒 | 通過。建立了整數欄位,8,709 棟建物全部填值,與我們在 EPSG:32643 中以建物輪廓到站點計算的數量比對,0 筆不符(範圍 0 到 8)。 |
| B. 分級與樣式 | "Class the buildings into low (1 or 2 levels), mid (3 or 4) and high (5 or more) from the building:levels field, store the class in a new field called height_class, and style the buildings by that class." | 18 秒 | 通過。563 棟 low、442 棟 mid、68 棟 high(1,073 棟全部符合我們的規則)。7,636 筆沒有樓層數的資料維持 NULL,並以第四個灰色 "Unknown levels" 類別呈現。 |
| C. 各行政區學校數與建物面積 | "For each ward, add the number of schools and the total building area in hectares." | 37 秒 | 通過(方法不同)。school_count 在 10/10 個行政區相符(總計 35)。building_ha 在 10/10 個行政區與裁切後的建物面積相符(總計 148.25 公頃)。 |
在任務 A 中,代理沒有掉進 300 度的 overlay_nearest 陷阱。它的工具紀錄顯示,它檢查了兩個圖層、確認 CRS、以公制單位從建物輪廓計算(不是用形心,用形心的話會有 667 棟建物的答案不同),並在回答前核對最小值與最大值。

在任務 B 中,它先檢查 building:levels 的唯一值,發現 8,709 棟建物中有 7,636 棟沒有樓層數,於是讓這些資料在 height_class 中維持 NULL,而不是落入 high,並在地圖上套用 4 個類別的分類樣式。

看渲染出來的地圖,就能明白為什麼在 OpenStreetMap 資料上檢查 NULL 很重要:灰色建物就是那 87.7% 沒有記錄 building:levels 標籤的建物。

在任務 C 中,代理的 building_ha 數字與手冊中每個行政區公頃數那一列略有不同:New Thippasandra 為 20.151 ha,而不是 20.292 ha(-0.69%),Jeevan Bhimanagar 為 -0.14%,Indiranagar 為 -0.06%。我查了原因,發現代理其實用了比我的 intersects() 篩選更嚴格的幾何方法:它先在行政區邊界裁切建物多邊形再加總面積,所以跨界的建物不會在兩個行政區重複計算,它也在回覆中說明了這點。它確實讓行政區圖層停留在編輯模式且有未提交的編輯,並在回答中告訴我編輯尚未儲存。

以下是提交那些編輯後的行政區圖層屬性表:

三個任務是很小的樣本(n = 3),而且我給的提示詞很清楚,寫明了欄位和分級界限,所以請把這當成示範,而不是基準測試。像 $area 或 concat() 這種簡單公式,用 Field Calculator 對話框比打一則對話訊息還快。代理真正有價值的地方,是需要跨圖層彙總、CRS 轉換或多步驟 Processing 流程,或你原本得寫 PyQGIS 腳本 的時候。你也可以在我們的 QGIS AI 總覽 比較其他助理工具。
我們的量測方式。 所有測試於 2026 年 11 月 7 日在 macOS 上的 QGIS 3.44.15-Solothurn 中進行,使用班加羅爾 Indiranagar 的 OpenStreetMap 資料(邊界框 12.968, 77.634, 12.986, 77.656,ODbL),專案 CRS 為 EPSG:4326。手冊中的每個運算式都在相同的圖徵 ID 上,以獨立的 Python 或 QgsDistanceArea 計算驗證。面積與長度誤差是依 fid 取前 200 棟建物和 200 條道路,對照使用 WGS 84 橢球體(EPSG:7030)的 QgsDistanceArea 量測。AI Agent 1.9.4 以 Medium effort 和 Balanced permissions 測試,每個任務都在新的對話中進行。YouTube 問題統計來自一個 25,276 則留言的語料庫,從中篩出 59 部影片底下的 70 則求助留言。
常見問題
為什麼我在 QGIS 中的 $area 計算錯誤或傳回 0?
先檢查你是不是輸入了 area($geometry) 而不是 $area。在以度儲存的圖層上(EPSG:4326),area($geometry) 傳回平方度(一棟房子約 0.0000003),在小數欄位中會四捨五入成 0.0。請使用 $area,並在 Project > Properties > General > Measurements 將專案橢球體設為 WGS 84,或在運算式中用 area(transform($geometry, 'EPSG:4326', 'EPSG:32643')) 搭配你當地的 UTM 分區重新投影幾何。避免使用 EPSG:3857(Web Mercator),在我們的測試中,即使在北緯 13° 它也讓建物面積膨脹了 +5.95%。
如何在 QGIS 欄位計算機中寫 IF 或 CASE 條件式?
兩種結果時,使用 if(condition, value_if_true, value_if_false),例如 if($area < 100, 'small', 'large')。三個以上的類別,使用 CASE WHEN ... THEN ... ELSE ... END:
CASE WHEN to_int("building:levels") IS NULL THEN 'unknown' WHEN to_int("building:levels") <= 2 THEN 'low' WHEN to_int("building:levels") <= 4 THEN 'mid' ELSE 'high' END
把 IS NULL 檢查放在第一個。否則每一筆空值都會落入 ELSE。
為什麼欄位計算機在全部或大部分資料列傳回 NULL?
四個常見原因:
- 地圖上選取了圖徵,所以 Only update N selected feature(s) 被勾選,所有未選取的資料列都維持
NULL。 - 你用
||串接文字(例如"addr:housenumber" || ' ' || "addr:street"),只要有一個NULL輸入,整個結果就變成NULL。請改用concat()。 - 你在文字值外面加了雙引號(
"building" = "yes"),這會讓 QGIS 去找名為yes的欄位。文字值請用單引號("building" = 'yes')。 - 你在多邊形或線圖層上使用
$x或$y。$x只適用於點;多邊形請用x(centroid($geometry))。
如何在 QGIS 欄位計算機中計算以公頃為單位的面積?
將 Output field type 設為 Decimal number (real),Precision 設為 2 或 3,然後輸入 $area / 10000(前提是專案面積單位為平方公尺,且已在 Project > Properties > General 設定專案橢球體)。若要讓儲存的值本身四捨五入到小數點後 3 位,使用 round($area / 10000, 3)。
如何在欄位計算機中只更新選取的圖徵?
先在地圖畫布或屬性表中選取圖徵,再開啟 Field Calculator(Ctrl+I)。左上角的 Only update N selected feature(s) 勾選框會自動勾選。選擇 Update existing field,從下拉選單挑選欄位,輸入運算式後按 OK。
中計算欄位,先開啟圖層的屬性表,點選 Field Calculator(欄位計算機)圖示(

