Le blog francophone consacré
aux technologies Esri

Manipuler des géométries dans la calculatrice de géotraitements


Lors de travaux récents, j'ai travaillé sur un géotraitement de calcul de polygones de classes d'altitudes à partir de courbes de niveaux (orientées). Dans le cadre de l'algorithme, le transfert de l'altitude aux polygones gauches et droites de la courbe se fait par contruction de 2 zones tampons (étroites, 1 cm terrain) par courbe, une à droite et une à gauche (utilisant la fonctionnalité de niveau de licence ArcInfo qui le permet). Cela permet, par les centroïdes des zones tampons, de transférer l'altitude des courbes aux résultats de la polygonisation des courbes à droite et à gauche de celles-ci.

Cependant les calculs de zones tampons peuvent être longs sur des polylignes aussi riches en sommets que des courbes de niveaux. L'idée a été de résumer chaque courbe à son premier segment, puis de calculer les zones tampons sur ces segments, beaucoup plus rapidement pour un résultat logiquement équivalent.

La solution a été trouvée à l'aide de l'outil "Calculate Fields". Cet outil permet d'effectuer un calcul sur un champ, y compris le champ contenant la géométrie des entités (exactement comme la calculatrice d'ArcMap). L'expression de calcul peut être basée sur un code VB ou Python puisant dans les ressources quasi infinies d'ArcObjects.

La formule suivante permet de calculer une polyligne égale au premier segment de la polyligne en entrée (champ "[shape]") :

Dim pGeometry As IGeometry
Dim pPolyline As IPolyline
Dim pPointColl As IPointCollection
If (Not IsNull([Shape])) Then
Set pGeometry = [Shape]
If (Not pGeometry.IsEmpty) Then
Set pPointColl = pGeometry
Set pPolyline = New Polyline
pPolyline.FromPoint = pPointColl.Point(0)
pPolyline.ToPoint = pPointColl.Point(1)
End If
End If

Pour l'utiliser dans un modèle, vous devez en tant que paramètres de l'outil "calculate fields", entrer "SHAPE" dans "Field Name" (pour une raison obscure, le champ de géométrie n'est pas disponible dans la liste déroulante, mais une saisie manuelle fonctionne), choisir VB dans "Expression Type", coller le code ci-dessus dans "Code Block" et entrer "pPolyline" dans "Expression".

Tout cela est également possible dans un script Python ou manuellement dans la calculatrice d'ArcMap.
Il s'agit d'un exemple qui illustre la puissance de l'outil : tout le modèle géométrique d'ArcObjects est disponible pour effectuer des modifications ou calculs géométriques dans des géotraitements ArcGIS.

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article:

1 comments :

jerome a dit…

Le fied Calculator sur le champ SHAPE ne marche pas en 9.3 (juste en 9.2 ou 9.3.1) Et en 9.3.1 ça ne marche pas si on publie le geotraitement avec arcgis server.
Sinon c'est bien pratique.