{"name": "GeoInterpolation Analyst", "package_name": "GeoInterpolation_Analyst", "version": "1.8.3", "experimental": false, "qgis_min": "3.28.0", "qgis_max": "4.99.0", "downloads": 242, "uploaded_by": "geomaticape2030", "upload_datetime": "2026-09-08T11:07:20.012298", "changelog": "1.8.3: Se corrige un bug real reportado por un usuario que pod\u00eda dejar QGIS entero sin soporte de Python (\"No se pudo cargar PyQGIS\"), no solo este plugin. __init__.py detecta y borra copias de numpy/scipy duplicadas en la carpeta de perfil de QGIS (shadowean a las que QGIS ya trae incluidas y rompen su import con errores de import circular). El problema: 'numpy' casi siempre YA est\u00e1 cargado en el proceso quando esta limpieza corre, porque qgis.core lo importa al arrancar QGIS, antes que el classFactory de cualquier plugin -- en Windows un archivo/DLL en uso no se puede borrar, as\u00ed que ese borrado fallaba silenciosamente (solo quedaba en el panel de mensajes de QGIS) y el aviso que S\u00cd ve\u00eda el usuario dec\u00eda igual \"se limpiaron paquetes conflictivos, reinici\u00e1 QGIS\", dando a entender que la correcci\u00f3n hab\u00eda quedado completa. El usuario reinici\u00f3 confiando en ese mensaje y en el reinicio siguiente QGIS ya no pudo cargar PyQGIS en absoluto, porque la copia de numpy (la que de verdad importa) segu\u00eda intacta y adem\u00e1s estaba incompleta/incompatible. Ahora __init__.py distingue lo que s\u00ed se pudo limpiar de lo que qued\u00f3 sin poder limpiarse (comprobando antes de intentar el borrado si el paquete ya est\u00e1 en sys.modules, en vez de intentar un borrado condenado a fallar) y, si algo queda sin limpiar, el plugin nunca dice \"reinici\u00e1 y listo\": muestra autom\u00e1ticamente (apenas carga, sin que el usuario tenga que buscar el men\u00fa) instrucciones de borrado manual con la ruta absoluta exacta, con prioridad sobre cualquier otro aviso. Verificado reproduciendo el escenario exacto del usuario (numpy ya importado, scipy no) con un perfil de QGIS simulado. / 1.8.2: Cuando faltan dependencias, el plugin ya no se queda solo con un aviso pasivo en la barra de mensajes de QGIS que el usuario tiene que notar y luego ir a buscar manualmente el men\u00fa 'Instalar Dependencias' (varios usuarios lo interpretaban como \"el plugin est\u00e1 roto\" en vez de \"hay un paso de instalaci\u00f3n pendiente\"). Ahora, apenas termina de cargar el stub liviano (plugin_stub.py), se ofrece autom\u00e1ticamente instalar lo que falta con un QMessageBox de S\u00ed/No -- no una instalaci\u00f3n silenciosa, porque pip descarga paquetes de internet y modifica el entorno Python del usuario, as\u00ed que se pide confirmaci\u00f3n en vez de arrancar sin avisar -- y si acepta se abre directo el instalador (install_deps_dialog.py, ya exist\u00eda desde antes) con el progreso en pantalla. Si dice que no, el aviso en la barra de mensajes y las opciones del men\u00fa siguen disponibles para reintentarlo cuando quiera. Mismo tratamiento para el otro caso que usa este stub (limpieza de numpy/scipy duplicados que pide reinicio de QGIS): el aviso de reinicio ahora tambi\u00e9n aparece autom\u00e1ticamente en vez de esperar a que el usuario lo abra desde el men\u00fa. Ninguno de estos cambios afecta el caso normal (dependencias ya instaladas): ah\u00ed __init__.py carga directo el plugin completo, sin pasar por este stub. / 1.8.1: Se corrige una regresi\u00f3n real introducida por la v1.8.0 que romp\u00eda el plugin en QGIS 3.28-3.37 (el rango expl\u00edcitamente soportado, ver qgisMinimumVersion=3.28 en esta version): la v1.8.0 reemplazo 'QgsField(nombre, QVariant.Double)' por 'QgsField(nombre, QMetaType.Type.Double)' en 3 archivos (geointerpolation_analyst.py, idw_loocv_algorithm.py, rbf_loocv_algorithm.py) para arreglar QGIS 4.x, pero el overload de QgsField que acepta QMetaType.Type recien se agrego en QGIS 3.38 -- en 3.28 a 3.37 esa llamada lanza en tiempo de ejecucion 'TypeError: QgsField(): arguments did not match any overloaded call, argument 2 has unexpected type Type' (mismo error ya reportado en otro plugin de QGIS sobre 3.34.4, ver github.com/coolzhao/Geo-SAM/issues/60), rompiendo 'An\u00e1lisis Estad\u00edstico > capa espacial' y las capas de residuos de IDW/RBF con LOOCV en cualquier instalacion de QGIS anterior a 3.38. Se corrige con un modulo nuevo (field_type_compat.py) que elige en tiempo de ejecucion QVariant.Type si esta disponible (QGIS 3.0 hasta el ultimo release con PyQt5 -- sigue funcionando ahi, solo deprecado desde 3.38, no removido) y QMetaType.Type unicamente si QVariant ya no existe (PyQt6 / QGIS 4.x), en vez de asumir un solo enum para todo el rango soportado; verificado con una simulacion de ambos escenarios (modulos qgis.PyQt.QtCore falsos con y sin QVariant) ya que este entorno no tiene una instalacion real de QGIS. Se corrigen ademas dos bugs menores encontrados en la misma revision: (1) el mensaje final de 'Interpolaci\u00f3n IDW con LOOCV' escribia literalmente el texto '{html_path}' en vez de la ruta real, por un f-string con llaves dobles de mas (idw_loocv_algorithm.py); (2) en 'Transformaci\u00f3n Inversa Box-Cox', los p\u00edxeles fuera del dominio de la formula (\u03bb\u00b7Y+1 \u2264 0) se filtraban comparando el valor ya transformado contra el centinela de NoData en vez de usar la mascara de dominio ya calculada -- funcionaba en la practica pero podia perder en silencio un pixel valido si su resultado coincidia por casualidad con el valor de NoData del raster de entrada; ahora usa la mascara directamente. / 1.8.0: Compatibilidad con QGIS 4.x (Qt6), pedido explicito: se agrega qgisMaximumVersion=4.99 en metadata.txt para que el plugin aparezca listado tanto en QGIS 3.x como en QGIS 4.x (no se sube qgisMinimumVersion -- seguir soportando 3.x no cuesta nada porque los cambios de codigo son compatibles con ambas ramas). Se corrigen 3 rupturas reales de Qt6 que iban mas alla de los enums de la v1.7.0: (1) QVariant fue eliminado de la API publica de PyQt6 -- el import 'from qgis.PyQt.QtCore import QVariant' rompia la carga completa de geointerpolation_analyst.py, idw_loocv_algorithm.py, rbf_loocv_algorithm.py y kriging_algorithm.py bajo QGIS 4.x (no solo una funcion, el modulo entero fallaba al importarse); se reemplaza por QMetaType.Type (Double/Int/QString), que ademas es la forma no-deprecada del constructor de QgsField desde la v3.38 de QGIS. (2) QAction se movio de QtWidgets a QtGui en Qt6; se agrega un import con fallback (intenta QtGui, si falla usa QtWidgets) en geointerpolation_analyst.py y plugin_stub.py para funcionar sin cambios en ambas ramas. (3) Advertencia de alcance: igual que el resto de este proyecto, no hay una instalacion real de QGIS 4.x/PyQt6 en este entorno para confirmar que el plugin carga de punta a punta -- estos 3 cambios se verificaron contra la documentacion oficial de PyQt6/QGIS 4.0 (QVariant removido de PyQt6, QMetaType.Type como reemplazo documentado desde QGIS 3.38, QAction reubicado a QtGui) y no se agrego el flag 'supportsQt6', que la propia documentacion de QGIS marca como removido y sin efecto. Se recomienda una instalacion de prueba en QGIS 4.x real antes de publicar. / 1.7.0: Curvas de nivel disponibles tambien como herramienta independiente de Processing ('Post-Procesamiento > Curvas de Nivel (raster)'), que acepta el raster de CUALQUIER metodo de interpolacion del plugin (IDW, RBF, Kriging Ordinario, GeoKriging Analyst) o cualquier otro raster cargado en QGIS -- mismo criterio de niveles y misma simbologia (menores finas / maestras gruesas etiquetadas con su cota) que ya usaba GeoKriging Analyst en su pestana '11 Curvas de Nivel', ahora compartidos en un solo modulo (contour_tools.py) en vez de duplicados. Changelog reorganizado a una linea por version anterior (historial completo de cada release en GitHub) para que sea legible desde el dialogo de complementos de QGIS. Ademas, los bloques 'except Exception: pass' detectados por el linter (silenciaban fallas de widgets/etiquetado/logo opcionales sin dejar rastro) ahora registran la excepcion en el panel de mensajes de QGIS en vez de tragarla en silencio, sin cambiar el comportamiento -- esas operaciones siguen sin interrumpir al usuario si fallan. Se corrigen ademas 9 enums sin calificar detectados por el linter (QgsProcessingParameterNumber.Double/Integer, QgsMapLayerProxyModel.PointLayer/PolygonLayer, QgsFieldProxyModel.Numeric, QgsUnitTypes.DistanceMeters) por su forma calificada (.Type.Double, .Filter.PointLayer, .DistanceUnit.DistanceMeters, etc.), requerida por PyQt6 en QGIS 3.40+; el resto del plugin ya usaba la forma calificada, estos eran los unicos rezagados. / 1.6.0: Nueva pestana '11 Curvas de Nivel' en GeoKriging Analyst: genera curvas menores/mayores del raster de prediccion con estadistica real, histograma y sugerencia automatica de niveles, estilo Surfer. / 1.5.2: Catalogo de variograma de GeoKriging Analyst reducido a los 6 modelos reales de gstat (se quitan Quadratic, Cubic y Rational Quadratic, que no eran de esa fuente). / 1.5.1: Rediseno del informe de GeoKriging Analyst (HTML/PDF/Excel): tabla LOOCV completa en los 3 formatos, cobertura de todas las etapas del flujo, identidad visual de marca y logo cargable. / 1.5.0: GeoKriging Analyst: deteccion de outliers (IQR/Z-score), invalidacion automatica de resultados al cambiar Box-Cox/outliers, 3 modos de area de interpolacion (puntos/mascara/personalizada) y reporte de resolucion/area. / 1.4.0: GeoKriging Analyst completo: variograma logaritmico y pestanas Interpolar/Calidad/Resultados/Informe. Corrige un bug numerico grave del LOOCV (predicciones absurdas sin error visible) en Kriging, Variograma y RBF. / 1.3.0: Nueva herramienta GeoKriging Analyst (Beta): flujo guiado de geoestadistica (Proyecto-Explorar-Estructura espacial-Smart Model-Validar-Seleccionar), separado de las herramientas de Processing existentes. / 1.2.0: Correcciones de validacion extendidas a IDW y RBF; corrige fuga de datos en el LOOCV de IDW. / 1.1.0: Correcciones de validacion en Kriging Ordinario (NSE vs R2 de Pearson, deteccion de coordenadas duplicadas, diagnostico de calibracion de incertidumbre). / 1.0.1: Reorganizacion del menu principal y empaquetado.", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/GeoInterpolation_Analyst/version/1.8.3/download/"}