Files
remote-sensing/NDVI_PREDICTION_GUIDE.md
T

6.0 KiB
Executable File

Hướng Dẫn Sử Dụng Chức Năng Predict NDVI

Tổng Quan

Chức năng mới cho phép dự đoán phân loại đất (land classification) kết hợp với việc xuất ra raster NDVI cho cùng một khu vực.

Cách Sử Dụng

1. Truy cập Prediction Interface

  • Mở trình duyệt: http://localhost:8000/prediction
  • Hoặc từ trang chủ, click vào Prediction

2. Chọn Model

  • Chọn model đã được train từ dropdown "Select Model"
  • Model phải tồn tại trong thư mục model_train/

3. Vẽ Khu Vực (Bbox)

  • Sử dụng công cụ vẽ hình chữ nhật trên bản đồ
  • Khu vực này sẽ được dùng để:
    • Load dữ liệu vệ tinh
    • Tính NDVI
    • Predict land classification

4. Cấu Hình Thời Gian & Dữ Liệu

  • Từ ngày / Đến ngày: Khoảng thời gian lấy ảnh vệ tinh
  • Max Scenes: Số lượng ảnh tối đa (khuyến nghị: 12)
  • Cloud Cover: % mây tối đa (khuyến nghị: 30%)
  • Resolution: Độ phân giải (10m hoặc 20m)

5. Bật Export NDVI

  • Check vào "🌿 Export NDVI Raster"
  • Khi bật, hệ thống sẽ:
    • Tính NDVI từ Sentinel-2 (NIR - Red) / (NIR + Red)
    • Xuất ra file ndvi_YYYYMMDD_HHMMSS.tif
    • Xuất ra file classification_YYYYMMDD_HHMMSS.tif

6. Chạy Prediction

  • Click "🚀 Start Prediction (với NDVI)"
  • Hệ thống sẽ:
    1. Load dữ liệu Sentinel-2 (bands: B02, B03, B04, B08)
    2. Tính toán các spectral indices (NDVI, NDWI, NDBI)
    3. Dùng model để predict land classification
    4. Xuất kết quả

Kết Quả

Output Files

Sau khi hoàn thành, bạn sẽ nhận được 2 file trong thư mục predictions/:

  1. ndvi_YYYYMMDD_HHMMSS.tif

    • GeoTIFF chứa giá trị NDVI
    • Giá trị: -1 đến +1
    • CRS: EPSG:4326 (WGS84)
    • Có thể mở bằng QGIS, ArcGIS, hoặc Python
  2. classification_YYYYMMDD_HHMMSS.tif

    • GeoTIFF chứa kết quả phân loại đất
    • Giá trị: class labels (ví dụ: 0, 1, 2, 3...)
    • CRS: EPSG:4326 (WGS84)

Thống Kê Hiển Thị

Sau khi predict xong, giao diện sẽ hiển thị:

  • NDVI Statistics:
    • Mean: Giá trị NDVI trung bình
    • Min: Giá trị NDVI nhỏ nhất
    • Max: Giá trị NDVI lớn nhất
    • Std: Độ lệch chuẩn
  • Class Distribution: Số lượng pixel cho mỗi class
  • N Scenes: Số ảnh vệ tinh đã sử dụng

API Endpoint

POST /api/predict/with-ndvi

Request Body:

{
  "model_filename": "model_xgboost_20231221_120000.joblib",
  "min_lon": 105.6,
  "min_lat": 9.3,
  "max_lon": 106.2,
  "max_lat": 9.8,
  "start_date": "2023-03-01",
  "end_date": "2023-05-31",
  "max_scenes": 12,
  "cloud_cover": 30,
  "resolution": 20,
  "export_ndvi": true,
  "export_classification": true
}

Response:

{
  "success": true,
  "message": "Prediction with NDVI completed",
  "output_files": [
    {"type": "ndvi", "path": "predictions/ndvi_20231221_120000.tif"},
    {"type": "classification", "path": "predictions/classification_20231221_120000.tif"}
  ],
  "ndvi_stats": {
    "mean": 0.456,
    "min": -0.123,
    "max": 0.789,
    "std": 0.234
  },
  "class_distribution": {
    "0": 12345,
    "1": 23456,
    "2": 34567
  },
  "n_scenes": 12,
  "resolution": 20,
  "bbox": [105.6, 9.3, 106.2, 9.8]
}

Download Files

Sau khi prediction hoàn thành, có thể download files qua:

  • UI: Click "💾 Download GeoTIFF" trong kết quả
  • API: GET /api/predictions/download/ndvi_YYYYMMDD_HHMMSS.tif
  • API: GET /api/predictions/download/classification_YYYYMMDD_HHMMSS.tif

Sử Dụng Kết Quả với Python

import rasterio
import matplotlib.pyplot as plt
import numpy as np

# Read NDVI raster
with rasterio.open('predictions/ndvi_20231221_120000.tif') as src:
    ndvi = src.read(1)
    
    # Visualize
    plt.figure(figsize=(10, 8))
    plt.imshow(ndvi, cmap='RdYlGn', vmin=-1, vmax=1)
    plt.colorbar(label='NDVI')
    plt.title('NDVI Map')
    plt.show()

# Read classification raster
with rasterio.open('predictions/classification_20231221_120000.tif') as src:
    classification = src.read(1)
    
    # Visualize
    plt.figure(figsize=(10, 8))
    plt.imshow(classification, cmap='tab10')
    plt.colorbar(label='Land Class')
    plt.title('Land Classification')
    plt.show()

Sử Dụng Kết Quả với QGIS

  1. Mở QGIS
  2. Layer → Add Layer → Add Raster Layer
  3. Chọn file ndvi_*.tif hoặc classification_*.tif
  4. Styling:
    • NDVI: Singleband pseudocolor, min=-1, max=1, color ramp=RdYlGn
    • Classification: Paletted/Unique values

Lưu Ý

  • Thời gian xử lý: Tùy thuộc vào kích thước bbox và số scenes (thường 2-5 phút)
  • Bộ nhớ: Khu vực lớn + resolution cao = RAM cao
  • NDVI values:
    • < 0: Nước, đất trống
    • 0 - 0.2: Đất có ít thực vật
    • 0.2 - 0.5: Cây cỏ, cây trồng
    • 0.5: Rừng rậm, thực vật dày đặc

So Sánh với NDVI Time Series

Feature Predict NDVI NDVI Time Series
Mục đích Xuất raster NDVI + land classification Xem xu hướng NDVI theo thời gian
Output GeoTIFF files Chart, CSV
Dùng model Có (predict land class) Không (chỉ tính NDVI)
Visualize Bản đồ raster Biểu đồ đường
Use case Phân tích không gian Phân tích thời gian

Troubleshooting

Q: Lỗi "Model không tồn tại"?

  • Kiểm tra model đã được train và lưu trong model_train/
  • Refresh danh sách model

Q: Kết quả NDVI toàn NaN?

  • Check cloud cover (giảm xuống)
  • Mở rộng time range
  • Kiểm tra bbox có nằm trong phạm vi Sentinel-2 coverage

Q: File GeoTIFF không mở được?

  • Đảm bảo file download hoàn chỉnh
  • Dùng QGIS hoặc rasterio để kiểm tra

Q: Prediction chậm?

  • Giảm resolution (20m thay vì 10m)
  • Giảm max_scenes
  • Thu nhỏ bbox