[general]
name=YF GIS Amazonia Tools
qgisMinimumVersion=3.22
qgisMaximumVersion=3.99
description=Professional GIS toolkit for cadastral regularization, surveying, GNSS post-processing and agroforestry management in the Peruvian Amazon.
version=1.0.8
author=Yuri Fabian Caller Cordova
email=yuricaller@gmail.com

about=Unified plugin integrating six specialized tools for Peruvian Amazon surveying and forestry professionals.
    CADASTRAL: Automatic technical memoir (memoria descriptiva) generator for rural land regularization; Parcel segmenter with azimuth and angle calculations; Coordinate, vertex, area and perimeter calculator (YF Tools Plus).
    GEODESY / GNSS: PPK and PPP post-processing with RTKLIB, PDF technical reports, .cor output files for IGN Peru submissions.
    AGROFORESTRY: Agroforestry system (SAF) generator with unique plant identification and multiple spatial distribution methods.
    SEARCH AND ANALYSIS: Advanced multi-layer attribute search with report generation and visualization.
    REQUIREMENTS: python-docx (required for memoir generation). Optional: pandas, matplotlib, reportlab for reports. Install via OSGeo4W Shell: python -m pip install python-docx pandas matplotlib reportlab. RTKLIB binaries are required separately for GNSS processing.
    Designed for forestry, cadastre, and topography professionals in Peru and Latin America.

tracker=https://github.com/YuriCaller/YF_GIS_AMAZONIA/issues
repository=https://github.com/YuriCaller/YF_GIS_AMAZONIA
homepage=https://github.com/YuriCaller/YF_GIS_AMAZONIA

category=Plugins
icon=icons/main_icon.png
license=GPL-3.0-or-later

experimental=False
deprecated=False
server=False
hasProcessingProvider=no

tags=amazonia,peru,cadastre,cadastral,surveying,topography,gnss,ppk,ppp,rtklib,geodesy,memoria descriptiva,atlas,word,docx,agroforestry,forestry,saf,attribute search,azimuth,vertices,coordinates,polygon,excel

changelog=Version 1.0.8 (2026-04-16):
 - GNSS CRITICAL FIX: normalize all file paths with os.path.normpath() before passing to RTKLIB. Mixed forward/backward slashes (D:/YURI TRABAJOS/...\PPK.conf) caused RTKLIB to fail with "no obs data" on Windows. This was the ROOT CAUSE of all processing failures.

 Version 1.0.6 (2026-04-16):
 - GNSS CRITICAL FIX: replaced subprocess.Popen with subprocess.run for RTKLIB execution. Popen with shell=True in QThread on Windows was silently failing to quote paths with spaces, causing 'no obs data' errors. subprocess.run is more reliable in threaded Qt contexts.
 - GNSS: added explicit [CMD] log line showing the actual quoted command sent to RTKLIB for debugging.
 - GNSS: skip logging thousands of 'processing' progress lines, show summary count instead.
 - GNSS: detect 'no obs data' error and report clear message.

 Version 1.0.5 (2026-04-16):
 - GNSS CRITICAL FIX: posmode mapping was completely wrong. static was mapped to 0 (Single/autonomous) instead of 3 (Static relative). kinematic was 1 (DGPS) instead of 2 (Kinematic). PPP modes were also wrong (4/5 instead of 7/6). This caused RTKLIB to run in Single mode ignoring the base station, producing 0 solutions.
 - Correct mapping: static=3, kinematic=2, movbase=4, fixed=5, ppp-static=7, ppp-kinematic=6.

 Version 1.0.4 (2026-04-16):
 - GNSS FIX: rnx2rtkp binary search now checks three locations: plugin root/rtklib_bin/, tools/gnss_postprocess/rtklib_bin/, and system PATH. Previously only checked plugin root, causing 'not found' when binary was in the gnss_postprocess subfolder.

 Version 1.0.3 (2026-04-16):
 - GNSS CRITICAL FIX: paths with spaces (e.g. 'D:/YURI TRABAJOS/WORK GIS/...') now work correctly on Windows. Previously RTKLIB received broken arguments and silently failed (showed help screen instead of processing).
 - GNSS FIX: base RINEX file now passed as positional argument (not with -r flag which is for ECEF coordinates). Correct rnx2rtkp syntax: rover.obs base.obs nav.nav.
 - GNSS: added detection of RTKLIB help screen output to report clear error instead of silent zero fix/float.
 - Same fixes applied to PPP processor for consistency.

 Version 1.0.2 (2026-04-16):
 - GNSS: file dialogs now accept year-based RINEX extensions (.26o, .26n, .26l, .26g, .25o, .25n, etc.) in addition to .obs/.nav/.rnx.
 - GNSS: auto-detection of navigation files when rover observation file is selected (searches for matching .nav/.26n/.26l/BRDC* in same folder).
 - GNSS: GLONASS nav filter updated to include .26g and year-based extensions.
 - GNSS: Base RINEX filter updated to accept year-based observation extensions.

 Version 1.0.1 (2026-04-14):
 - Security: validated URL scheme (http/https only) in RTKLIB installer to prevent use of file:// or custom schemes (Bandit B310).
 - No functional changes.

 Version 1.0.0 (2026-04-13):
 - Initial unified release integrating six previously separate plugins.
 - Top-level menu YF GIS Amazonia with thematic submenus: Cadastral, Geodesy/GNSS, Agroforestry, Search.
 - Memoria Descriptiva v3.2: three modes (single polygon, full atlas, atlas by selection), auto-detects adjacent layers for neighbor identification.
 - Segmenter: delegates to YF Tools Plus segmentator tab to avoid code duplication.
 - YF Tools Plus v2.3: full multipart polygon support, Excel/CSV import, configurable output names.
 - GNSS Post-Process v2.0: RTKLIB integration, strict geodetic validation, IGN Peru report format, PDF output.
 - SAF Generator v2.1: six spatial distribution methods, custom row orientation, unique plant identifiers.
 - Attribute Search v1.1: fixed SQL injection vulnerability, replaced deprecated legendInterface() API, conditional imports for optional dependencies.
 - Core infrastructure: lazy-loaded tool registry, PyQt5/PyQt6 compatibility layer, shared CRS utilities, unified logger.
