Estoy tratando de actualizar el Tutorial sobre el uso de funciones personalizadas a QGis 3 y Python 3 y me he encontrado con un problema interesante. Con el siguiente código puedo crear una expresión GetUtmZone()='33N'
y funciona en la vista previa de la salida, funciona para hacer zoom a las características pero si intento seleccionar las características dice que no se encuentran.
Actualización
No parece haber ningún problema con el código de la función, ya que funciona bien como etiqueta y punta de mapa.
import math
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom', usesGeometry=True)
def GetUtmZone(feature, parent):
centroid = feature.geometry()
longitude = centroid.asPoint().x()
latitude = centroid.asPoint().y()
zone_number = math.floor(((longitude + 180) / 6) % 60) + 1
if latitude >= 0:
zone_letter = 'N'
else:
zone_letter = 'S'
return '%d%s' % (int(zone_number), zone_letter)
Los zoom to están claramente funcionando pero cada selección devuelve el aviso: No se han encontrado características coincidentes.
versiones, etc:
Versión de QGIS 3.4.4-Madeira
Revisión del código QGIS f6ddc62
Compilado contra Qt 5.9.5
Ejecución contra Qt 5.9.5
Compilado contra GDAL/OGR 2.2.3
1. Presentarse a GDAL/OGR 2.2.3
Compilado contra GEOS 3.6.2-CAPI-1.10.2
Ejecución contra GEOS 3.6.2-CAPI-1.10.2 4d2925d6
Versión del cliente PostgreSQL 10.6 (Ubuntu 10.6-0ubuntu0.18.04.1)
Versión SpatiaLite 4.3.0a
Versión QWT 6.1.3
Versión de QScintilla2 2.10.2 Versión PROJ.4 493
Linux astun-desktop 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux