20 votos

¿Cómo definir la capa de ' s CRS y evitar el diálogo CRS en PyQGIS?

Existe un Shapefile, que quiero añadir.

En el momento en que mi código es:

self.iface.addVectorLayer(self.shpFilePath, "Track", "ogr")

Funciona bien, pero quiero definir la crs en el código. Es posible? He encontrado algunas preguntas similares como este: Seleccionar mediante Programación un CRS en QGIS 2.4 usando Python Pero no consigo que funcione de todos modos.

7voto

Elliott Maynard Puntos 11

Basado en este post del blog y la respuesta a ¿Cómo puedo especificar el SRC de una capa raster en pyqgis?, usted puede lograr lo que quieres de esta manera:

settings = QSettings()
# Take the "CRS for new layers" config, overwrite it while loading layers and...
oldProjValue = settings.value( "/Projections/defaultBehaviour", "prompt", type=str )
settings.setValue( "/Projections/defaultBehaviour", "useProject" )

# YOUR CODE TO LOAD THE LAYER GOES HERE

# ... then set the "CRS for new layers" back
settings.setValue( "/Projections/defaultBehaviour", oldProjValue )

5voto

Mue Puntos 2469

El siguiente código debe permitir que usted agregue una capa de vector sin la CRS ventana emergente desde la que aparecen (al menos no aparece para mí):

from qgis import *
from qgis.utils import *

#replace "shapefile_path" with your layer's path; replace "Layer_name" with whatever name you want to give the layer in the TOC
qgis.utils.iface.addVectorLayer("shapefile_path", "Layer_name", "ogr")

#Use loaded layer as active layer to set the CRS
myLayer = qgis.utils.iface.activeLayer()
myLayer.setCrs(QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.EpsgCrsId))

#Sets canvas CRS
my_crs = core.QgsCoordinateReferenceSystem(4326, core.QgsCoordinateReferenceSystem.EpsgCrsId)
iface.mapCanvas().mapRenderer().setDestinationCrs(my_crs)

Simplemente cambiar el 4326 CRS valor en ambos casos a la Autoridad de IDENTIFICACIÓN de su elección, como se muestra en la imagen:

CRS options

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