Calculer la géométrie et les champs
Le calcul de champs sert à générer ou mettre à jour des valeurs par lots dans la table attributaire.
- Calculer des attributs géométriques : coordonnées, longueur, surface, périmètre et autres valeurs.
- Calculer des indicateurs métier : dériver des champs depuis des champs existants avec des expressions.
Calcul de champs
- Ouvrez la table attributaire de la couche cible.
- Dans Tools, choisissez Calculate geometry ou Calculate Fields.
Pour les opérations de base, voir Édition des tables attributaires vectorielles.
Calculate Geometry
Calculate geometry écrit des informations géométriques dans des champs : X/Y pour points, longueur pour lignes, surface et périmètre pour polygones.
POINT
| Geometry attribute | Automatically added fields | Field description |
|---|---|---|
| POINT_X_Y_Z_M | POINT_XPOINT_YPOINT_ZPOINT_M | Coordonnées x/y/z/m du point. |
MULTIPOINT
| Geometry attribute | Automatically added fields | Field description |
|---|---|---|
| CENTROID | CENTROID_XCENTROID_YCENTROID_ZCENTROID_M | Coordonnées du centroïde. |
| EXTENT | EXT_MIN_XEXT_MIN_YEXT_MAX_XEXT_MAX_Y | Valeurs min/max x/y du rectangle englobant. |
| PART_COUNT | PART_COUNT | Nombre de parties. |
POLYLINE / MULTIPOLYLINE
| Geometry attribute | Automatically added fields | Field description |
|---|---|---|
| LENGTH | LENGTH | Longueur de la ligne. |
| LENGTH_GEODESIC | LENGTH_GEO | Longueur géodésique. |
| LINE_START_MID_END | START_XSTART_YMID_XMID_YEND_XEND_Y | Coordonnées du début, milieu et fin. |
| CENTROID | CENTROID_XCENTROID_Y | Coordonnées du centroïde. |
| PART_COUNT | PART_COUNT | Nombre de parties. |
| POINT_COUNT | PNT_COUNT | Nombre de points. |
| LINE_BEARING | BEARING | Azimut début-fin, de 0 à 360. |
| EXTENT | EXT_MIN_XEXT_MIN_YEXT_MAX_XEXT_MAX_Y | Rectangle englobant. |
POLYGON / MULTIPOLYGON
| Geometry attribute | Automatically added fields | Field description |
|---|---|---|
| AREA | POLY_AREA | Surface du polygone. |
| AREA_GEODESIC | AREA_GEO | Surface géodésique. |
| PERIMETER_LENGTH | PERIMETER | Périmètre ou longueur de limite. |
| PERIMETER_LENGTH_GEODESIC | PERIM_GEO | Périmètre géodésique. |
| CENTROID | CENTROID_XCENTROID_Y | Coordonnées du centroïde. |
| PART_COUNT | PART_COUNT | Nombre de parties. |
| POINT_COUNT | PNT_COUNT | Nombre de points. |
| EXTENT | EXT_MIN_XEXT_MIN_YEXT_MAX_XEXT_MAX_Y | Rectangle englobant. |
Les valeurs géodésiques comme LENGTH_GEO, AREA_GEO et PERIM_GEO sont calculées par méthode géodésique. Les unités suivent le réglage de l'interface.
Système de coordonnées et unités
- Un système projeté utilise généralement des mètres et convient mieux aux longueurs et surfaces.
- Un système géographique utilise des degrés; les calculs planaires directs ne correspondent souvent pas aux attentes métier.
- Pour des résultats en mètres ou mètres carrés, privilégiez un système projeté ou un calcul géodésique.
Recommandations
- Ajoutez d'abord un champ, par exemple
len_mouarea_m2. - Validez sur un petit ensemble avant toute la table.
- Attention aux entités multiparties, qui produisent souvent une seule valeur pour toute la géométrie.
Calculate Fields
Calculate Fields affecte des valeurs par lots avec des expressions mathématiques, logiques et des fonctions.
Rédaction de formules avec AI
AI peut générer un brouillon depuis une demande en langage naturel. Indiquez clairement le champ cible, les champs utilisés, les seuils et le traitement des valeurs nulles.
Add a density field. Calculate population density by dividing Population by AREA. If the area is 0 or the population is null, output nan.
density = where(logical_or(isnan(Population), AREA == 0), nan, Population / AREA)
Add a risk_level field. Set it to 'High' when slope is greater than 25 and rain is greater than 100. Set it to 'Medium' when slope is greater than 15 or rain is greater than 60. Otherwise, set it to 'Low'.
high_risk = logical_and(slope > 25, rain > 100)
mid_risk = logical_or(slope > 15, rain > 60)
risk_level = where(high_risk, 'High', where(mid_risk, 'Medium', 'Low'))
Points à vérifier avec AI
- Correspondance exacte des noms de champs.
- Conditions de limite et signes d'égalité.
- Conventions de nommage des champs de sortie.
- Cohérence des valeurs géométriques avec le type de couche et le système de coordonnées.
- Gestion des valeurs nulles.
Conseils d'expression
- Les champs peuvent généralement être référencés par leur nom.
- L'affectation conditionnelle utilise souvent
where(condition, x, y). - Les opérations logiques par entité utilisent
&,|et~avec parenthèses. - Les affectations multi-lignes peuvent utiliser des variables intermédiaires si l'interface le permet.
Density = Population / AREA
Level = where(Value >= 80, 'A', where(Value >= 60, 'B', 'C'))
Flag = where((Type == 'main') & (Value > 0), 1, 0)
Les fonctions et mots-clés peuvent varier légèrement selon les versions. Pour AREA, LENGTH ou les valeurs géodésiques, utilisez la documentation du Geoprocessing Toolbox et la liste de fonctions de l'interface comme référence finale.
Relation avec Vector Calculator
Pour des expressions complexes, voir Calculate Fields (Vector Calculator). Pour générer une formule en langage naturel, voir Writing Raster Calculator and Field Calculator Formulas with AI.
FAQ
Les résultats ne sont pas ceux attendus
- Vérifiez d'abord le système de coordonnées.
- Vérifiez les unités de longueur ou surface, comme m, km, m2 ou km2.
- Vérifiez le type de champ; un entier peut tronquer les décimales.
Le calcul est lent
- Filtrez d'abord les enregistrements.
- Privilégiez les calculs de longueur et surface en système projeté pour éviter des calculs géodésiques inutiles.