[general]
name=GeoSort
qgisMinimumVersion=3.16
qgisMaximumVersion=4.99
description=Sort vector layer features by geometric and attribute criteria | Ordina le feature di un layer vettoriale per criteri geometrici e attributivi
version=1.11.1
author=Salvatore Fiandaca
email=pigrecoinfinito@gmail.com
about=GeoSort sorts points, lines and polygons by centroid coordinates, area, length,
    vertex count, bounding box, distance from a configurable reference point, position along a line,
    a Hilbert curve (spatial sorting: nearby features stay nearby in the order),
    a serpentine/boustrophedon ordering for regular grids — horizontal (by Y, X
    alternating) or vertical (by X, Y alternating) bands, cross axis alternating
    band by band, the classic order for map series and survey/flight paths — and
    custom QGIS expressions. Supports
    hierarchical multi-criteria sorting (a secondary
    criterion breaks ties of the primary one) and both lexicographic and Natural Sort ordering
    for text and expression criteria (e.g. "11" < "1010" < "1111" instead of "1010" < "11" < "1111").
    On geographic CRS (degrees) area, length, perimeter and distances are automatically measured
    on the ellipsoid (geodesic, in m²/m) — Auto/Always/Never modes available.
    It adds a progressive field (default 'sort_order', name/start value/step all customizable)
    to the layer or creates a new in-memory sorted layer.
    Also available in the Processing Toolbox for batch use and the graphical modeler.
    ---
    GeoSort permette di ordinare punti, linee e poligoni per coordinate centroide,
    area, lunghezza, numero di vertici, bounding box, distanza da punto di riferimento configurabile,
    posizione lungo una linea, una curva di Hilbert (ordinamento spaziale: le feature vicine
    nello spazio restano vicine nell'ordine), un ordinamento a serpentina/boustrophedon per
    griglie regolari — bande orizzontali (per Y, X alternato) o verticali (per X, Y alternato),
    asse trasversale alternato banda per banda, l'ordine classico per serie cartografiche e
    percorsi di rilievo/volo — ed espressioni QGIS
    personalizzate. Supporta l'ordinamento
    gerarchico multi-criterio (un criterio secondario spezza i pareggi del primario) e
    l'ordinamento lessicografico e Natural Sort per criteri testuali ed espressioni (es. "11" < "1010" < "1111"
    invece di "1010" < "11" < "1111"). Su CRS geografici (gradi) area, lunghezza, perimetro
    e distanze sono misurati sull'ellissoide (geodetica, in m²/m) — modalità Auto/Sempre/Mai.
    Aggiunge un campo progressivo (default 'sort_order', nome/valore iniziale/passo personalizzabili)
    al layer o crea un nuovo layer ordinato in memoria.
    Disponibile anche nel Processing Toolbox per uso in batch e nel modellatore grafico.
    ---
    Developed with the assistance of Claude Code (Anthropic) | Realizzato con l'ausilio di Claude Code (Anthropic)
