Files
remote-sensing/md/giai_thich_quy_trinh_phan_loai_dat.md
T

4.9 KiB

🌾 Giải Thích Quy Trình Phân Loại Đất Trồng Cây

File notebook 02.predict_ODC.ipynb sử dụng Machine Learning kết hợp với dữ liệu vệ tinh để phân loại các loại đất/cây trồng. Dưới đây là quy trình chi tiết:


Bước 1: Thu thập dữ liệu vệ tinh (Cell 3-4)

date_range = ('2022-09-01', '2023-10-01')
longtitude_range = (105.86575, 105.94120)
latitude_range = (9.65070, 9.69850)
data = load_data(dc, date_range, longtitude_range, latitude_range)
  • Lấy ảnh Sentinel-2 (ảnh quang học) từ kho dữ liệu trong khoảng thời gian và vị trí cụ thể

Bước 2: Xử lý mây (Cell 5)

result = mask_clean(data)
  • Loại bỏ các pixel bị mây che phủ để đảm bảo dữ liệu chính xác

Bước 3: Tính chỉ số NDVI (Cell 6-10)

ndvi = calculate_indices(result, index='NDVI', satellite_mission='s2')
fill_nan_ndvi = fill_nan(ndvi, time_split)
average_ndvi = fill_nan_ndvi.resample(time='1M').mean()
  • NDVI (Normalized Difference Vegetation Index) = (NIR - Red) / (NIR + Red)
  • Giá trị từ -1 đến 1: cao = thực vật xanh tốt, thấp = đất trống/nước
  • Điền giá trị nan (mây) và tính trung bình theo tháng

Bước 4: Lấy dữ liệu Radar Sentinel-1 (Cell 11)

dsvh, dsvv = load_data_sen1(dc, date_range, coordinates)
average_vv = calculate_average(dsvv, time_pattern='1M')
average_vh = calculate_average(dsvh, time_pattern='1M')
  • VH, VV: Dữ liệu radar (xuyên mây), cho biết cấu trúc bề mặt
  • Giúp phân biệt lúa ngập nước, cây trồng cạn, mặt nước...

Bước 5: Dự đoán bằng Model ML (Cell 12) QUAN TRỌNG NHẤT

loaded_model = joblib.load("model_train/model_odc.joblib")
data_array = predict(loaded_model, data.rio.crs, average_ndvi, average_vh, average_vv)

Model đã được train trước với dữ liệu mẫu (training data) gồm:

  • Đầu vào (Features): NDVI theo tháng + VH + VV (chuỗi thời gian)
  • Đầu ra (Labels): Loại đất đã được gắn nhãn thủ công

Cách model phân loại:

Đặc điểm Loại đất
NDVI cao đều, VV thấp Rừng
NDVI biến đổi theo mùa vụ, VH cao (nước) Lúa
NDVI thấp, VV rất thấp Sông/nước
NDVI trung bình ổn định Cây lâu năm (CLN)

Bước 6: Hiển thị kết quả (Cell 13-15)

colors = ["#abcee9", "#ffef44", "#c4ff9e", "#ffd6a8", "#93ddda", "#1aeef7", "#ffa7f2", "#33ee33"]
labels = ["Lúa tôm", "Lúa", "CHN", "CLN", "TS", "Sông", "Đất xây dựng", "Rừng"]

8 lớp phân loại:

Tên Màu Ý nghĩa
0 Lúa tôm 🔵 Xanh nhạt Luân canh lúa-tôm
1 Lúa 🟡 Vàng Đất trồng lúa
2 CHN 🟢 Xanh lá nhạt Cây hàng năm
3 CLN 🟠 Cam nhạt Cây lâu năm (cây ăn trái)
4 TS 🩵 Xanh ngọc Thủy sản
5 Sông 🔷 Cyan Mặt nước sông
6 Đất XD 💗 Hồng Đất xây dựng
7 Rừng 💚 Xanh đậm Rừng

Bước 7: Lưu kết quả (Cell 16)

region_result.rio.to_raster("KetQuaPhanLoaiDatODC.tif")
  • Xuất file GeoTIFF chứa mã phân loại (0-7) cho từng pixel

📊 Tóm tắt quy trình:

Ảnh vệ tinh (Sentinel-1 + Sentinel-2)
        ↓
Xử lý (loại mây, tính NDVI, VH, VV)
        ↓
Kết hợp features theo thời gian (13 tháng)
        ↓
Model ML (Random Forest/XGBoost) dự đoán
        ↓
Bản đồ phân loại 8 lớp đất
        ↓
File .tif (mỗi pixel = 1 mã loại đất)

📁 Cấu trúc dữ liệu đầu vào cho Model

Features (Đặc trưng):

  • NDVI theo 13 tháng: 13 bands
  • VH (radar) theo 13 tháng: 13 bands
  • VV (radar) theo 13 tháng: 13 bands
  • Tổng cộng: ~39 features cho mỗi pixel

Labels (Nhãn):

  • Được lấy từ shapefile training: train/ST_training data_updated_1130points_new.shp
  • 1130 điểm mẫu đã được gắn nhãn thủ công bởi chuyên gia

🔧 Các thư viện sử dụng

Thư viện Mục đích
datacube Truy vấn dữ liệu vệ tinh
xarray Xử lý dữ liệu đa chiều
rioxarray Đọc/ghi GeoTIFF
joblib Load/save model ML
sklearn / xgboost Training model
matplotlib / hvplot Trực quan hóa

📝 Ghi chú

  • Độ phân giải: 10-20m (tùy cấu hình)
  • Thời gian xử lý: Phụ thuộc vào kích thước vùng và số scenes
  • Yêu cầu: Cần kết nối internet để tải dữ liệu vệ tinh từ Planetary Computer hoặc ODC

Tài liệu được tạo ngày 14/12/2025