I'm working on a project using the QGIS Python API. I seem to be having some issues with opening a vector layer from a shapefile in my standalone application. This is the Python script I'm using to test opening the layer:
# Import statements
from qgis.core import *
import os
# Instantiate the QGIS Application
GUIEnabled = True
app = QgsApplication([], GUIEnabled)
# Update prefix path
app.setPrefixPath("C:\OSGeo4W64\apps\qgis", True)
app.initQgis()
# File to be read by the application
vector_source = "absolute_path_to_file"
# Read layer from file
layer = QgsVectorLayer(vector_source, "Vector_Layer", "ogr")
# DEBUG: Test if the file path points to a valid file
print "File Path points to a file: ", os.path.isfile(vector_source)
# DEBUG: Test if the layer initialized correctly
print "Output of layer.isValid(): ", layer.isValid()
layer.isValid() returns false when I run the script. I checked to make sure the file was valid by opening it in the QGIS GUI, which worked. I also checked out the answer to Creating QGIS layers in python console vs stand-alone application, but the answer there is specific to Mac users, and I am running on Windows 8.
Answer
You need to escape your backslashes when you defined your paths for the QGIS application (I tend to use forward slashes).
So you should replace:
app.setPrefixPath("C:\OSGeo4W64\apps\qgis", True)
with:
app.setPrefixPath("C:/OSGeo4W64/apps/qgis", True)
or:
app.setPrefixPath(r"C:\OSGeo4W64\apps\qgis", True)
No comments:
Post a Comment