# Topo

## Description
The "Topo" tool transforms the boundaries of geological formations and structural elements into polygons, with attributes derived from the input point layer codes. The input parameters include:
1. A line layer for the boundaries of geological formations (e.g., L_FGEOL).
2. A line layer for structural elements (e.g., L_STRUCT), which is optional.
3. A point layer P_LABEL containing the codes that will be assigned to the resulting polygons.
4. The title of the field containing the codes (from the point layer, e.g., P_LABEL).

The "Scale/tolerance" tab allows you to configure the snapping tolerance, expressed in meters. The tolerance is automatically calculated based on the selected scale. If the pre-calculated tolerance does not suit your needs, you are free to define a value manually.

## Description
L'outil "Topo" transforme les contours des formations géologiques et les éléments structuraux en polygones ayant comme attribut les codes issus de la couche ponctuelle d'entrée. Les paramètres d'entrée comprennent :
1.	Une couche linéaire pour les contours des formations géologiques (p.ex. L_FGEOL).
2.	Une couche linéaire pour les éléments structuraux (p.ex. L_STRUCT), qui est optionnelle.
3.	Une couche ponctuelle P_LABEL contenant les codes qui seront attribués aux polygones résultants.
4.	Le titre du champ qui contient les codes (couche ponctuelle p.ex. P_LABEL).

L'onglet "Échelle/tolérance" permet de paramétrer la tolérance d'accrochage, exprimée en mètres. La tolérance est automatiquement calculée en fonction de l'échelle sélectionnée. Si la tolérance précalculée ne vous convient pas, vous êtes libre de définir une valeur manuellement.

---
After execution, the algorithm adds 6 resulting layers to the project (provided they are not empty):
1. Valid polygons - containing the codes from the P_LABEL point layer.
2. Polygones without label-points - polygons that do not contain any label-point.
3. Polygons with different labels - polygons containing label-points with different codes.
4. Stuck boundaries - geological boundaries that remain completely inside valid polygons.
5. Different label-points - internal points of the "Polygons with different labels".
6. Dangles (isolated nodes) - points not connected to other lines. They help locate open boundaries.
7. Exterior label-points - points located outside the modeled polygons.The resulting layers are temporary (stored in memory) and will be removed once the QGIS project is closed. To save the final version, use the right-click -> Export option.A report file in .txt format is stored in the folder of the geological formation boundaries layer (L_FGEOL) after each execution.

Après l'exécution des traitements, l'algorithme ajoute au projet 6 couches résultantes (si elles ne sont pas vides):
1.	Polygones valides - contenant les codes issus de la couche ponctuelle P_LABEL.
2.	Polygones sans points-labels - polygones ne contenant aucun point-label.
3.	Polygones avec des labels différents - polygones contenant des points-labels ayant des codes différents.
4.	Contours coincés - contours géologiques qui restent complètement à l'intérieur de polygones valides.
5.	Points-labels différents - points internes des "Polygones avec des labels différents".
6.	Dangles (noeuds isolés) - points non connectés à d'autres lignes. Ils permettent de localiser des contours non fermés.
7.	Points-labels extérieurs - points se trouvant à l'extérieur des polygones modélisés.
Les couches résultantes sont temporaires (stockées en mémoire) et seront supprimées une fois le projet QGIS fermé. Pour enregistrer la version finale, passez par l'option clic droit -> Exporter.
Un fichier de compte-rendu au format .txt est stocké dans le dossier de la couche des contours des formations géologiques (L_FGEOL) après chaque exécution.

## Operational flowchart (simplified)

First, the tool merges the line layers and performs snapping based on the input value.

Next, it converts the lines into polygons and joins the codes from the point layer.

Based on the results of the polygonization and spatial join, the tool categorizes the polygons by type: valid, empty, with different labels, and creates the corresponding point layers as well as the dangles layer.

## Schéma de fonctionnement (simplifié)

![image info](img/1.png)

Tout d'abord, l'outil fusionne les couches linéaires et effectue l'accrochage selon la valeur d'entrée.

Ensuite, il réalise la transformation des lignes en polygones et joint les codes issus de la couche ponctuelle.

À partir du résultat de la polygonisation et de la jointure spatiale, l'outil distingue les polygones par type : valides, vides, avec des labels différents, et crée les couches des points correspondants ainsi que la couche des dangles.

## Auteur
Alexandre Demidov

plugins.qgis@brgm.fr