I'm not able to run the following PyQGIS script in Windows (it worked perfectly in OS X):
import sys
import os
from qgis.core import *
import qgis.utils
from qgis.analysis import *
app = QgsApplication([],True,"")
# supply path to where is your qgis installed
QgsApplication.setPrefixPath(os.getenv("QGISPATH"), True)
# load providers
QgsApplication.initQgis()
sys.path.append(os.getenv("QGISPATH")+"\\apps\\qgis\\python\\plugins")
import processing
# Load layers with precincts and zip codes
print os.path.exists("..\\external\\precincts\\USA_precincts.shp")
layer1 = QgsVectorLayer("..\\external\\precincts\\USA_precincts.shp", "precincts", "ogr")
if layer1.isValid():
print "Loaded layer 1"
else:
print "Layer 1 failed to load!"
layer2 = QgsVectorLayer("..\\external\\zipcodes\\Bnd_2008_q3_region.shp", "zipcodes", "ogr")
if layer2.isValid():
print "Loaded layer 2"
else:
print "Layer 2 failed to load!"
# Spatial intersection between layers, save it as a new shapefile
overlayAnalyzer = QgsOverlayAnalyzer()
overlayAnalyzer.intersection(layer1, layer2, "..\\temp\\precinctsZipcodes.shp")
QgsApplication.exitQgis()
The initial lines run fine, but then the code is not able to load the shapefiles. The output from the line print os.path.exists("..\\external\\precincts\\USA_precincts.shp")
is True
, but then it prints Layer 1 failed to load!
when checking whether the layer was loaded correctly.
Does anyone know why it does not run in Windows? I was even able to run it in the python console (only running the lines between layer1 = QgsVectorLayer ...
and the second to last line).
Note: I originally had slashes instead of backslashes. I got two answers telling me that the slashes were the problem, but it wasn't: I changed them and the result is the same.
import os
print os.getenv("QGISPATH")
That could be the reason.