tracker=https://github.com/pigreco/geosort/issues
repository=https://github.com/pigreco/geosort
homepage=https://pigreco.github.io/geosort/
hasProcessingProvider=yes
tags=ordinamento, geometria, attributi, vettoriale, sort, order, natural sort, multi-criterio, multicriteria, punti, linee, poligoni
category=Vector
icon=icon.svg
experimental=False
deprecated=False
server=False
supportsQt6=True
changelog=
    1.11.1 Dialogo più compatto: altezza ridotta del 30%% (misurata, non stimata); l'anteprima delle prime feature ordinate si apre ora in un popup on-demand (bottone accanto ad Aiuto) invece di occupare sempre spazio nella finestra principale; il gruppo Opzioni raggruppa più campi per riga (Direzione+NULL in fondo, criterio secondario+discendente); i controlli della Serpentina (verso della prima banda) restano nascosti quando non è il criterio attivo; il riquadro Layer di input è ora a dimensione fissa — l'avviso sul CRS geografico passa in tooltip invece di allungare la label a ogni cambio layer; nessuna modifica alla logica di ordinamento
    1.11.0 Nuovo criterio di ordinamento "Serpentina" (boustrophedon): raggruppa le feature in bande a partire dal centroide, con l'asse trasversale alternato crescente/decrescente da una banda alla successiva — l'ordine classico per numerare le tavole di una serie cartografica a taglio regolare o un percorso di volo fotogrammetrico, senza il salto lungo da fine banda a inizio banda successiva di un ordinamento a righe semplice; orientamento configurabile, bande orizzontali (per Y, X alternato — default) o verticali (per X, Y alternato), parametro BAND_AXIS nel Processing; parametro avanzato BAND_SIZE (dimensione banda nelle unità del CRS — altezza per orizzontali, larghezza per verticali; 0/vuoto = automatica dalla dimensione media delle bounding box delle feature); angolo di partenza configurabile, combinando la Direzione generale con il nuovo parametro CROSS_ASCENDING (verso dell'asse trasversale nella prima banda) si raggiunge uno qualunque dei quattro angoli della griglia; disponibile nel dialogo e nel Processing; non disponibile come criterio primario in modalità multi-criterio (richiede le bande calcolate su tutte le feature); 18° criterio di ordinamento, coperto da test end-to-end
    1.10.0 Nuovo criterio di ordinamento "Curva di Hilbert": ordina le feature lungo una curva di Hilbert calcolata sui centroidi normalizzati sull'extent del layer, così le feature vicine nello spazio restano vicine nell'ordine — utile per atlanti a percorso continuo e per scrivere GeoPackage con feature spazialmente coerenti (letture più veloci); disponibile nel dialogo e nel Processing (parametro avanzato HILBERT_ORDER per la risoluzione della griglia, default 16); non disponibile come criterio primario in modalità multi-criterio (richiede l'extent calcolato su tutte le feature); 17° criterio di ordinamento, coperto da test end-to-end
    1.9.0 Punto di riferimento configurabile per il criterio "Centroide – distanza" anche nel Processing Toolbox (parametro REF_POINT, vuoto = origine 0,0 come prima, parità con il dialogo interattivo); numerazione personalizzata del campo progressivo — valore iniziale, passo e nome campo (default sort_order), disponibile nel dialogo e nel Processing, con riuso del campo se già presente sul layer invece di duplicarlo; fix: nel Processing i parametri opzionali marcati "Avanzate" (campo/espressione del criterio secondario) perdevano il flag opzionale e venivano richiesti come obbligatori; fix: "Posizione lungo linea"/"Distanza dalla linea" ora riproiettano automaticamente il layer di riferimento se ha un CRS diverso dal layer di input (prima le geometrie venivano confrontate senza riproiezione, con risultati silenziosamente sbagliati fino a NaN su CRS molto diversi); test: copertura end-to-end di tutti e 16 i criteri di ordinamento tramite l'algoritmo Processing reale (prima solo 3 erano esercitati end-to-end), più verifica dei valori ordinati per perimetro, lunghezza, numero di vertici e i 5 criteri bounding box
    1.8.1 Performance: undo atomico per l'ordinamento (beginEditCommand/endEditCommand, un solo blocco Ctrl+Z anche su migliaia di feature); riuso del motore GEOS preparato anche per il criterio "primo punto di intersezione" lungo linea, con distanza curvilinea valutata solo sugli estremi di ogni parte invece di tutti i vertici; lookup del campo per indice invece che per nome nell'ordinamento per attributo. Processing: barra di progresso e cancellazione effettive durante la fase di ordinamento (non solo a inizio/fine); parametri condizionali (Natural Sort, misura geodetica, modalità linea, criterio secondario) spostati in "Avanzate" per una finestra più pulita; rimossa import duplicata
    1.8.0 Ordinamento delle sole feature selezionate (dialogo e Processing, con parametri FeatureSource e layer di riferimento limitato alle linee); correzioni: crash sui pareggi di distanza lungo linea, ordinamento di valori a tipo misto (numeri+testo) senza errori, NULL sempre in fondo anche con ordine discendente; performance: motore GEOS preparato per i criteri su linea (fino a 2x su linee complesse) e scritture batch degli attributi; i18n: algoritmo Processing e messaggi del core tradotti, tooltip multilinea ora tradotti in inglese; supportsQt6=True per il repository plugin; CI GitHub Actions (test senza QGIS + QGIS LTR/latest)
    1.7.0 Misura geodetica su CRS geografici: area, perimetro, lunghezza e distanze misurati sull'ellissoide (m²/m) con modalità Auto/Sempre/Mai; avviso non bloccante su attivazione automatica; bounding box e posizione lungo linea restano planari
    1.6.0 Ordinamento gerarchico multi-criterio: criterio secondario per spezzare i pareggi del primario (es. regione poi area), nel dialogo e nel Processing; robustezza: feature con geometria NULL/vuota e layer a geometria mista non causano più crash (relegate in fondo); ottimizzazione performance (chiave geometrica calcolata una sola volta per centroide e proprietà geometriche); fix distanza centroide-origine nel Processing; deduplicazione coercizione valori; 100 test sulla logica core
    1.5.2 Correzioni i18n: traduttore mantenuto come attributo (evita garbage collection dopo installTranslator); voce di menu/toolbar ora tradotta; file .ts IT/EN completi e sincronizzati (incluse stringhe multilinea di tooltip/help); rimossi log di debug; nuovo generatore scripts/gen_ts.py
    1.5.1 Completamento e compilazione traduzioni inglesi in formato .qm; switch a QgsApplication.locale() per rilevamento lingua QGIS
    1.5.0 Interfaccia multilingua (Italiano & Inglese); rilevamento automatico della lingua di sistema; infrastruttura di traduzione per estendere ad altre lingue; fix type inference per campi attributo (issue #8)
    1.4.0 Ordinamento per distanza dalla linea (issue #6); due modalità: centroide e elemento; layout criteri compatto; 18 test Processing; fix SVG tema scuro QGIS 4
    1.3.0 Pulsante Rimuovi espressione; conferma sovrascrittura sort_order; fix enum QGIS 4 / PyQt6
    1.2.0 Aggiunge Natural Sort per criteri attributo/espressione (issue #3)
    1.1.0 Porting QGIS 4 / Qt6 / PyQt6: enum qualificati, QVariant→QMetaType, qgisMaximumVersion=4.99
    1.0.0 Prima release stabile
