Hướng dẫn sử dụng Calculate Field, Spatial Join, Merge và Append trong ArcGIS Pro
Trong quá trình xử lý dữ liệu GIS, bốn công cụ Calculate Field, Spatial Join, Merge và Append được sử dụng rất thường xuyên.
Mỗi công cụ giải quyết một nhóm bài toán khác nhau: Calculate Field dùng để tính toán thuộc tính; Spatial Join dùng để liên kết dữ liệu theo vị trí; Merge dùng để hợp nhất nhiều lớp thành một lớp mới; còn Append dùng để đưa dữ liệu mới vào một lớp đã tồn tại.
1. Calculate Field – Tính toán và cập nhật thuộc tính
1.1. Calculate Field dùng để làm gì?
Calculate Field dùng để tính toán hoặc gán giá trị cho một trường thuộc tính của Feature Class hoặc bảng dữ liệu.
Ví dụ:
- Tính chiều dài tuyến.
- Tính diện tích polygon.
- Ghép nhiều trường thành một trường mới.
- Chuyển chữ thường thành chữ hoa.
- Gán giá trị cố định cho nhiều đối tượng.
- Tạo mã đối tượng tự động.
- Xử lý nội dung chuỗi.
1.2. Cách mở Calculate Field
Hoặc mở bảng thuộc tính, nhấn chuột phải vào tên Field và chọn:
1.3. Các tham số chính
| Tham số | Ý nghĩa |
|---|---|
| Input Table | Feature Class hoặc bảng cần tính toán. |
| Field Name | Trường cần cập nhật giá trị. |
| Expression Type | Ngôn ngữ biểu thức, thường sử dụng Python. |
| Expression | Công thức tính toán. |
| Code Block | Đoạn code Python bổ sung cho biểu thức phức tạp. |
1.4. Ví dụ tính toán
Gán một giá trị cố định:
"Đường giao thông"
Lấy giá trị từ một Field khác:
!tenDoiTuong!
Chuyển thành chữ hoa:
!tenDoiTuong!.upper()
Ghép hai trường:
!maDoiTuong! + " - " + !tenDoiTuong!
Làm tròn số:
round(!chieuDai!, 2)
1.5. Sử dụng ArcPy
arcpy.management.CalculateField(
input_fc,
"ghiChu",
'"Đã kiểm tra"',
"PYTHON3"
)
2. Spatial Join – Liên kết dữ liệu theo vị trí không gian
2.1. Spatial Join là gì?
Spatial Join dùng để chuyển thuộc tính từ một lớp sang một lớp khác dựa trên quan hệ không gian.
Không cần hai lớp có trường ID giống nhau. ArcGIS xác định đối tượng liên quan dựa vào vị trí hình học.
Ví dụ:
- Xác định mỗi điểm công trình nằm trong lô đất nào.
- Chuyển tên phường/xã từ polygon sang các điểm công trình.
- Xác định tuyến đường đi qua khu vực nào.
- Gán mã lưu vực cho hố ga.
- Xác định đối tượng GIS nằm trong phạm vi quy hoạch nào.
2.2. Target Features và Join Features
Đây là phần người mới thường dễ nhầm.
| Thành phần | Ý nghĩa |
|---|---|
| Target Features | Lớp cần giữ lại và nhận thêm thuộc tính. |
| Join Features | Lớp cung cấp thuộc tính. |
Ví dụ:
Polygon lưu vực = Join Features
↓
Kết quả = Hố ga + mã lưu vực
2.3. Match Option
Match Option xác định quan hệ không gian giữa hai lớp.
| Quan hệ | Ý nghĩa |
|---|---|
| INTERSECT | Các đối tượng giao nhau. |
| WITHIN | Đối tượng nằm hoàn toàn bên trong. |
| CONTAINS | Đối tượng chứa đối tượng khác. |
| CLOSEST | Lấy đối tượng gần nhất. |
| WITHIN_A_DISTANCE | Đối tượng nằm trong một khoảng cách xác định. |
2.4. Ví dụ ArcPy
arcpy.analysis.SpatialJoin(
target_features,
join_features,
output_fc,
"JOIN_ONE_TO_ONE",
"KEEP_ALL",
match_option="INTERSECT"
)
3. Merge – Hợp nhất nhiều lớp thành một lớp mới
3.1. Merge dùng để làm gì?
Merge dùng để kết hợp nhiều Feature Class có cùng hoặc tương thích loại hình học thành một Feature Class mới.
Ví dụ có:
Duong_HaiPhong
Duong_QuangNinh
↓
Merge
↓
Duong_MienBac
3.2. Đặc điểm quan trọng
Merge không đưa dữ liệu vào một lớp có sẵn. Nó tạo ra một dataset đầu ra mới.
↓
OUTPUT MỚI
3.3. Field Map
Nếu các lớp có Field khác nhau, ArcGIS cho phép sử dụng Field Map để xác định trường nào sẽ được đưa vào kết quả.
Ví dụ:
| Layer A | Layer B | Output |
|---|---|---|
| TenDuong | RoadName | TenDuong |
| ChieuDai | Length | ChieuDai |
3.4. ArcPy
inputs = [
road_a,
road_b,
road_c
]
arcpy.management.Merge(
inputs,
output_fc
)
4. Append – Bổ sung dữ liệu vào lớp đã tồn tại
4.1. Append là gì?
Append dùng để đưa các đối tượng từ một hoặc nhiều lớp nguồn vào một lớp đích đã tồn tại.
Đây là công cụ rất hữu ích khi làm việc với một Geodatabase có schema chuẩn.
4.2. Ví dụ thực tế
Bạn có GDB chuẩn:
QuyHoach.gdb
└── QuyHoachGiaoThong
└── MangLuoiGiaoThongDuongBo_L
Feature Class này đã có đầy đủ:
- Tên Field chuẩn.
- Alias.
- Field Type.
- Domain.
- Spatial Reference.
Bạn muốn đưa dữ liệu từ Feature Class khác vào nhưng vẫn giữ schema chuẩn của lớp đích.
Trong trường hợp này nên dùng:
↓
Append
↓
Target Feature Class chuẩn
4.3. Schema Type
Hai chế độ thường gặp:
| Chế độ | Ý nghĩa |
|---|---|
TEST |
Schema nguồn phải tương thích với lớp đích. |
NO_TEST |
Cho phép schema khác nhau và có thể sử dụng Field Mapping. |
Trong các công cụ tự động hóa GDB, NO_TEST thường linh hoạt hơn.
4.4. ArcPy
arcpy.management.Append(
input_fc,
target_fc,
"NO_TEST"
)
5. Phân biệt Merge và Append
Merge và Append khá giống nhau về mục đích hợp nhất dữ liệu, nhưng khác nhau ở cách tạo kết quả.
| Merge | Append | |
|---|---|---|
| Lớp đích có trước | Không | Có |
| Tạo Feature Class mới | Có | Không |
| Giữ schema lớp đích | Không áp dụng | Có |
| Phù hợp GDB mẫu chuẩn | Ít hơn | Rất phù hợp |
| Gộp nhiều dữ liệu thành dataset mới | Rất phù hợp | Không phải mục đích chính |
6. Phân biệt cả bốn công cụ
| Công cụ | Câu hỏi cần đặt ra | Kết quả |
|---|---|---|
| Calculate Field | Tôi muốn tính hoặc thay đổi giá trị Field? | Thuộc tính được cập nhật. |
| Spatial Join | Tôi muốn lấy thông tin từ lớp khác dựa vào vị trí? | Lớp mới có thêm thuộc tính không gian. |
| Merge | Tôi muốn gộp nhiều lớp thành một lớp mới? | Feature Class mới. |
| Append | Tôi muốn đưa dữ liệu vào Feature Class đã có? | Dữ liệu được bổ sung vào lớp đích. |
7. Ví dụ quy trình thực tế
Giả sử nhận dữ liệu GIS của nhiều đơn vị tư vấn:
↓
MERGE
↓
Lớp dữ liệu tổng hợp
↓
SPATIAL JOIN
↓
Bổ sung mã khu vực / hành chính / lưu vực
↓
CALCULATE FIELD
↓
Chuẩn hóa mã và thuộc tính
↓
APPEND
↓
GDB chuẩn của dự án
8. Khi lập trình PYT nên sử dụng thế nào?
Bốn công cụ này có thể gọi trực tiếp bằng ArcPy trong file PYT.
import arcpy
# Calculate Field
arcpy.management.CalculateField(
fc,
"ghiChu",
'"Đã xử lý"',
"PYTHON3"
)
# Spatial Join
arcpy.analysis.SpatialJoin(
target_fc,
join_fc,
output_fc
)
# Merge
arcpy.management.Merge(
[fc1, fc2, fc3],
merged_fc
)
# Append
arcpy.management.Append(
source_fc,
target_fc,
"NO_TEST"
)
9. Nguyên tắc lựa chọn công cụ
Cần lấy thuộc tính dựa trên vị trí? → Spatial Join
Cần tạo một lớp mới từ nhiều lớp? → Merge
Cần đưa dữ liệu vào một lớp chuẩn đã có? → Append
10. Kết luận
Calculate Field, Spatial Join, Merge và Append là bốn công cụ nền tảng mà người sử dụng ArcGIS Pro và người bắt đầu lập trình ArcPy/PYT nên nắm chắc.
Hiểu đúng sự khác nhau giữa chúng giúp xây dựng các quy trình xử lý dữ liệu rõ ràng hơn, đặc biệt khi làm việc với File Geodatabase lớn hoặc xây dựng các công cụ kiểm tra và chuẩn hóa dữ liệu tự động.
Spatial Join = LIÊN KẾT THEO VỊ TRÍ
Merge = GỘP THÀNH LỚP MỚI
Append = THÊM VÀO LỚP CÓ SẴN
