2 votos

Uso de un archivo .bat para ejecutar un programa python de QGIS

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.

2voto

Andy Brandi Puntos 650

Cambia tu Lanzar.bat por algo así:

@ECHO OFF 

set OSGEO4W_ROOT=C:\OSGeo4W64

@echo off
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
call "%OSGEO4W_ROOT%\bin\py3_env.bat"

@echo off
path %OSGEO4W_ROOT%\apps\qgis\bin;%PATH%
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis
set GDAL_FILENAME_IS_UTF8=YES

set VSI_CACHE=TRUE
set VSI_CACHE_SIZE=1000000
set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins
set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis\python;%PYTHONPATH%

python C:\Users\bboyko\Desktop\precipitation_download\QGIS_Zonal_Stats_Three_osGeo.py
pause

Debería funcionar

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X