-->

Advertisement

Hướng dẫn Calculate Field, Spatial Join, Merge và Append trong ArcGIS Pro

Hướng dẫn Calculate Field, Spatial Join, Merge và Append trong ArcGIS Pro

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.

Calculate Field Tính / cập nhật thuộc tính Spatial Join Liên kết dữ liệu theo vị trí Merge Ghép nhiều lớp thành lớp mới Append Bổ sung dữ liệu vào lớp có sẵn
Bốn công cụ xử lý dữ liệu thường gặp trong ArcGIS Pro.

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.
OBJECTID Length Length_m 1 125.6 NULL 2 83.4 NULL 3 210.8 NULL Calculate OBJECTID Length Length_m 1 125.6 125.6 2 83.4 83.4 3 210.8 210.8
Calculate Field cập nhật giá trị cho một trường thuộc tính.

1.2. Cách mở Calculate Field

Geoprocessing → Search → 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:

Calculate Field

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"
)
Calculate Field có thể thay đổi dữ liệu trực tiếp. Khi mới học hoặc khi thao tác trên dữ liệu quan trọng, nên sao lưu Geodatabase trước khi chạy.

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.
Khu A Target Features Spatial Join Khu A maKhu = A maKhu = A Kết quả
Các điểm nhận thuộc tính của polygon mà chúng nằm bên trong.

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ụ:

Điểm hố ga = Target Features

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"
)
Spatial Join thường tạo ra một Feature Class mới. Đây là điểm khác với Calculate Field thường cập nhật trực tiếp dữ liệu hiện có.

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_HaNoi
Duong_HaiPhong
Duong_QuangNinh
↓
Merge
↓
Duong_MienBac
Road_A Road_B Road_C Merge Road_All Road_A + Road_B + Road_C
Merge tạo một Feature Class mới chứa dữ liệu từ nhiều lớp đầu vào.

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.

Input A + Input B + Input C

↓

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.

Dữ liệu nguồn 100 đối tượng Feature Class đích 500 đối tượng Append Kết quả: 600 đối tượng Schema của lớp đích được giữ lại
Append bổ sung đối tượng vào Feature Class đích đang tồn tại.

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:

Source Feature Class
↓
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:

Dữ liệu đơn vị A + Dữ liệu đơn vị B + Dữ liệu đơn vị C

↓

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 thay đổi thuộc tính? → Calculate Field

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.

Calculate Field = TÍNH THUỘC TÍNH

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
```