Phân tích dữ liệu

Agent giúp bạn phân tích không gian, thống kê và xử lý dữ liệu GIS bằng SQL và Python

T
Tác giả TLGeo
Thời gian đọc 8 min read
Đăng tải 2025-01-01

Phân tích dữ liệu (Analyze data)

Đây là nhóm tính năng mạnh nhất của QGIS: từ truy vấn SQL đơn giản đến các phép phân tích địa lý phức tạp (buffer, intersect, statistics). TLGeo Agent giúp bạn thực hiện các phép phân tích này bằng ngôn ngữ tự nhiên, không cần biết syntax SQL hay QGIS expression.

Tính năng QGIS gốc: https://docs.qgis.org/3.44/en/docs/about/features.html#analyze-data

Truy vấn SQL trực tiếp (Built-in)

Agent có sẵn tool query_gis_data cho phép chạy SQL trực tiếp trên layer (xem thêm Bài 10: Python Console).

Thống kê tổng quan

Tính tổng diện tích theo từng huyện trong layer xã

Kết quả trả về dạng bảng:

ten_huyentong_dien_tich_ha
Bắc Bình152,340
Hàm Thuận Bắc87,650

Đếm và nhóm

Đếm số lô rừng theo từng loại rừng và sắp xếp theo số lượng giảm dần

Lọc có điều kiện

Tìm 5 huyện có diện tích rừng lớn nhất ở tỉnh Lâm Đồng

Tính toán nâng cao

Tính mật độ dân số (dân số / diện tích) cho từng xã
Tính tỷ lệ che phủ rừng = (diện tích rừng / diện tích tự nhiên) cho mỗi huyện

Phân tích Vector (Geoprocessing)

Các phép phân tích không gian phổ biến — Agent sẽ tự động chọn thuật toán phù hợp trong QGIS Processing framework.

Buffer (Vùng đệm)

Tạo buffer 100m quanh tất cả con đường trong layer giao thông
Buffer 5km quanh tất cả trường học trong layer trường_học

Intersect (Giao)

Tìm vùng giao giữa layer khu bảo tồn và layer rừng phòng hộ
Intersect 2 layer để xem thửa đất nào nằm trong vùng quy hoạch

Union (Hợp)

Union tất cả polygon của layer khoanh vùng cháy thành 1 layer duy nhất

Difference (Trừ)

Tính vùng đất chưa được canh tác = layer đất_đai_trồng_trọt - layer đất_đai_đã_sử_dụng

Clip (Cắt theo ranh giới)

Clip layer sông_ngòi theo ranh giới tỉnh Lâm Đồng

Dissolve (Gộp theo thuộc tính)

Gộp tất cả thửa đất theo chủ sử dụng để tính tổng diện tích mỗi chủ

Khoảng cách

Tính khoảng cách từ mỗi thửa đất đến con đường gần nhất

Network Analysis (Phân tích mạng lưới)

Tìm đường đi ngắn nhất giữa 2 điểm A và B trên mạng lưới đường
Tính service area (vùng phục vụ) trong vòng 10 phút đi bộ từ trường học

Phân tích Raster

DEM và địa hình

Tính độ dốc (slope) từ layer DEM
Tính hướng dốc (aspect) từ layer DEM
Tạo bóng địa hình (hillshade) từ DEM với góc sáng 45 độ

Phân loại lại (Reclassify)

Phân loại lại DEM thành 5 cấp độ cao: 0-100m, 100-500m, 500-1000m, 1000-2000m, >2000m

Zonal Statistics (Thống kê theo vùng)

Tính giá trị DEM trung bình cho từng huyện
Tổng lượng mưa trung bình theo từng xã

Raster Calculator

Tính chỉ số NDVI = (band_near_infrared - band_red) / (band_near_infrared + band_red)

Phân tích Raster/Vector kết hợp

Spatial Join (Kết nối không gian)

Thêm thông tin huyện vào tất cả các điểm trường học dựa trên vị trí

Overlay (Chồng lớp)

Tìm các thửa đất nằm trong vùng có nguy cơ lũ lụt

Case thực tế Việt Nam: Phân tích rừng

Đây là một trong những use case phổ biến nhất. Agent đặc biệt hữu ích cho việc thống kê rừng theo nhiều cấp hành chính.

Thống kê diện tích rừng theo tỉnh

Tính tổng diện tích rừng cho từng tỉnh, sắp xếp giảm dần

Thống kê theo 3 cấp: Tỉnh > Huyện > Xã

Cho tôi bảng tổng hợp diện tích rừng theo tỉnh, trong mỗi tỉnh chi tiết theo huyện, trong mỗi huyện chi tiết theo xã

