[general]
name=Recalculo RTK a Coordenadas Ajustadas
qgisMinimumVersion=3.16
qgisMaximumVersion=4.99
description=Recalculates field points collected against a "free" RTK base to the base's adjusted coordinates from static GNSS post-processing (plane and geographic). Optional epoch correction with VEMOS (Latin America) and VEL-Ar v2.0 (Argentina, with coseismic jumps).
version=1.6.0
author=Edwin Arley Castellanos Martinez
email=topoedw05@gmail.com

about=Surveying and cadastral plugin for GNSS/RTK work. From the coordinates of a "free" RTK base taken in the field and its adjusted coordinates (obtained by static GNSS post-processing), it computes the translation vector and applies it to every point in a comma-delimited CSV file, letting you choose the X/Easting, Y/Northing and Z/elevation columns. It recalculates both projected (plane) and geographic (longitude/latitude) coordinates, adds the resulting points as a layer to the project, can also export them to Shapefile (.shp) and DXF (.dxf), and can optionally generate an HTML technical report of the recalculation. It can also optionally move the adjusted geographic coordinates from their observation epoch to a target epoch, using bundled velocity models, with no internet connection required: the SIRGAS/DGFI-TUM VEMOS models (e.g. MAGNA-SIRGAS 2018.0) for Colombia and the rest of Latin America, or the IGN's official VEL-Ar v2.0 model (POSGAR07, epoch 2006.632) for Argentina, which also models the coseismic jumps of the Maule and Illapel earthquakes. The interface and the technical report are available in Spanish, English and Brazilian Portuguese, detected automatically from QGIS's own interface language.

  Complemento de topografia y catastro para GNSS/RTK. A partir de la coordenada de la base tomada libre en campo y su coordenada ajustada (obtenida por postproceso estatico), calcula el vector de traslacion y lo aplica a todos los puntos de un archivo CSV (delimitado por comas), permitiendo elegir las columnas de X/Este, Y/Norte y Z/elevacion. Recalcula tanto las coordenadas planas (proyectadas) como las geograficas (longitud/latitud), agrega los puntos resultantes como capa al proyecto, permite exportarlos tambien a Shapefile (.shp) y a DXF (.dxf), y puede generar opcionalmente un reporte tecnico en HTML del recalculo. Tambien puede, opcionalmente, llevar las coordenadas geograficas ajustadas de su epoca de observacion a una epoca destino, usando modelos de velocidades incluidos, sin necesidad de conexion a internet: los modelos VEMOS de SIRGAS/DGFI-TUM (p. ej. MAGNA-SIRGAS 2018.0) para Colombia y el resto de Latinoamerica, o el modelo oficial VEL-Ar v2.0 del IGN (POSGAR07, epoca 2006.632) para Argentina, que tambien modela los saltos cosismicos de los terremotos de Maule e Illapel. La interfaz y el reporte tecnico estan disponibles en espanol, ingles y portugues de Brasil, detectados automaticamente segun el idioma configurado en QGIS.

tracker=https://github.com/topoedw05-dot/recalculo_rtk/issues
repository=https://github.com/topoedw05-dot/recalculo_rtk
homepage=https://github.com/topoedw05-dot/recalculo_rtk#readme
category=Vector
tags=rtk,gnss,catastro,topografia,magna-sirgas,postproceso,coordenadas,agrimensura,levantamiento,surveying,gis,multilingual,i18n,english,portugues,vemos,sirgas,epoca,itrf,vel-ar,argentina,posgar07,ign

icon=icon.png
experimental=False
deprecated=False
server=False

