Mais

Como remover mensagens de “ERROR 1” de um script QGIS autônomo?


Estou executando um script autônomo para QGIS que cria uma grade de alta resolução e arquivos de forma de clipes nela. Funciona perfeitamente se a largura e altura da célula tiverem valores altos (no meu caso,> 200m para ambos). Qualquer coisa abaixo disso e de repente recebo o seguinte erro:

ERRO 1: tentativa de escrever geometria não poligonal (PONTO) no arquivo de forma do tipo POLÍGONO.

Eu li este post com um problema semelhante, e como mencionei na resposta, os resultados que obtenho estão corretos, então não estou preocupado com isso.

Existe um método para remover a exibição desta (s) mensagem (ns) de erro? Parece incrivelmente bagunçado:

Também incluí um snippet simplificado de código que uso:

def run (): Cellsize = 10 layerPath = "path  to  shapefile" extend = QgsVectorLayer (layerPath, ", 'ogr') .extent () centerx = (extend.xMinimum () + extend.xMaximum ()) / 2 centery = (extend.yMinimum () + extend.yMaximum ()) / 2 largura = extend.xMaximum () - extend.xMinimum () height = extend.yMaximum () - extend.yMinimum () outputs_0 = general.runalg (" qgis: creategrid ", Cellsize, Cellsize, width, height, centerx, centery, 1, 'EPSG: 7405', None) outputs_1 = general.runalg (" qgis: clip ", outputs_0 ['SAVENAME']," path  to  shapefile "," criar  caminho  para  resultado ") try: run () exceto Exceção: passar

Encontrei uma solução neste post em que só precisei adicionar o seguinte código ao script:

de osgeo import gdal gdal.PushErrorHandler ('CPLQuietErrorHandler')

Depois de adicionar o acima e remover otentardeclaração, o script de trabalho ignora o ERROR 1 mensagens:

from osgeo import gdal gdal.PushErrorHandler ('CPLQuietErrorHandler') def run (): Cellsize = 10 layerPath = "path  to  shapefile" extend = QgsVectorLayer (layerPath, ", 'ogr') .extent () centerx = (extension. xMinimum () + extend.xMaximum ()) / 2 centery = (extend.yMinimum () + extend.yMaximum ()) / 2 largura = extend.xMaximum () - extend.xMinimum () height = extend.yMaximum () - extension.yMinimum () outputs_0 = general.runalg ("qgis: creategrid", Cellsize, Cellsize, largura, altura, centerx, centery, 1, 'EPSG: 7405', None) outputs_1 = general.runalg ("qgis: clip" , outputs_0 ['SAVENAME'], "caminho  para  shapefile", "criar  caminho  para  resultado") run ()


Assista o vídeo: GIS Troubleshooting 01 - QGIS Cannot Find Python S (Outubro 2021).