Tính tỷ lệ che phủ rừng

Tính tỷ lệ che phủ rừng = diện tích rừng / tổng diện tích tự nhiên cho từng huyện

Phát hiện thay đổi

So sánh diện tích rừng năm 2020 và 2024, cho biết huyện nào tăng/giảm nhiều nhất

Phân loại lô rừng theo nhiều tiêu chí

Phân loại lô rừng theo: trạng_thái (rừng tự nhiên/trồng) + độ dốc (dốc/ít dốc) + mục đích (phòng hộ/sản xuất)

Case thực tế: Quản lý đất đai

Kiểm tra thửa đất trong vùng quy hoạch

Liệt kê tất cả thửa đất thuộc vùng quy hoạch khu công nghiệp

Tính diện tích đất theo mục đích sử dụng

Thống kê diện tích đất theo cột mục_đích_sử_dụng cho từng huyện

Phát hiện thửa đất bị xâm phạm

Tìm các thửa đất đất_lâm_nghiệp nhưng đang được sử dụng cho mục đích khác

Processing Framework (QGIS)

Agent có thể truy cập hơn 400 thuật toán trong QGIS Processing framework (GDAL, SAGA, GRASS, OTB, R…).

Liệt kê thuật toán có sẵn

Liệt kê các thuật toán SAGA có sẵn
Tìm thuật toán liên quan đến watershed

Chạy thuật toán

Chạy thuật toán SAGA: Watershed analysis từ DEM
Chạy GDAL: chuyển đổi raster sang định dạng COG (Cloud Optimized GeoTIFF)

Background processing

Tất cả các thuật toán đều chạy nền (background), bạn có thể tiếp tục làm việc khác trong khi chờ.

Graphical Modeller (Workflow tự động)

Modeller cho phép kết hợp nhiều bước thành một workflow hoàn chỉnh, có thể chạy lại nhiều lần.

Tạo model

Tạo workflow: Import shapefile → Reproject sang EPSG:4326 → Buffer 100m → Clip theo ranh giới tỉnh → Lưu ra GeoPackage

Chạy lại model với input khác

Chạy lại workflow trên với file input là /data/ranh_gioi_moi.shp

Xuất kết quả phân tích

Bảng kết quả

Agent trả về kết quả thống kê dạng bảng trực tiếp trong chat. Bạn có thể:

Xuất bảng kết quả ra CSV
Lưu bảng kết quả vào shapefile mới

Biểu đồ

Tạo biểu đồ cột cho top 10 huyện có diện tích rừng lớn nhất

Báo cáo PDF

Tạo báo cáo PDF với bản đồ, biểu đồ và bảng số liệu cho tỉnh Lâm Đồng

Caching và hiệu năng

Với dữ liệu lớn

Khi phân tích layer có hàng triệu feature, Agent sẽ:

  • Tự động tối ưu query (dùng index nếu có)
  • Chạy trong background để không block UI
  • Báo cáo tiến độ trong chat
Tính toán có thể mất vài phút với dữ liệu lớn, bạn có thể tiếp tục làm việc khác

Lỗi thường gặp & cách xử lý

LỗiNguyên nhânCách xử lý
”Không tìm thấy cột X”Sai tên cộtHỏi “Liệt kê các cột của layer X"
"Query trả về kết quả trống”Điều kiện quá chặtThử bỏ bớt điều kiện, kiểm tra dữ liệu
”Thuật toán SAGA không có”Chưa cài plugin SAGACài SAGA trong Plugin Manager (xem Bài 9)
“CRS không khớp”Layer có CRS khác nhauHỏi “Reproject layer X sang EPSG:4326” trước
”Timeout khi phân tích”Dữ liệu quá lớnLọc trước, hoặc dùng background processing
”Kết quả không chính xác”Đơn vị diện tích sai (m² vs ha)Hỏi “Đơn vị diện tích của cột X là gì?”

Mẹo nâng cao

1. Kết hợp SQL với Python

Nếu truy vấn SQL phức tạp, Agent sẽ tự động chuyển sang dùng Python script. Xem Bài 10: Python Console.

2. Dùng Spatial Index để tăng tốc

Tạo spatial index cho layer X để tăng tốc các truy vấn không gian

3. Lưu kết quả thường dùng

Khi thống kê một tỉnh nhiều lần, bạn có thể lưu kết quả thành “virtual layer” để dùng lại nhanh.

4. Kiểm tra chất lượng dữ liệu trước khi phân tích

Kiểm tra geometry có lỗi không trong layer lô rừng

→ Agent sẽ dùng Geometry Checker plugin.

Liên kết