changelog=1.6.0 Agrega el modelo oficial VEL-Ar v2.0 del Instituto Geografico Nacional de Argentina (IGN) a la correccion opcional de epoca, junto a los modelos VEMOS ya existentes: el usuario elige "VEL-Ar v2.0 - POSGAR07 - Argentina (IGN)" en la misma lista desplegable de modelos. A diferencia de VEMOS (velocidad lineal pura), VEL-Ar incluye los saltos cosismicos y la relajacion postsismica logaritmica de los terremotos de Maule (2010.159, Mw 8.8) e Illapel (2015.710, Mw 8.3): en la zona andina argentina (Mendoza, San Juan, Neuquen, La Pampa, Rio Negro...), usar VEMOS cuando el intervalo de epoca cruza esas fechas puede dar un error de 20 cm o mas, mientras que VEL-Ar valida contra el programa oficial del IGN con un error maximo de 1.33 cm. El complemento avisa en el registro cuando conviene usar VEL-Ar en vez de VEMOS. Al elegir VEL-Ar, la epoca destino salta automaticamente a la oficial de Argentina (POSGAR07, 2006.632) si seguia en el valor por defecto de VEMOS (2018.000), y viceversa. Las 5 grillas de VEL-Ar (velocidad lineal y saltos/relajacion de ambos sismos, ~1.3 MB) se incluyen con el complemento en la carpeta velar_data/, igual que los archivos VEMOS; el CSV de salida agrega la columna "Marco_epoca" (indica si el resultado quedo en POSGAR07, POSGAR07b, o el marco del modelo VEMOS elegido). Nuevo modulo velar_ar.py (sin dependencias de QGIS, probado con 36 pruebas en test_velar.py contra los valores oficiales del manual/calculadora del IGN, tolerancia 2 cm). Verificado en vivo en QGIS 4.2.2 contra puntos reales de Argentina (Mendoza y otros). AVISO: el paquete oficial de grillas del IGN no declara una licencia de redistribucion visible; si va a publicar o compartir este complemento, confirme con el IGN las condiciones de redistribucion de las grillas de velar_data/ (ver velar_data/LEEME.txt).
  1.5.5 Cuando se activa la correccion opcional de epoca (VEMOS), los puntos exportados a Shapefile y a DXF (y la capa "Puntos ajustados" del proyecto) ahora quedan ubicados en las coordenadas YA CORREGIDAS a la epoca destino, en vez de las coordenadas ajustadas por la base RTK sin corregir. Antes la correccion de epoca solo se veia en las columnas nuevas del CSV y en el reporte tecnico, pero la geometria plana que se graficaba (capa del proyecto, SHP, DXF) seguia siendo la ajustada sin corregir, sin importar si la correccion estaba activada. Un punto que cae fuera de la cobertura real del modelo VEMOS elegido (o que no se pudo reproyectar) sigue graficandose con su coordenada ajustada sin corregir, igual que si la opcion no estuviera activada, y queda registrado igual que antes. Sin la correccion de epoca activada, el comportamiento no cambia. Los atributos de la capa/Shapefile (columnas X_ajustada, Y_ajustada, Z_ajustada, X_epoca, ...) no cambian, solo la ubicacion del punto.
  1.5.4 Corrige que el DXF exportado no mostrara los nombres/etiquetas de los puntos. La capa temporal usada para exportar a DXF guardaba la etiqueta en un campo de atributo normal llamado "Text", pero el driver DXF de GDAL/OGR nunca lee ese campo al escribir (solo lo usa el lector, al interpretar entidades TEXT existentes en un DXF ya creado): por eso no aparecia ningun texto junto a los puntos. Ahora se usa el campo especial reservado "OGR_STYLE" (convencion de OGR/GDAL) con un "Feature Style String" del tipo LABEL(t:"etiqueta"), que es lo que el driver DXF si reconoce para dibujar una entidad de texto (MTEXT) junto a cada punto. Verificado en vivo en QGIS 4.2.2: el DXF generado ahora contiene una entidad MTEXT con la etiqueta correcta en cada punto. Sin cambios en el Shapefile exportado ni en el resto del calculo.
  1.5.3 Corrige los botones de ayuda "(?)" (junto a las casillas de exportar a SHP/DXF, generar reporte tecnico, y aplicar cambio de epoca VEMOS): antes solo mostraban el texto de ayuda como un tooltip al dejar el cursor quieto encima, lo cual no siempre funcionaba. Ahora, ademas del tooltip, un clic sobre el boton abre un cuadro de dialogo con el texto completo, forma mas confiable de verlo.
  1.5.2 El reporte tecnico opcional ahora incluye, para cada punto, las coordenadas ya corregidas por el modelo de velocidades VEMOS (X/Y/Z epoca, longitud/latitud epoca y el desplazamiento en metros) cuando el usuario activa la correccion de epoca; antes el reporte solo mostraba un resumen general (modelo, marco, epocas, cobertura, cantidad de puntos corregidos) sin el detalle por punto. Un punto que quedo fuera de la cobertura real del modelo elegido se muestra como "N/A" en esas columnas, igual que queda vacio en el CSV de salida. Sin la correccion de epoca activada, el reporte no cambia (esas columnas no aparecen).
  1.5.1 En la correccion opcional de epoca (VEMOS): el campo "Epoca de observacion" ahora es un selector de FECHA (con calendario) en vez de un año decimal escrito a mano; el complemento calcula solo el año decimal a partir de la fecha elegida y lo muestra junto al campo como referencia. Se quita el boton "Cargar archivo..." para usar un VEMOS*.TXT propio: ya no es necesario porque los 4 modelos (VEMOS2022/2017/2015/2009) vienen incluidos con el complemento. Ademas se reemplazaron los 4 archivos VEMOS*.TXT incluidos por los originales de SIRGAS (misma informacion numerica, cabecera en UTF-8 correcto en vez de con caracteres mal codificados) y se endurecio la lectura de esos archivos para aceptar ambas codificaciones. Sin cambios en el calculo de traslacion ni en el formato de los archivos de salida.
  1.5.0 Agrega correccion opcional de epoca con los modelos de velocidades VEMOS de SIRGAS/DGFI-TUM (VEMOS2022, VEMOS2017, VEMOS2015 y VEMOS2009, incluidos con el complemento en la carpeta vemos_data/, sin necesidad de conexion a internet; tambien se puede cargar un archivo VEMOS*.TXT propio). Es un paso opcional y desactivado por defecto (igual que el reporte tecnico): cuando se activa, lleva las coordenadas geograficas ya ajustadas de su epoca de observacion a una epoca destino (p. ej. MAGNA-SIRGAS = ITRF2014 epoca 2018.0, Resolucion IGAC 715 de 2018) dentro del MISMO marco de referencia (no cambia el marco ITRF, no recalcula la altura por geoide y no incluye saltos cosismicos). El CSV de salida agrega columnas nuevas con el resultado (X/Y/Z_epoca, Lon/Lat_epoca, desplazamiento en metros, modelo, epoca de observacion y destino) sin modificar las columnas existentes; los puntos fuera de la zona de cobertura real del modelo elegido quedan sin corregir y se avisa en el registro. El reporte tecnico opcional ahora incluye, cuando se usa, una seccion con el modelo, marco de referencia, epocas, cobertura real y cantidad de puntos corregidos. Nuevo modulo vemos.py (sin dependencias de QGIS, probado con test_vemos.py). Verificado en vivo en QGIS 4.2.2 contra puntos reales cerca de Bogota.
  1.4.1 Reorganiza la interfaz del dialogo para que sea mas compacta y facil de leer, sin cambios en el calculo ni en los archivos generados: las tarjetas de base libre/ajustada ahora muestran un icono de vector (flecha) entre ambas; el area central se divide en dos columnas (Entrada: CSV y columnas en una cuadricula 2x2, y sistemas de referencia; Salida: resultado principal, exportacion a SHP/DXF unificada con chips y fila de ruta dinamica, y reporte tecnico colapsado detras de un unico checkbox); las notas largas sobre DXF y el reporte quedan detras de un boton de ayuda "(?)"; el registro de estado queda colapsado por defecto (se expande solo al calcular) y el boton "Calcular y exportar" queda destacado en verde en la esquina inferior derecha junto a "Cerrar".
  1.4.0 Agrega soporte de idiomas: ademas de espanol, la interfaz completa del dialogo y el reporte tecnico en HTML ahora tambien estan disponibles en ingles y en portugues de Brasil. El idioma se detecta automaticamente a partir de la configuracion de idioma de la propia interfaz de QGIS (Configuracion > Opciones > General > Idioma), sin necesidad de elegirlo manualmente; si QGIS esta en un idioma distinto a esos tres, el complemento usa espanol por defecto. Nuevo modulo i18n.py con las traducciones. Sin cambios en la logica de calculo.
  1.3.4 Corrige el hallazgo que senalaba la verificacion "Qt6 Check" de plugins.qgis.org en recalculo_dialog.py (linea 226: "Enum error, add 'Type' before 'QString'"). Era codigo de respaldo para QGIS/Qt5 dentro del helper que obtiene el tipo de campo "texto" para QgsField; no afectaba el funcionamiento del plugin en ningun QGIS, pero se reescribio para que el verificador automatico ya no lo marque. Sin cambios de comportamiento.
  1.3.3 Cambia el reporte tecnico de PDF a una pagina HTML autocontenida (se abre con cualquier navegador), que se ve mas profesional porque ya no depende de las limitaciones del motor de texto de Qt. La seccion "Sistemas de referencia" ahora muestra el detalle completo de cada CRS igual que el panel de propiedades de QGIS/ArcGIS: para el sistema proyectado, nombre, proyeccion, WKID, autoridad, unidad lineal, falso este/norte, meridiano central, factor de escala, latitud de origen y area de uso; para el sistema geografico base, nombre, WKID, autoridad, unidad angular, primer meridiano, datum, esferoide, semieje mayor/menor y aplanamiento inverso. Estos datos se extraen en vivo de la base de datos EPSG que usa QGIS (via los bindings de Python de GDAL, incluidos siempre con QGIS) a partir del CRS que el usuario selecciono, sin valores fijos en el codigo. Probado en vivo en QGIS 4.0.0 contra EPSG:9377 y EPSG:4686: los valores coinciden exactamente con el panel de propiedades de QGIS.
  1.3.2 Mejora el formato del reporte tecnico en PDF: la seccion "Sistemas de referencia" ahora muestra el nombre completo de cada CRS junto con su codigo EPSG, unidades, si el datum es estatico o dinamico, cuerpo celeste y metodo de proyeccion (igual que el panel de propiedades del selector de CRS de QGIS). El listado de puntos usa 3 decimales en las coordenadas planas y formato grados-minutos-segundos (5 decimales) en las geograficas, arranca siempre en una hoja nueva y la hoja ahora es horizontal (apaisada) con margenes mas ajustados para aprovechar mejor el espacio. Los titulos quedan centrados y en mayuscula, con mas espacio entre titulos y tablas, para un aspecto mas profesional.
  1.3.1 Corrige que el reporte tecnico en PDF (agregado en 1.3.0) no se generara en QGIS 4.x: PyQt6 renombro el metodo QTextDocument.print_() a QTextDocument.print() (sin guion bajo), y el codigo solo probaba el nombre de PyQt5. Ahora se prueban ambos nombres. Probado en vivo en QGIS 4.0.0: el PDF ya se genera correctamente.
  1.3.0 Agrega generacion opcional de un reporte tecnico en PDF del recalculo: coordenadas de ambas bases, vector de traslacion aplicado, CRS usados, resumen del proceso y listado completo de puntos recalculados. Es opcional (casilla sin marcar por defecto); se genera con QTextDocument/QPrinter de PyQt, sin depender de librerias externas.
  1.2.3 Corrige los 2 "Try/Except/Pass" que senalaba el escaneo de seguridad (Bandit) en recalculo_dialog.py: los helpers de compatibilidad Qt5/Qt6 ahora capturan excepciones especificas (ImportError, TypeError/ValueError) y manejan el caso en vez de un "except: pass" generico. Sin cambios de comportamiento. Verificado localmente con bandit: 0 issues.
  1.2.2 Excluye test_core.py (suite de pruebas de desarrollo) del paquete publicado: no se ejecuta dentro de QGIS y sus "assert" de prueba hacian que el escaneo de seguridad de plugins.qgis.org (Bandit) marcara el plugin como bloqueado por falsos positivos. El codigo del plugin no cambia.
  1.2.1 Corrige que QGIS marcara el plugin como "incompatible" y le quitara el icono de la barra al reiniciar QGIS 4.x: faltaba declarar qgisMaximumVersion (sin ese limite, QGIS asume compatibilidad solo hasta 3.99). Ahora declara soporte explicito hasta QGIS 4.99.
  1.2.0 La ventana del dialogo ahora es redimensionable a voluntad (se puede agrandar, achicar o maximizar) y su contenido queda dentro de una barra de desplazamiento vertical, para que quepa en pantallas pequenas; el registro de estado y los botones quedan siempre visibles debajo.
  1.1.0 Agrega exportacion opcional de los puntos ajustados a Shapefile (.shp, con elevacion Z si esta disponible) y a DXF (.dxf, con etiqueta de texto por punto). Las capas generadas ahora usan geometria 3D (PointZ) cuando hay columna de elevacion.
  1.0.1 Corrige compatibilidad con QGIS 4 / Qt6 (error "QLocale has no attribute C" al abrir el dialogo, y tipo de campo de las capas generadas). Funciona tanto en QGIS 3.16+ (Qt5) como en QGIS 4.x (Qt6).
  1.0.0 Version inicial: traslacion de coordenadas de base libre a base ajustada, reproyeccion a coordenadas geograficas y generacion de capas de puntos.
