¡HEMOS TERMINADO UN POCO CANSADOS EL UNO DEL OTRO! SOLO QGIS HA SALIDO GANANDO.
¡Estoy emocionado de anunciar que, junto a mi socio ChatGPT, hemos dado vida a un plugin muy útil – BorderFocus!
#BorderFocus es la solución para esos momentos de frustración cuando te encuentras digitalizando en los límites de tu mapa y deseas una manera de reenfocarte y continuar tu trabajo sin interrupciones. ¡Tu deseo se ha hecho realidad!
La Historia
A los 17 años, digitalizaba catastro rústico francés y cobraba por parcela digitalizada. Mi único objetivo era tener herramientas que me permitieran trabajar más rápido sin perder calidad. Se programaba en MDL para Microstation.
Con 45 tacos, soy un obsesionado con la automatización y la eficiencia.
Entones:
En agosto de este año, en plenas vacaciones, inicié el desarrollo del complemento y, con la ayuda de ChatGPT, lo concluimos el pasado fin de semana. Aunque mis habilidades de programación son limitadas, colaborar con ChatGPT ha sido de gran ayuda para terminar el código.
Ventajas de tener a ChatGPT como socio:
Siempre es educado y paciente, un verdadero caballero. Yo, por otro lado, pierdo la paciencia mucho antes.
Está disponible 24/7, ¡una bendición para mis hábitos de trabajo erráticos!
Su habilidad para escribir código ha mejorado notablemente desde agosto hasta octubre. El chico está progresando significativamente en la materia.
Desafíos de trabajar con una IA:
A veces se rinde muy rápido; en estos momentos, tuve que animarlo y replantear los problemas desde otra perspectiva para ayudarlo.
No puede ejecutar el código y trabaja a ciegas; esto ralentiza el proceso. Es recomendable escribir código que genere informes de errores para facilitar la depuración. Recuerda que no tiene el QGIS para probar.
No siempre me entiende (esto no me sorprende). Transmitir cada detalle y perspectiva de mis ideas es un desafío.
Conclusión: Si sabes programar, ChatGPT es un socio IDEAL para acelerar el proceso y revisar código. Si no sabes programar, es un compañero fantástico para discutir ideas.
Mira el vídeo de como funciona:
Código:
La clase MouseClickInterceptor juega un papel crucial en este comportamiento, ya que intercepta los clics del mouse y emite una señal cuando se hace clic fuera de la zona de borde. La señal se conecta al método centerMap, que ajusta el centro del mapa y actualiza la visualización.
Librerías y Módulos Utilizados
El código utiliza varios módulos y clases de las bibliotecas PyQt5, qgis.core y qgis.gui:
- PyQt5.QtCore: Contiene clases fundamentales y base de PyQt5.
- PyQt5.QtWidgets: Ofrece clases para crear elementos de la interfaz gráfica.
- PyQt5.QtGui: Proporciona clases para elementos gráficos y de dibujo.
- qgis.core: Contiene clases fundamentales para trabajar con QGIS.
- qgis.gui: Ofrece clases para la interfaz gráfica de QGIS.
- qgis.utils: Utilidades varias para trabajar con QGIS.
Clases Desarrolladas
1. CustomToolBar
Esta clase hereda de QToolBar y se utiliza para crear una barra de herramientas personalizada. Se añade un botón de cierre que se muestra cuando la barra de herramientas está flotando.
Variables y Métodos importantes:
closeButton: UnQPushButtonque permite cerrar la barra de herramientas.event(): Un método reescrito para manejar eventos de activación y desactivación de la ventana.
2. MouseClickInterceptor
Esta clase hereda de QObject y se utiliza para interceptar clics del mouse en el canvas del mapa. Emite una señal cuando se hace clic fuera de la zona de borde.
Variables y Métodos importantes:
borderClicked: Una señalpyqtSignalque se emite cuando se hace clic fuera de la zona de borde.eventFilter(): Un método reescrito para interceptar eventos de liberación del botón del mouse.centerMap(): Centra el mapa en el punto donde se hizo clic.
3. BorderControl
Esta clase se utiliza para controlar el enfoque del borde del mapa. Permite al usuario activar o desactivar el control de borde y ajustar su tamaño.
Variables y Métodos importantes:
slider: UnQSliderpara ajustar el tamaño del borde.toggleButton: UnQPushButtonpara activar o desactivar el control de borde.updateBorder(): Actualiza la visualización del borde en el mapa.getBorderZone(): Retorna la zona del borde actual.toggle(): Cambia el estado activo del control de borde y actualiza su apariencia.
4. BorderFocus
Esta clase se utiliza para inicializar y gestionar el control de enfoque del borde en la interfaz de QGIS.
Variables y Métodos importantes:
borderControl: Una instancia de la claseBorderControl.initGui(): Inicializa el control de enfoque del borde en la interfaz de QGIS.unload(): Elimina el control de enfoque del borde de la interfaz de QGIS.
Funcionamiento General
El control de enfoque de borde se implementa como una barra de herramientas personalizada en QGIS. El usuario puede ajustar el tamaño del borde utilizando un deslizador y activar o desactivar el control de borde con un botón. Cuando el control de borde está activo, hacer clic fuera de la zona de borde centrará el mapa en el punto de clic.
La clase MouseClickInterceptor juega un papel crucial en este comportamiento, ya que intercepta los clics del mouse y emite una señal cuando se hace clic fuera de la zona de borde. La señal se conecta al método centerMap, que ajusta el centro del mapa y actualiza la visualización.