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:

#PluginMục đíchAgent hỗ trợ?
1DB ManagerQuản lý database (PostGIS, SpatiaLite, …)⚠️ Qua SQL tool
2Geometry CheckerKiểm tra lỗi geometry⚠️ Qua Python
3Georeferencer GDALGán CRS cho raster⚠️ Qua Python
4GPS ToolsImport/Export GPX⚠️ Qua Python
5GRASSTích hợp GRASS GIS (400+ modules)⚠️ Qua Python
6MetaSearchTìm metadata catalog (CSW)⚠️ Qua Python
7Offline EditingCho phép chỉnh sửa offline❌ TODO
8ProcessingFramework xử lý dữ liệu⚠️ Qua Python
9Topology CheckerKiể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

PluginMục đích
QuickOSMTải dữ liệu OpenStreetMap
OpenLayers PluginBasemap từ Google, Bing, OSM
qgis2webXuất bản đồ ra web (OpenLayers, Leaflet)
Time ManagerAnimate dữ liệu theo thời gian
Profile ToolVẽ profile (cao độ)
MMQGISTools tiện ích
GdalToolsWrapper 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ỗiNguyên nhânCách xử lý
”Plugin not found”Plugin chưa càiCài qua Plugin Manager
”Plugin incompatible”Plugin không tương thích với QGIS versionTìm version khác hoặc update QGIS
”Missing dependency”Plugin cần Python package khácTODO: Hỗ trợ auto-install?
”GRASS module not found”GRASS chưa càiCài GRASS riêng
”SAGA not available”SAGA chưa càiCài SAGA qua OSGeo4W (Windows) hoặc apt (Linux)

Liên kết