Tengo un python script que se ejecuta en QGIS y que me gustaría ejecutar sin abrir QGIS. El script es el siguiente:
QGIS_Zonal_Stats_osGeo.py
import sys
from qgis.core import *
QgsApplication.setPrefixPath("C:/OSGeo4W64/apps/qgis", True)
app = QgsApplication([], True)
QgsApplication.initQgis()
sys.path.append("C:/OSGeo4W64/apps/qgis/python/plugins")
from processing.core.Processing import Processing
Processing.initialize()
import processing
from qgis.analysis import QgsZonalStatistics
import datetime
today = datetime.date.today()
one_day = datetime.timedelta(days=1)
yesterday = today - one_day
yesterday_date = yesterday.strftime('"%Y-%m-%d"').lstrip("0").replace(" 0", " ")
yesterday_date_name = yesterday.strftime("%B_%d_%Y").lstrip("0").replace(" 0", " ")
rasterFilePath = 'C:/Users/bboyko/Desktop/precipitation_download/Daily_Rainfall/' + str(yesterday_date_name) + '.tif'
polygonLayer = QgsVectorLayer('C:/Users/bboyko/Desktop/precipitation_download/candidate_singlepart.shp',
'candidate_singlepart', "ogr")
rasterLayer = QgsRasterLayer(rasterFilePath, str(yesterday_date_name))
zoneStat = QgsZonalStatistics (polygonLayer, rasterLayer, 'rain_', 1, QgsZonalStatistics.Mean)
zoneStat.calculateStatistics(None)
Y este es el archivo .bat que estoy usando:
Lanzar.bat
SET QGIS=C:\OSGeo4W64\apps\qgis
SET PATH=C:\OSGeo4W64\bin;C:\OSGeo4W64\apps\qgis\bin;%PATH%
SET PYTHONHOME=C:\OSGeo4W64\apps\Python37
SET PYTHONPATH=C:\OSGeo4W64\apps\qgis\python;%PYTHONPATH%
python C:\Users\bboyko\Desktop\precipitation_download\QGIS_Zonal_Stats_Three_osGeo.py
pause
Cuando ejecuto el archivo por lotes, este es el mensaje que recibo en el símbolo del sistema:
C:\Users\bboyko\Desktop\precipitation_download>python C:\Users\bboyko\Desktop\precipitation_download\QGIS_Zonal_Stats_Three_osGeo.py
File "C:\OSGeo4W64\apps\Python37\lib\site.py", line 177
file=sys.stderr)
^
SyntaxError: invalid syntax
El error proviene de mi python script o de mi archivo .bat, o de alguna otra cuestión que no he considerado.