Objetos de la Clase QgsCoordinateReferenceSystem en PyQGIS

En un artículo pasado ya había considerado la Clase QgsCoordinateReferenceSystem para reproyectar un shapefile usando PyQGIS. Sin embargo, se habían definido “manualmente” los CRS de partida y destino para ser usados directamente con el constructor de la clase; algo relativamente sencillo de hacer. Por otra parte, si se pretende, por ejemplo, crear una capa de centroides a partir de una rejilla (grid), entonces tengo que saber como “convertir” un objeto de la clase QgsVectorLayer en QgsCoordinateReferenceSystem y poder acceder a los métodos de ésta última para indagar cuál es el sistema de proyección de la capa grid que le voy a transferir a la capa de centroides. Aquí me ha vuelto a ser de utilidad la función get_patt del artículo anterior para tener una pista de cómo hacerlo (el PyQGIS Cook Book hace énfasis en los aspectos complejos y deja de lado los “evidentes”).

Para los detalles voy a considerar la grilla del artículo pasado y que se presenta en la siguiente imagen:

pyqgis

Se crea una referencia al objeto (grid) con el método ‘activeLayer’ de iface:

>>>grid =iface.activeLayer()
>>>grid
<qgis.core.QgsVectorLayer object at 0x207CE4B0>

Después de estar “filtrando” un tiempo por la “pista” de los posibles métodos encontré el candidato: ‘crs’.

>>>L=dir(QgsVectorLayer)
>>>get_patt('crs',L)
['crs']
>>>grid.crs()
<qgis.core.QgsCoordinateReferenceSystem object at 0x205B3DF8>

es decir, un objeto de la clase QgsCoordinateReferenceSystem. Como la proyección de la capa se le pasa a través del código EPSG en una URI (Uniform Resource Identifier) como esta:

Point?crs=epsg:32612&field=id:integer""&field=area:double&index=yes"

se tiene que averiguar el método de QgsCoordinateReferenceSystem que lo hace posible. Después de unos pocos intentos se tiene lo siguiente:

>>grid.crs().postgisSrid()
32612L

Por tanto, la URI quedó finalmente expresada de esta manera:

URI = "Point?crs=epsg:"+str(grid.crs().postgisSrid())+"&field=id:integer""&index=yes"

Ahora sólo resta aplicarlo al script para obtener los centroides; tema del próximo artículo.

Esta entrada fue publicada en Código Python, PyQGIS, SIG, Software Libre. Guarda el enlace permanente.

Una respuesta a Objetos de la Clase QgsCoordinateReferenceSystem en PyQGIS

  1. Amigo José, como se haría si quiero conocer cual es el CRS del proyecto, osea, abro un proyecto nuevo, el toma el CRS por defecto, como haria para crear un nuevo layout y que tome ese CRS?

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s