You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将GRASS v.centerline功能添加至QGIS工具箱的GRASS工具集?

解决QGIS中添加GRASS v.centerline至工具箱的问题

方法1:通过GRASS扩展管理器安装启用

  • 确认QGIS中GRASS GIS Integration插件已安装启用:进入插件 > 管理并安装插件,搜索并勾选该插件。
  • 打开GRASS扩展管理器:点击QGIS界面GRASS工具栏的齿轮图标(GRASS Options),切换到Extensions标签页。
  • 在搜索框输入v.centerline,找到对应扩展后点击Install完成安装。
  • 重启QGIS,打开处理工具箱,在GRASS分类下即可找到v.centerline工具。

方法2:手动封装为QGIS处理脚本

如果扩展安装路径走不通,可以把v.centerline封装成自定义脚本:

  • 打开处理工具箱,点击脚本 > 创建新脚本。
  • 复制以下代码(可根据需求调整参数默认值):
from qgis.core import QgsProcessingAlgorithm, QgsProcessingParameterVectorLayer, QgsProcessingParameterVectorDestination
import processing

class GrassVcenterline(QgsProcessingAlgorithm):
    INPUT = 'INPUT'
    OUTPUT = 'OUTPUT'
    THRESHOLD = 'THRESHOLD'

    def initAlgorithm(self, config=None):
        self.addParameter(QgsProcessingParameterVectorLayer(self.INPUT, '输入多边形图层', [QgsProcessing.TypeVectorPolygon]))
        self.addParameter(QgsProcessingParameterVectorDestination(self.OUTPUT, '输出中心线图层'))
        self.addParameter(QgsProcessingParameterNumber(self.THRESHOLD, '简化阈值', defaultValue=0.0))

    def processAlgorithm(self, parameters, context, feedback):
        input_layer = self.parameterAsVectorLayer(parameters, self.INPUT, context)
        output = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
        threshold = self.parameterAsDouble(parameters, self.THRESHOLD, context)
        
        # 调用GRASS原生v.centerline命令
        processing.run("grass7:v.centerline", {
            'input': input_layer,
            'output': output,
            'threshold': threshold,
            'GRASS_REGION_PARAMETER': input_layer.extent(),
            'GRASS_SNAP_TOLERANCE_PARAMETER': -1,
            'GRASS_MIN_AREA_PARAMETER': 0.0001,
            'GRASS_OUTPUT_TYPE_PARAMETER': 0
        }, context=context, feedback=feedback)
        
        return {self.OUTPUT: output}

    def name(self):
        return 'v_centerline'

    def displayName(self):
        return 'GRASS v.centerline'

    def group(self):
        return 'GRASS Custom'

    def groupId(self):
        return 'grass_custom'

    def createInstance(self):
        return GrassVcenterline()
  • 保存脚本到QGIS默认脚本目录(通常为~/.local/share/QGIS/QGIS3/profiles/default/processing/scripts/)。
  • 刷新处理工具箱,在脚本 > GRASS Custom分类下就能找到自定义的v.centerline工具。

注意事项

  • 确保QGIS对应的GRASS版本支持v.centerline扩展,旧版本可能需要升级GRASS集成插件。
  • 离线环境下可手动下载GRASS扩展包(.gpkg格式),在扩展管理器选择Install from file完成安装。

内容的提问来源于stack exchange,提问作者user199837

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:40:40