Mehr

Wie entferne ich „ERROR 1“-Meldungen aus einem eigenständigen QGIS-Skript?

Wie entferne ich „ERROR 1“-Meldungen aus einem eigenständigen QGIS-Skript?


Ich führe ein eigenständiges Skript für QGIS aus, das ein hochauflösendes Raster erstellt und Shapefiles darauf schneidet. Funktioniert perfekt, wenn die Zellenbreite und -höhe hohe Werte haben (in meinem Fall > 200 m für beide). Alles darunter und ich bekomme plötzlich die folgende Fehlermeldung:

FEHLER 1: Es wurde versucht, Geometrie ohne Polygon (POINT) in Shapefile vom Typ POLYGON zu schreiben.

Ich habe diesen Beitrag mit einem ähnlichen Problem gelesen, und wie in der Antwort erwähnt, sind die Ergebnisse, die ich erhalte, korrekt, sodass ich mir darüber keine Sorgen mache.

Gibt es eine Methode, um diese Fehlermeldung(en) zu entfernen? Es sieht unglaublich chaotisch aus:

Ich habe auch ein abgespecktes Code-Snippet eingefügt, das ich verwende:

def run(): Cellsize = 10 layerPath = "path	oshapefile" extension = QgsVectorLayer( layerPath,", 'ogr' ).extent() centerx = (extent.xMinimum() + extension.xMaximum()) / 2 centery = (Extent.yMinimum() + Extent.yMaximum()) / 2 width = Extent.xMaximum() - Extent.xMinimum() height = Extent.yMaximum() - Extent.yMinimum() output_0=general.runalg(" qgis:creategrid", Cellsize, Cellsize, width, height, centerx, centery, 1, 'EPSG:7405', None) output_1=general.runalg("qgis:clip", output_0['SAVENAME'], "path	o shapefile", "createpathfor
esult") try: run() außer Ausnahme: pass

Habe eine Lösung aus diesem Beitrag gefunden, bei der ich nur den folgenden Code zum Skript hinzufügen musste:

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

Nach dem Hinzufügen der oben genannten und Entfernen derVersuchen-Anweisung ignoriert das Arbeitsskript die FEHLER 1 Mitteilungen:

from osgeo import gdal gdal.PushErrorHandler('CPLQuietErrorHandler') def run(): Cellsize = 10 layerPath = "path	oshapefile" extension = QgsVectorLayer( layerPath,", 'ogr' ).extent() centerx = (extent. xMinimum() + Ausdehnung.xMaximum()) / 2 centery = (Ausdehnung.yMinimum() + Ausdehnung.yMaximum()) / 2 Breite = Ausdehnung.xMaximum() - Ausdehnung.xMinimum() Höhe = Ausdehnung.yMaximum() - extension.yMinimum() output_0=general.runalg("qgis:creategrid", Cellsize, Cellsize, width, height, centerx, centery, 1, 'EPSG:7405', None) output_1=general.runalg("qgis:clip" , Ausgaben_0['SAVENAME'], "path	oshapefile", "createpathfor
esult") run()

Schau das Video: QGIS Python PyQGIS - Create a Custom Processing Script for QGIS in the Processing Toolbox