Calculate Field: tạo biến thuộc tính từ dữ liệu hiện có là Bài 30 của chuyên đề ArcGIS Pro trong phân tích không gian BĐS. Dùng Calculate Field để tạo/cập nhật biến BĐS từ dữ liệu hiện có bằng Python, Arcade hoặc SQL tùy ngữ cảnh; kiểm kiểu field, Null, selection/filter và lưu biểu thức để tái lập.
Biên soạn: ThS. Nguyễn Mạnh Hùng
GV. Khoa QLĐĐ&BĐS – ĐH Nông Lâm TP.HCM
Email: nguyenmanhhung@hcmuaf.edu.vn
Cập nhật 02/10/2026: Nội dung thao tác được đối chiếu với tài liệu chính thức ArcGIS Pro 3.6 của Esri. Tên nút, tab, pane hoặc công cụ có thể khác nhẹ theo bản vá, ngôn ngữ giao diện và giấy phép.
Lưu ý: trong GIS BĐS, một lớp hiển thị đúng chưa đủ để kết luận dữ liệu đúng. Luôn kiểm source, spatial reference, đơn vị, selection/filter, trạng thái chỉnh sửa và đầu ra trước khi đo, tính toán hoặc chồng lớp.
Mục tiêu học tập
- Hiểu đúng khái niệm ArcGIS Pro của bài và ranh giới của công cụ.
- Biết dữ liệu đầu vào, metadata và điều kiện phải kiểm trước khi thao tác.
- Thực hiện workflow có thể lặp lại và giải thích được.
- Nhận diện lỗi thường gặp trước khi chúng lan sang phân tích BĐS.
- Lưu project, output và nhật ký xử lý đủ để người khác kiểm chứng.
Vị trí trong lộ trình 96 bài
Bài thuộc Chương 4 – Biên tập và quản lý dữ liệu. Bài 25–30 chuyển từ chuẩn hóa hệ tọa độ sang tạo/chỉnh geometry và thuộc tính: Create Features, Snapping, Modify Features, Edit Vertices, Calculate Geometry Attributes và Calculate Field. Mục tiêu là sửa dữ liệu có kiểm soát, không biến thao tác chỉnh sửa thành thay đổi thiếu dấu vết.
1. Calculate Field cập nhật hàng loạt
Esri mô tả công cụ tính giá trị field bằng expression cho feature class, feature layer, table hoặc raster phù hợp.
Đây là thao tác dữ liệu thật.
Liên hệ BĐS: hãy nói rõ đối tượng đang xử lý là thửa đất, công trình, điểm khảo sát, đường, tiện ích, vùng nghiên cứu hay bảng thuộc tính. Một công cụ giống nhau nhưng hậu quả nghiệp vụ khác nhau theo loại dữ liệu và nguồn.
2. Tool có thể sửa field hiện có
Tài liệu Esri cảnh báo Calculate Field modifies input.
Không thử expression trực tiếp trên master không backup.
Kiểm dữ liệu trước thao tác: mở Source Properties/Attribute Table, kiểm số feature/row, field quan trọng, spatial reference, selection/filter và đường dẫn dữ liệu. Không chạy công cụ khi chưa biết mình đang sửa lớp nào.
3. Có thể tạo field mới ngay trong tool
Nếu field chưa tồn tại, có thể chỉ định tên và Field Type.
Vẫn nên thiết kế schema trước.
Kiểm kết quả: sau thao tác phải so trước–sau bằng ít nhất một chỉ số định lượng như số feature, extent, diện tích, tọa độ, số Null hoặc số bản ghi được cập nhật. Ảnh chụp bản đồ chỉ là một lớp bằng chứng.
4. Expression types đa dạng
ArcGIS Pro hỗ trợ Python, Arcade, SQL và VBScript (deprecated) ở Calculate Field tùy workspace/ngữ cảnh.
Chọn loại dễ tái lập và phù hợp.
Tái lập: ghi công cụ, tham số, version dữ liệu, output path và lý do quyết định. Nếu người khác không thể mô tả lại thao tác từ hồ sơ, workflow chưa đủ tốt để bàn giao.
5. Python phù hợp logic xử lý dữ liệu
Ví dụ đơn giá, phân nhóm, xử lý chuỗi và code block.
Ghi expression/code block trong nhật ký.
Liên hệ BĐS: hãy nói rõ đối tượng đang xử lý là thửa đất, công trình, điểm khảo sát, đường, tiện ích, vùng nghiên cứu hay bảng thuộc tính. Một công cụ giống nhau nhưng hậu quả nghiệp vụ khác nhau theo loại dữ liệu và nguồn.
6. Arcade hữu ích trong hệ sinh thái ArcGIS
Field Calculation Arcade profile cho phép tính biểu thức theo context.
Không mặc định giống Python syntax.
Kiểm dữ liệu trước thao tác: mở Source Properties/Attribute Table, kiểm số feature/row, field quan trọng, spatial reference, selection/filter và đường dẫn dữ liệu. Không chạy công cụ khi chưa biết mình đang sửa lớp nào.
7. SQL có thể phù hợp datastore
Một số tính toán trên enterprise/data source có thể dùng SQL expression.
Cú pháp phụ thuộc database.
Kiểm kết quả: sau thao tác phải so trước–sau bằng ít nhất một chỉ số định lượng như số feature, extent, diện tích, tọa độ, số Null hoặc số bản ghi được cập nhật. Ảnh chụp bản đồ chỉ là một lớp bằng chứng.
8. Selection/filter được tôn trọng
Field calculation có thể chỉ áp selected/highlighted/filtered records tùy cách chạy.
Kiểm scope trước.
Tái lập: ghi công cụ, tham số, version dữ liệu, output path và lý do quyết định. Nếu người khác không thể mô tả lại thao tác từ hồ sơ, workflow chưa đủ tốt để bàn giao.
9. Null cần xử lý chủ động
Phép toán với Null có thể cho Null hoặc lỗi logic tùy expression.
Không thay Null bằng 0 vô thức.
Liên hệ BĐS: hãy nói rõ đối tượng đang xử lý là thửa đất, công trình, điểm khảo sát, đường, tiện ích, vùng nghiên cứu hay bảng thuộc tính. Một công cụ giống nhau nhưng hậu quả nghiệp vụ khác nhau theo loại dữ liệu và nguồn.
10. Kiểu field quyết định kết quả
Ghi số thực vào integer sẽ mất phần thập phân/cast; text length có thể giới hạn.
Schema trước expression.
Kiểm dữ liệu trước thao tác: mở Source Properties/Attribute Table, kiểm số feature/row, field quan trọng, spatial reference, selection/filter và đường dẫn dữ liệu. Không chạy công cụ khi chưa biết mình đang sửa lớp nào.
11. Đơn vị phải rõ
`gia_m2 = gia_trieu / dien_tich_m2` chỉ có ý nghĩa khi nguồn cùng đơn vị và denominator hợp lệ.
Kiểm chia cho 0.
Kiểm kết quả: sau thao tác phải so trước–sau bằng ít nhất một chỉ số định lượng như số feature, extent, diện tích, tọa độ, số Null hoặc số bản ghi được cập nhật. Ảnh chụp bản đồ chỉ là một lớp bằng chứng.
12. Phân loại điều kiện
Code block/Python function có thể tạo nhóm diện tích, khoảng cách hoặc trạng thái.
Ngưỡng phải có lý do nghiệp vụ.
Tái lập: ghi công cụ, tham số, version dữ liệu, output path và lý do quyết định. Nếu người khác không thể mô tả lại thao tác từ hồ sơ, workflow chưa đủ tốt để bàn giao.
13. Chuẩn hóa text
Có thể trim/upper/lower/replace nhưng cần giữ raw field nếu thay đổi khó hoàn tác.
Không phá mã gốc.
Liên hệ BĐS: hãy nói rõ đối tượng đang xử lý là thửa đất, công trình, điểm khảo sát, đường, tiện ích, vùng nghiên cứu hay bảng thuộc tính. Một công cụ giống nhau nhưng hậu quả nghiệp vụ khác nhau theo loại dữ liệu và nguồn.
14. Date calculation
Có thể tạo năm/tháng hoặc khoảng thời gian từ Date fields.
Không xử lý date như chuỗi nếu đã có kiểu Date.
Kiểm dữ liệu trước thao tác: mở Source Properties/Attribute Table, kiểm số feature/row, field quan trọng, spatial reference, selection/filter và đường dẫn dữ liệu. Không chạy công cụ khi chưa biết mình đang sửa lớp nào.
15. Calculate Field không thay Join
Nếu cần lấy giá trị từ bảng khác, Join/Join Field có thể cần trước.
Bài 31.
Kiểm kết quả: sau thao tác phải so trước–sau bằng ít nhất một chỉ số định lượng như số feature, extent, diện tích, tọa độ, số Null hoặc số bản ghi được cập nhật. Ảnh chụp bản đồ chỉ là một lớp bằng chứng.
16. Calculate Geometry khác Calculate Field
Geometry Attributes có property/method chuyên cho geometry; Calculate Field dùng expression chung và có thể truy geometry trong một số profile.
Chọn tool rõ mục tiêu.
Tái lập: ghi công cụ, tham số, version dữ liệu, output path và lý do quyết định. Nếu người khác không thể mô tả lại thao tác từ hồ sơ, workflow chưa đủ tốt để bàn giao.
17. Lưu expression và test trên subset/bản sao
Tính 10 records thử rồi kiểm trước khi chạy toàn bộ dataset.
Đặc biệt khi overwrite field.
Liên hệ BĐS: hãy nói rõ đối tượng đang xử lý là thửa đất, công trình, điểm khảo sát, đường, tiện ích, vùng nghiên cứu hay bảng thuộc tính. Một công cụ giống nhau nhưng hậu quả nghiệp vụ khác nhau theo loại dữ liệu và nguồn.
18. Kết luận
Calculate Field là công cụ biến đổi thuộc tính mạnh nhưng dễ gây thay đổi hàng loạt không hoàn tác nếu workflow yếu.
Expression phải có version và QA.
Kiểm dữ liệu trước thao tác: mở Source Properties/Attribute Table, kiểm số feature/row, field quan trọng, spatial reference, selection/filter và đường dẫn dữ liệu. Không chạy công cụ khi chưa biết mình đang sửa lớp nào.
Thao tác/công cụ trọng tâm
Attribute Table → Calculate Field toolbar hoặc Geoprocessing → Calculate Field; kiểm Field Type, Expression Type, selection/filter và backup.
Trong thực hành, ưu tiên bản sao hoặc dữ liệu lab trước khi sửa master. Nếu công cụ có khả năng cập nhật input trực tiếp, cần biết selection/filter hiện tại, có backup và phương án kiểm tra sau khi chạy.
Tình huống thực hành BĐS
Nhóm có `gia_trieu`, `dien_tich_m2`, `kc_metro_m`. Họ tạo `gia_m2`, `nhom_kc_metro` và `nam_ghi_nhan` bằng Python expressions, xử lý Null/0 rõ và lưu toàn bộ biểu thức trong file hướng dẫn.
Yêu cầu không chỉ là có output. Sinh viên phải giải thích được: nguồn dữ liệu, assumption, tham số, phần nào đã thay đổi, phần nào không thay đổi, rủi ro còn lại và bằng chứng nào cho thấy output đủ điều kiện dùng cho bước tiếp theo.
Ma trận quyết định nhanh
| Tình huống | Cách xử lý/công cụ | Mục tiêu | Điểm phải kiểm |
|---|---|---|---|
| Python | Logic/Code Block | Data transformation | Phổ biến |
| Arcade | ArcGIS profile | Portable expressions | Syntax khác |
| SQL | Datastore calculation | Database-side | Phụ thuộc DB |
| Selection/filter | Scope | Subset update | Kiểm |
| New field | Schema+calc | Derived variable | Type/unit |
Quy trình thực hành 14 bước
- Xác định feature class/table sẽ chỉnh.
- Kiểm workspace và quyền edit.
- Kiểm layer editable/selectable/snapping.
- Ghi số feature và các field quan trọng.
- Tạo bản sao hoặc checkpoint.
- Thiết lập template/snapping/topology nếu cần.
- Thực hiện editing/calculation trên subset thử.
- Kiểm geometry/attributes sau subset.
- Mở rộng cho toàn bộ phạm vi cần xử lý.
- Kiểm selection/filter trước mọi update hàng loạt.
- So số feature, area/length/Null trước–sau.
- Save hoặc Discard Edits có chủ đích.
- Cập nhật edit/calculation log.
- Mở lại project để kiểm không broken và dữ liệu đúng.
Bài thực hành
Tạo ba biến dẫn xuất BĐS bằng Calculate Field, trong đó có một biến xử lý Null và một biến phân nhóm có lý do.
Sản phẩm sinh viên phải nộp
- Expressions
- Before–after table
- Field schema
- Selection QA
- Calculation log
Những lỗi thường gặp
- Tính trực tiếp master
- Quên selection/filter
- Chia cho 0
- Null=0 vô thức
- Sai field type
- Không ghi unit
- Không lưu expression
- Dùng Calculate Field thay join
Lỗi 1 – Tính trực tiếp master: sinh viên phải tạo tình huống minh họa hoặc tìm một case trong dữ liệu lab, ghi dấu hiệu nhận biết, hậu quả và cách sửa. Sau sửa phải có bảng/ảnh before–after hoặc thông số kiểm chứng.
Lỗi 2 – Quên selection/filter: sinh viên phải tạo tình huống minh họa hoặc tìm một case trong dữ liệu lab, ghi dấu hiệu nhận biết, hậu quả và cách sửa. Sau sửa phải có bảng/ảnh before–after hoặc thông số kiểm chứng.
Lỗi 3 – Chia cho 0: sinh viên phải tạo tình huống minh họa hoặc tìm một case trong dữ liệu lab, ghi dấu hiệu nhận biết, hậu quả và cách sửa. Sau sửa phải có bảng/ảnh before–after hoặc thông số kiểm chứng.
Lỗi 4 – Null=0 vô thức: sinh viên phải tạo tình huống minh họa hoặc tìm một case trong dữ liệu lab, ghi dấu hiệu nhận biết, hậu quả và cách sửa. Sau sửa phải có bảng/ảnh before–after hoặc thông số kiểm chứng.
Lỗi 5 – Sai field type: sinh viên phải tạo tình huống minh họa hoặc tìm một case trong dữ liệu lab, ghi dấu hiệu nhận biết, hậu quả và cách sửa. Sau sửa phải có bảng/ảnh before–after hoặc thông số kiểm chứng.
Lỗi 6 – Không ghi unit: sinh viên phải tạo tình huống minh họa hoặc tìm một case trong dữ liệu lab, ghi dấu hiệu nhận biết, hậu quả và cách sửa. Sau sửa phải có bảng/ảnh before–after hoặc thông số kiểm chứng.
Phản biện chéo
Nhóm phản biện chọn ngẫu nhiên một feature hoặc record vừa sửa, lần ngược về trạng thái trước và kiểm selection, snapping/topology, attribute changes, IDs và geometry. Mọi thay đổi không giải thích được phải được xem là lỗi workflow.
Checklist QA cuối bài
- Đúng project/workspace/dataset.
- Source path và version đã ghi.
- Spatial reference/units đã kiểm.
- Selection/filter đã kiểm hoặc clear khi cần.
- Không sửa raw/master ngoài chủ đích.
- Công cụ/tham số được lưu trong History hoặc nhật ký.
- Số row/feature trước–sau hợp lý.
- Geometry/attributes của sample cases đã kiểm.
- Tên field/output có unit/ý nghĩa rõ.
- Không nhầm hiển thị đúng với dữ liệu đúng.
- Có limitation nếu nguồn/độ chính xác chưa xác minh.
- Có thể mở lại project và tái hiện kết quả.
Ghi nhớ trong 30 giây
- Calculate Field sửa input
- Expression type phải phù hợp
- Selection/filter ảnh hưởng scope
- Null và type cần kiểm
- Lưu expression để tái lập
Nguồn tham khảo
Nguồn kỹ thuật chính là tài liệu chính thức Esri ArcGIS Pro 3.6. Ví dụ BĐS được dùng để chuyển khái niệm phần mềm thành tình huống thực hành; khi xử lý dữ liệu địa chính/pháp lý chính thức phải tuân thủ nguồn và quy trình nghiệp vụ tương ứng.
- https://pro.arcgis.com/en/pro-app/3.6/tool-reference/data-management/calculate-field.htm
- https://pro.arcgis.com/en/pro-app/3.6/help/data/tables/fundamentals-of-field-calculations.htm
Bài tiếp theo
Join Field và Add Join: ghép bảng thuộc tính theo khóa thế nào cho an toàn?.
Bài luyện tập mở rộng
Luyện tập 1
Python expression đơn giá.
Yêu cầu nộp: công cụ/tham số, ảnh hoặc bảng kiểm trước–sau, ít nhất một lỗi cố ý và cách phát hiện/sửa. Không chỉ nộp screenshot cuối.
Luyện tập 2
Null handling.
Yêu cầu nộp: công cụ/tham số, ảnh hoặc bảng kiểm trước–sau, ít nhất một lỗi cố ý và cách phát hiện/sửa. Không chỉ nộp screenshot cuối.
Luyện tập 3
Date-derived field.
Yêu cầu nộp: công cụ/tham số, ảnh hoặc bảng kiểm trước–sau, ít nhất một lỗi cố ý và cách phát hiện/sửa. Không chỉ nộp screenshot cuối.
Luyện tập 4
Selection trap test.
Yêu cầu nộp: công cụ/tham số, ảnh hoặc bảng kiểm trước–sau, ít nhất một lỗi cố ý và cách phát hiện/sửa. Không chỉ nộp screenshot cuối.
Phòng thí nghiệm kiểm lỗi
Tạo một bản sao dữ liệu chứa ba lỗi: snapping tắt làm hở cạnh, selection còn sót khi Calculate Field/Geometry, và một feature bị Move/Reshape nhầm. Nhóm phải dùng edit history, attributes và geometry QA để phát hiện, sau đó phục hồi hoặc sửa có reason code.
Biên bản QA mẫu
| Mục | Trước | Sau | Kết luận |
|---|---|---|---|
| Dataset | Tên/version | Đã sửa | Đúng |
| Selection | Trước | Sau | Đã kiểm |
| Features/rows | N trước | N sau | Hợp lý |
| Geometry/attributes | Giá trị trước | Giá trị sau | Có reason |
| Save/undo | Trạng thái | Kết quả | Đã kiểm |
| Reopen | Chưa | Đã mở lại | Không broken |
Câu hỏi tự luận cuối bài
- Giải thích vì sao “Calculate Field: tạo biến thuộc tính từ dữ liệu hiện có” có thể làm sai kết quả BĐS dù bản đồ vẫn nhìn hợp lý.
- Nêu một tình huống mà thao tác kỹ thuật đúng nhưng lựa chọn dữ liệu hoặc tham số sai.
- Thiết kế một bước kiểm chứng độc lập trước khi bàn giao output.
- Nêu bốn thông tin bắt buộc phải ghi trong nhật ký xử lý của bài.