Tương tác với Plugins

Agent giúp bạn tương tác với core plugins và quản lý external plugins của QGIS

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

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)

Liên kết