6.0 KiB
Executable File
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ẽ:
- Load dữ liệu Sentinel-2 (bands: B02, B03, B04, B08)
- Tính toán các spectral indices (NDVI, NDWI, NDBI)
- Dùng model để predict land classification
- 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/:
-
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
-
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
- Mở QGIS
- Layer → Add Layer → Add Raster Layer
- Chọn file
ndvi_*.tifhoặcclassification_*.tif - 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