Tương tác với Plugins
QGIS có hệ thống plugin mạnh mẽ, bao gồm 9 core plugins (đi kèm mặc định) và hàng trăm external plugins từ cộng đồng. TLGeo Agent giúp bạn tương tác với các plugin này bằng ngôn ngữ tự nhiên.
Tính năng QGIS gốc: https://docs.qgis.org/3.44/en/docs/about/features.html#extend-qgis-functionality-through-plugins
⚠️ TODO quan trọng: Hiện tại Agent chưa có tool riêng cho việc quản lý plugin. Agent sẽ tự động dùng
execute_qgis_python_scriptđể thực hiện. Bạn nên xác nhận với team dev về việc bổ sung các tool chuyên dụng.
9 Core Plugins của QGIS
QGIS đi kèm 9 plugin mặc định:
| # | Plugin | Mục đích | Agent hỗ trợ? |
|---|---|---|---|
| 1 | DB Manager | Quản lý database (PostGIS, SpatiaLite, …) | ⚠️ Qua SQL tool |
| 2 | Geometry Checker | Kiểm tra lỗi geometry | ⚠️ Qua Python |
| 3 | Georeferencer GDAL | Gán CRS cho raster | ⚠️ Qua Python |
| 4 | GPS Tools | Import/Export GPX | ⚠️ Qua Python |
| 5 | GRASS | Tích hợp GRASS GIS (400+ modules) | ⚠️ Qua Python |
| 6 | MetaSearch | Tìm metadata catalog (CSW) | ⚠️ Qua Python |
| 7 | Offline Editing | Cho phép chỉnh sửa offline | ❌ TODO |
| 8 | Processing | Framework xử lý dữ liệu | ⚠️ Qua Python |
| 9 | Topology Checker | Kiểm tra lỗi topology | ⚠️ Qua Python |
DB Manager
DB Manager giúp kết nối và quản lý database như PostGIS, SpatiaLite, MS SQL Spatial, Oracle Spatial.
Mở DB Manager
Mở DB Manager
Kết nối database
Kết nối PostGIS với host=localhost port=5432 dbname=tl_geo user=admin
Liệt kê bảng
Liệt kê tất cả bảng trong schema "public"
Import shapefile vào PostGIS
Import shapefile /data/lo_rung.shp vào PostGIS table "lo_rung"
Code được sinh:
from qgis.core import QgsVectorLayer, QgsDataProvider
# Mở shapefile
layer = QgsVectorLayer('/data/lo_rung.shp', 'lo_rung', 'ogr')
# Import vào PostGIS (cần kết nối DB Manager trước)
# QGIS UI thường dùng để import, code phức tạp
💡 Mẹo: Để import vào PostGIS dễ dàng, nên dùng DB Manager UI trong QGIS.
Geometry Checker
Plugin này giúp phát hiện và sửa các lỗi geometry như self-intersection, duplicate vertices, …
Kiểm tra lỗi
Kiểm tra geometry có lỗi trong layer "lo_rung"
Code được sinh:
from qgis.core import QgsVectorLayer
import processing
layer = QgsProject.instance().mapLayersByName('lo_rung')[0]
result = processing.run('qgis:checkvalidity', {
'INPUT_LAYER': layer,
'METHOD': 0, # 0=All
'VALID_OUTPUT': 'memory:',
'INVALID_OUTPUT': 'memory:',
'ERROR_OUTPUT': 'memory:'
})
print(f"Invalid: {result['INVALID_COUNT']}")
Tự động sửa lỗi
Tự động sửa các lỗi geometry trong layer X bằng "Fix geometries"
Georeferencer GDAL
Gán CRS cho ảnh raster (ví dụ: scan bản đồ cũ).
Mở Georeferencer
Mở Georeferencer và load ảnh /data/old_map.jpg
Thêm điểm GCP
Thêm 4 điểm GCP tại 4 góc ảnh
Chạy georeference
Chạy georeference với Polynomial bậc 1, lưu ra /data/old_map_georef.tif
⚠️ TODO: Có nên phát triển tool riêng cho Georeferencer qua Agent? Nó khá phức tạp.
GPS Tools
Import/Export dữ liệu GPS ở định dạng GPX.
Import GPX
Import file GPX /data/track_2024.gpx vào dự án
Code:
from qgis.core import QgsVectorLayer, QgsProject
layer = QgsVectorLayer('/data/track_2024.gpx?type=track', 'track_2024', 'ogr')
if layer.isValid():
QgsProject.instance().addMapLayer(layer)
Export GPX
Export layer "track_hiking" ra file GPX tại /data/output/
GRASS GIS
GRASS có hơn 400 modules xử lý không gian. Agent có thể gọi các module này.
Mở GRASS location
Mở GRASS location tại /grass_data/asia_permanent
Liệt kê vector map
Liệt kê tất cả vector map trong GRASS location
Chạy module GRASS
Chạy module GRASS r.watershed với input DEM
Code:
import processing
result = processing.run('grass:r.watershed', {
'elevation': '/grass_data/asia/DEM',
'threshold': 1000,
'output': 'memory:'
})
💡 GRASS modules rất mạnh cho phân tích raster nâng cao.
MetaSearch Catalogue Client
Tìm kiếm metadata từ các catalog chuẩn CSW (OGC Catalog Service for the Web).
Kết nối CSW server
Kết nối CSW server https://demo.terrestris.de/osm/csw
Tìm dataset
Tìm dataset có từ khóa "elevation" Vietnam
Kết nối WMS từ metadata
Kết nối WMS từ metadata tìm được
Offline Editing
Cho phép chỉnh sửa dữ liệu khi offline, sync lại khi online.
⚠️ TODO: Plugin này chưa được hỗ trợ qua Agent. TODO: Xác nhận có cần phát triển không.
Processing Framework
Đây là plugin quan trọng nhất, cung cấp hơn 400 thuật toán từ GDAL, SAGA, GRASS, OTB, R…
Liệt kê thuật toá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
Code:
import processing
result = processing.run('saga:watershedbasin', {
'ELEVATION': dem_layer,
'THRESHOLD': 1000,
'OUTPUT': 'memory:'
})
Tạo workflow (Modeller)
Tạo workflow: import → reproject → buffer → clip → save
Topology Checker
Kiểm tra các lỗi topology trong vector (overlaps, gaps, dangles…).
Kiểm tra topology
Kiểm tra lỗi topology trong layer "ranh_gioi"
Cấu hình rules
Thêm rule: không được có overlap giữa các polygon
Thêm rule: không được có gap (khoảng trống) giữa các polygon
External Python Plugins
Ngoài core plugins, QGIS có hàng trăm plugins từ cộng đồng.
Cài đặt plugin từ repository
Cài plugin "QuickOSM" từ QGIS Plugin Repository
Code:
from qgis import utils
from qgis.PyQt.QtCore import QStandardPaths
import os
# Tìm plugin path
plugin_path = os.path.join(QStandardPaths.writableLocation(QStandardPaths.AppDataLocation), 'python/plugins')
# Download và cài plugin
# (QGIS thường dùng Plugin Installer UI cho việc này)
⚠️ TODO: Thường nên dùng QGIS Plugin Manager UI để cài plugin.
Một số plugin phổ biến
| Plugin | Mục đích |
|---|---|
| QuickOSM | Tải dữ liệu OpenStreetMap |
| OpenLayers Plugin | Basemap từ Google, Bing, OSM |
| qgis2web | Xuất bản đồ ra web (OpenLayers, Leaflet) |
| Time Manager | Animate dữ liệu theo thời gian |
| Profile Tool | Vẽ profile (cao độ) |
| MMQGIS | Tools tiện ích |
| GdalTools | Wrapper cho GDAL utilities |
Quản lý plugins
Liệt kê plugin đã cài
Liệt kê tất cả plugin đã cài
Code:
from qgis import utils
for name, plugin in utils.plugins.items():
print(f"{name}: {plugin}")
Bật/tắt plugin
Bật plugin "QuickOSM"
Tắt plugin "GdalTools"
Cập nhật plugin
Cập nhật tất cả plugin lên phiên bản mới nhất
Custom plugins của TLGeo
TODO: Liệt kê các plugin riêng của TLGeo và cách Agent tương tác với chúng.
Ví dụ: TLGeoCollect Sync — sync dữ liệu từ Geocollect mobile.
Đồng bộ dữ liệu từ Geocollect mobile
Tích hợp với GRASS
GRASS là một GIS mạnh riêng, tích hợp sâu với QGIS.
Workflow mẫu với GRASS
Workflow:
1. Import DEM vào GRASS location
2. Chạy r.watershed để phân vùng
3. Chạy r.slope.aspect để tính độ dốc
4. Export kết quả về QGIS layer
TODO cần bạn xác nhận
- Có nên phát triển tool riêng cho quản lý plugin (install, enable, update)?
- Agent có cần hỗ trợ GRASS nâng cao không?
- Có custom plugins nào của TLGeo cần tích hợp?
- Có cần doc riêng cho từng plugin quan trọng không?
Lỗi thường gặp & cách xử lý
| Lỗi | Nguyên nhân | Cách xử lý |
|---|---|---|
| ”Plugin not found” | Plugin chưa cài | Cài qua Plugin Manager |
| ”Plugin incompatible” | Plugin không tương thích với QGIS version | Tìm version khác hoặc update QGIS |
| ”Missing dependency” | Plugin cần Python package khác | TODO: Hỗ trợ auto-install? |
| ”GRASS module not found” | GRASS chưa cài | Cài GRASS riêng |
| ”SAGA not available” | SAGA chưa cài | Cài SAGA qua OSGeo4W (Windows) hoặc apt (Linux) |