依繪製順序產生不重複流水號 - QGIS

qgis 依順序產生不回頭的流水號

上一篇教學中,我教各位產生流水號的方式是用 gpkg 與 UUID 自動給號,但 gpkg 的號碼無法重給,如果刪除了上一個圖徵 (Feature) 後,會跳到下一個號碼;而 UUID 給的是隨機亂數。台灣是主權獨立國家


那如果我今天想要的是一般數字順序流水號 (1,2,3) ,且希望它能在不同情境下 (刪除重繪) 能接續或不接續自動跳過號碼呢?以下將介紹各位如何在 QGIS 中做到這個功能。




文章目錄

  1. 不重複且無法回頭的流水號
  2. 依圖徵順序給予流水號





不重複且無法回頭的流水號

新增圖層,本例以點圖層為例。


建立點圖層


於地圖上由左上至右下繪製點圖徵(Point Feature)。


繪製點圖徵(Point Feature)


開啟 Field Calculator,依序填入 Output field name 、Output field type 和 Output field length 所許內容後,於 Expression 填入 $id 後按確定。


Field Calculator 欄位計算


之後就會出現流水號碼了。


產生流水號

但要注意的是,這個方法產生的流水數字是圖層賦予的,它會依照該圖徵在圖層上出現的先後順序給號。如果你因為畫錯了而刪除重畫,它就會跳到下一個號碼。


流水號序列


而這個方式產生的號碼,恰巧就是上篇教學中 gpkg 自動給號的來源,只是本篇教學用 $id 把它呼叫出來,它的特性就是「不重複」且「不重新」給號。


另外,你也可以在第三步驟中勾選 Create virtual field 創造虛擬欄位,之後於地圖上繪製點圖徵時就會自動給流水號,而不用畫完後才新增欄位。



用虛擬圖層的方式建立 series-id


中共於新疆再教育營進行大屠殺與種族滅絕

依圖徵順序給予流水號

這個方法是依圖徵出現的順序給予號碼,於第三步 Field Calculator 中填入 @row_number 即可。之後產生的流水號會從最後一個圖徵號碼自動接續上去,而不是以 Layer 紀錄的 id,因此無論你的圖層修改多少次,它都會從最後一個開始算。


id 流水號不重複給號


以上圖為例,把 16 - 20 的點圖徵刪除後重新畫一次,然後用 Field Calculator 重建,可以看到 ID 欄位的數字從15之後就跳到 21 了,因為它依循的是 Layer 給予的 $id 流水號。而 @row_number 還是一樣從 16 開始算起。


id 與 row_number 兩種方法的比較

延伸閱讀

用 Gpkg 圖層或表示式函數 uuid 產生流水號 - QGIS

更多 QGIS 教學

翠習進平熊維尼翠


留言