Expressions de calcul de champs

L’outil Calculer un champ permet d’utiliser des expressions Arcade pour déterminer les valeurs de champ. Vous pouvez effectuer des calculs simples ou complexes et les appliquer à tous les enregistrements. Ce calcul s'applique à chaque entité. Les sections suivantes proposent des exemples d’utilisation d’une expression de champ calculé. Les calculs ont lieu dès que l’analyse démarre sur le ArcGIS GeoAnalytics Server et ont pour effet de générer systématiquement une nouvelle couche.

Dans ArcGIS Enterprise 10.6 et ultérieur, les expressions sont mises en forme à l’aide d’Arcade. Avec Arcade, les noms de champ sont présentés sous la forme $feature["field name"] ou $feature.fieldname. La première option, $feature["field name"], est requise lorsqu’un nom de champ contient un espace. Tous les exemples proposés ci-après utilisent cette option.

Pour en savoir plus sur les expressions Arcade

Les expressions Arcade sont utilisées par les outils suivants dans GeoAnalytics Server :

Exemples d’opérations et de fonctions mathématiques

Les expressions peuvent traiter les nombres mathématiquement. Le tableau ci-dessous présente des exemples d’opérations disponibles.

En savoir plus sur les opérations mathématiques et les fonctions disponibles dans Arcade

OpérateurExplicationExemple

a + b

Renvoie la somme de a plus b.

fieldname contient la valeur 1.5

$feature["fieldname"] + 2.5

4.0

a - b

Renvoie la différence de a moins b.

fieldname contient la valeur 3.3

$feature["fieldname"]- 2.2

1,1

a * b

Renvoie le produit de a multiplié par b.

fieldname contient la valeur 2.0

$feature["fieldname"] * 2.2

4.4

a / b

Renvoie le quotient de a divisé par b.

fieldname contient la valeur 4.0

$feature["fieldname"] / 1.25

3.2

abs( a )

Renvoie la valeur absolue (positive) de a.

fieldname contient la valeur -1.5

abs($feature["fieldname"])

1.5

log ( a )

Renvoie le logarithme naturel (base E) de a.

fieldname contient la valeur 1

log($feature["fieldname"])

0

sin ( a )

Renvoie le sinus trigonométrique de a.

On suppose que l'entrée est un angle en radians.

fieldname contient la valeur 1.5707

sin($feature["fieldname"])

1

cos( a )

Renvoie le cosinus trigonométrique de a.

On suppose que l'entrée est un angle en radians.

fieldname contient la valeur 0

cos($feature["fieldname"])

1

tan( a )

Renvoie la tangente de a.

On suppose que l'entrée est un angle en radians.

fieldname contient la valeur 0

tan($feature["fieldname"])

0

sqrt( a )

Renvoie la racine carrée de a.

fieldname contient la valeur 9

sqrt($feature["fieldname"])

3

min( a, b )

Renvoie la valeur a ou b la plus faible.

fieldname contient les valeurs 1.5 et -3

min($feature["fieldname"], -3)

-3

max( a, b )

Renvoie la valeur la plus élevée entre a et b.

fieldname1 contient la valeur 1.5 et fieldname2 contient la valeur -3

max($feature["fieldname1"], $feature["fieldname2"])

1.5

constrain(<value>,<low>,<high>)

Renvoie la valeur en entrée si elle est comprise dans les limites de contrainte. Si la valeur est inférieure à la valeur basse, elle renvoie la valeur basse. Si la valeur est supérieure à la valeur élevée, elle renvoie la valeur élevée.

Exemple 1 : constrain( $feature["distance"], 0, 10)

Renvoie 0 si distance est inférieure à 0, 10 si distance est supérieure à 10 et distance dans les autres cas.

Exemple 2 : constrain($feature['Store dist'], 6, distance)

Renvoie 6 si Store dist est inférieure à 6, distance si Store dist est supérieure à distance et Store dist dans les autres cas.

Exemples de fonctions de texte

Les expressions Calculer un champ peuvent s’appliquer à du texte. Le tableau ci-dessous présente des exemples d’opérations disponibles. En savoir plus sur les fonctions de texte disponibles dans Arcade.

OpérateurExplicationExempleRésultat

concatenate( <valeurs>, <séparateur>)

Concatène les valeurs et renvoie une chaîne.

  • values : un groupe de valeurs de chaîne à concaténer.
  • separator (facultatif) : un séparateur à utiliser pour la concaténation si le paramètre values est une matrice, ou une chaîne à concaténer si une valeur unique est fournie pour le premier paramètre. Si elle n’est pas renseignée, elle restera vide.

fieldname contient la valeur GeoAnalytics

Concatenate ([$features["fieldname"], "is", "great!"], ' ')

GeoAnalytics est formidable !

find(<searchText>, <text>, <startPos>)

Trouve une chaîne dans une chaîne. Les caractères génériques ne sont pas pris en charge.

  • searchText : la sous-chaîne à rechercher.
  • text : le texte à rechercher.
  • startPos (en option) : l'index basé sur zéro de l’emplacement dans la chaîne dans laquelle effectuer une recherche.

fieldname1 contient la valeur 14NorthStreet et fieldname2 contient la valeur North

find($feature["fieldname2"], $feature["fieldname1"])

2

lower(<value>)

Passe un segment en minuscules.

  • value : le segment passe en minuscules.

fieldname contient la valeur GEOANALYTICS

lower($feature["fieldname"])

GeoAnalytics

Exemple de texte utilisant find et lower.

find(("north"), lower("146NorthStreet"))

Exemples de fonctions de date

Les expressions Calculer un champ peuvent s’appliquer à des dates. Le tableau ci-dessous présente des exemples d’opérations disponibles. Dans Arcade, les valeurs relatives aux mois, aux jours et aux heures sont comprises respectivement entre 0 (Janvier) et 11 (Décembre), entre le 1er et le 31, et entre 0 (12:00 am) et 23 (11:00 pm) heures, 0 et 59 minutes, 0 et 59 secondes et 0 et 999 millisecondes. Les dates Arcade renvoient des valeurs de temps dans l’emplacement de votre GeoAnalytics Server.

En savoir plus sur les fonctions de date disponibles dans Arcade

OpérateurExplicationExempleRésultat

date( <value>, <month>, <day>, <hour>, <minute>)

Décrit une valeur ou un ensemble de valeurs dans une chaîne de date.

  • value(En option) : le nombre de millisecondes depuis le 1er janvier 1970 UTC ou un nombre représentant une année. Si une année est spécifiée, le mois et le jour doivent être également renseignés dans les paramètres suivants. Cette valeur peut également être une chaîne de date ou une chaîne ISO 8601 à convertir en date.
  • month (en option) : le mois (0-11), où 0 correspond à janvier et 11, à décembre.
  • day (facultatif) : le jour du mois (1 à 31).
  • hour (facultatif) : l’heure de la journée (0 à 23).
  • minute (facultatif) : la minute de l’heure (0 à 59).
  • second (facultatif) : la seconde de la minute (0 à 59).
  • millisecond (facultatif) : la milliseconde de la seconde (0 à 999).

fieldname contient la valeur 1476987783555

Exemple 1 : Date($features["fieldname"])

Exemple 2 : Date(2017,0,14,0)

Exemple 3 : Date()

Exemple 1 : 20 oct 2016 11:23:03 am

Exemple 2 : 14 jan 2017 00:00:00 am

Exemple 3 : renvoie l'heure actuelle

DateDiff(<date1>, <date2>, <unités>)

Opère une soustraction entre deux dates et renvoie la différence dans les unités spécifiées.

  • date1 : la valeur de date à laquelle soustraire une seconde date.
  • date2 : la valeur de date à soustraire depuis la première date donnée.
  • startpos (facultatif) : les unités utilisées pour renvoyer la différence entre les deux dates données. Les unités prises en charge sont les milliseconds, seconds, minutes, hours, days, months, years. La valeur par défaut est milliseconds.

Exemple 1 : DateDiff(Date(2017,1,14,0), Date())

Exemple 2 : DateDiff(Date(2017,1,14,0), Date(), "Years")

Le résultat variera en fonction du moment où vous exécutez cette commande.

Exemple 1 : -20532129137

Exemple 2 : -0,6546783768647119

Year(<dateValue>)

Renvoie l'année de la date donnée.

  • value : valeur de date identifiant l’année.

Exemple 1 : fieldname est un champ de type Date dont la valeur est 09 Oct 2017 04:30:43 pm

Year($feature["fieldname"])

Exemple 2 : fieldname est un champ de type chaîne au format chaîne ISO 8601 dont la valeur est 2012-09-27

Exemple 1 : 2017

Exemple 2 : 2012

Exemples de fonctions logiques

Outre les expressions mathématiques simples, vous pouvez utiliser d'autres fonctions avancées pour appliquer des expressions de zone tampon.

FonctionExplicationExempleRésultat

iif(<condition>,<true value>,<false value>)

Renvoie une valeur si une condition est true et renvoie une autre valeur si la condition est false.

<true value> et <false value> peuvent être :

  • Un champ numérique. Si le nom du champ renferme un espace, utilisez des crochets.
  • Un nombre.
  • Une fonction.

iif($feature["field1"] > $feature["field2"], $feature["field1"], 0)

iif($feature["field1"] > $feature["field2"], iif($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0)

Renvoie field1 si field1 est supérieur à field2 et 0 dans les autres cas.

Renvoie le résultat de la deuxième fonction iif si field1 est supérieur à field2 et 0 dans les autres cas.

when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>)

Évalue une série d’expressions jusqu’à ce que l’une soit true.

  • expression : une expression.
  • result : résultat de l’expression. Il peut s’agir d’un nombre ou d’un champ.
  • default : une valeur facultative si les expressions ne font l’objet d’aucune correspondance.

when(($feature["field1"] + 10) > 1, 1,($feature["field2"] + 10) > 2 , 2, $feature["field3"])

Si field1 + 10 est supérieur à 1, renvoie 1. Sinon, vérifie si field2 + 10 est supérieur à 2. Renvoie 2 si c'est le cas. Si ce n'est pas le cas, renvoie field3.

decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> )

Évalue une expression et compare sa valeur aux paramètres suivants. Si l’expression correspond, elle renvoie la valeur du paramètre suivant. Si aucune correspondance n’est trouvée, le dernier paramètre peut être une valeur de renvoi par défaut.

  • conditional val : valeur conditionnelle. Il peut s’agir d’un champ ou d’une expression.
  • case : une valeur à comparer à la conditional val.
  • result : le résultat si le cas correspond à la conditional val.
  • defaultValue : une valeur facultative si aucune autre valeur n'est true.

decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0)

Compare l'égalité entre la valeur conditionnelle field1 + 3 et cas1 field1. Si la condition est true, renvoie 1. Si la condition est false, compare l'égalité entre field1 + 3 et field2. Si la condition est true, renvoie 2 ; sinon, renvoie 0.

Opérateurs conditionnels

Les instructions conditionnelles peuvent utiliser les opérateurs suivants :

OpérateurExplicationExempleRésultats

a > b

a < b

a est supérieur à b

a est inférieur à b

10 > 2

False

a >= b

a <= b

a est supérieur ou égal à b

a est inférieur ou égal à b

abs(-10) >= 10

True

a != b

a est différent de b

abs(-3) != -3

True

a == b

a est égal à b

abs(-5) == 5

True

<condition1> || <condition2>

La condition 1 ou la condition 2 est satisfaite.

(abs(-5) == 5) || (10 < 2)

True

<condition1> && <condition2>

La condition 1 et la condition 2 sont satisfaites.

(abs(-5) == 5) && (10 < 2)

False

Exemples d’expressions permettant de gérer les pistes

Certains Outils GeoAnalytics, tels que Détecter les incidents et Calculer un champ, peuvent utiliser des équations permettant de gérer les pistes dans Arcade. Dans l’outil Calculer un champ, les équations de gestion des pistes peuvent être utilisées lorsque la couche en entrée est temporelle, l’expression est dotée de propriétés de gestion de pistes, et un ou plusieurs champs sont utilisés pour identifier les pistes.

Utilisez l’expression de piste suivante dans ArcGIS Enterprise 10.6.

FonctionExplicationExempleRésultat

$track.field["fieldname"].history(<value1>)

Renvoie un groupe de valeurs dans le champ donné pour l'index de temps spécifié.

  • Un nombre positif renvoie une matrice allant de l’index donné à l’entité actuelle.
  • Un nombre négatif renvoie l’intervalle temporel actuel, et les valeurs d’intervalles temporels <value1> - 1 précédentes.

MyField comporte les valeurs classées séquentiellement suivantes : [10, 20, 30, 40, 50, 60, 70, 80]. La valeur 10 se trouve à l’index 0, et 80 à l’index 7. Les expressions sont évaluées à chaque index et les exemples soulignent l’index utilisés pour les exemples. n représente le nombre d’entités dans la séquence et k représente l’index évalué.

Exemple 1 : $track.field["MyField"].history(3))

Exemple 2 : $track.field["MyField"].history(-3)

Exemple 3 : mean($track.field["MyField"].history(-2))

Exemple 4 : $track.field["MyField"].history(-3)[0]

Lorsque l’exemple 1 est évalué à l’index k, il renvoie une matrice de valeurs à l’index 3 à k. Si vous effectuez l’évaluation à l’index 6 (70), une matrice des valeurs à l’index [3, 4, 5, 6] est renvoyée, de sorte que la matrice est de [40, 50, 60, 70].

L’exemple 2 renvoie une matrice de valeurs calculées comme suit : index k moins la valeur donnée moins 1 (k-2). Si cet exemple est évalué à l’index 6 (value = 70), les valeurs k-2, k-1 et k sont renvoyées [50, 60, 70].

L’exemple 3 renvoie la moyenne des valeurs à l’index k-1 et à l’index k. Si vous l’évaluez à l’index 4 (value = 50), vous trouvez la moyenne de value 40 (index 3) et value 50 (index 4), à savoir 45. Si vous évaluez cet exemple à l’index 7, le résultat est la moyenne de 70 et 80, à savoir 75.

L’exemple 4 renvoie le premier élément (index 0) de la matrice créée à l’exemple 2, c’est-à-dire 50.

$track.field["fieldname"].history(<value1>, <value2>)

Renvoie un groupe de valeurs en commençant par l’index1 (<value1>) jusqu’à l’index2 (<value2>).

MyField a des valeurs ordonnées séquentiellement de [10, 20, 30, 40, 50, 60, 70, 80]. 10 se trouve à l’index 0, et 80 à l’index 7. Pour cet exemple, les expressions sont évaluées à l’index 7 (80).

Exemple 1 : $track.field["MyField"].history(-3, -2))

Exemple 2 : $track.field["MyField"].history(-5, -2))

Exemple 1 : [60]

Exemple 2 : [40, 50, 60]

$track.time.start

Calcule l’heure de début d’une piste en millisecondes depuis la dernière époque.

Utilisation d’une piste commençant le 2 janvier 2017

$track.time.start

1483315200000

$track.time.duration

Calcule la durée d'une piste en millisecondes depuis le début jusqu’à l’intervalle temporel actuel.

Utilisation d’une piste commençant le 2 janvier 2017, la date actuelle étant le 4 janvier 2017.

$track.time.duration

172800000

$track.time.current

Calcule l’heure actuelle dans une piste.

Utilisation d’une entité survenant le 3 janvier 2017 à 9 h 00.

$track.time.current

1483434000000

$track.index

Renvoie l’index temporel de l’entité en cours de calcul.

Calculant cette valeur sur la première entité dans une piste.

$track.index

0

$track.T(<value>, "<units>")

Renvoie l’heure d’entité plus l’heure créée à l'aide de la <valeur> numérique et des <unités> données.

  • value : la valeur numérique à ajouter à l’heure de l’entité.
  • units : les unités de la valeur (<value>) numérique. Les unités prises en charge sont les millisecondes, secondes, minutes, heures, jours, mois et années. La valeur par défaut est en millisecondes.

Utilisation d’une entité en date du 2 janvier 2017 à 14 h.

Exemple 1 : $track.T(1, "hours")

Exemple 2 : $track.T(-2, "days")

Exemple 1 : renvoie le 2 janvier à 15 h : 1483369200000

Exemple 2 : renvoie le 31 décembre à 14 h : 1483192800000

$track.field["fieldname"].window(<value1>, <value2>)

Renvoie une matrice de valeurs dans le champ donné pour l’index de temps spécifié. La fonction de fenêtre vous permet d’avancer et de reculer dans le temps. L’expression est évaluée à chaque entité de la piste.

  • L’entité actuelle se trouve à l’index 0.
  • Les valeurs positives représentent des entités qui ont lieu dans le futur, après la valeur actuelle. Par exemple, la position 1 est la prochaine valeur dans la matrice.
  • Les nombres négatifs représentent des entités qui ont eu lieu dans le passé, avant l’entité précédente. Par exemple, -1 est la valeur précédente dans la matrice.

La fonction de fenêtre est disponible dans ArcGIS Enterprise version 10.6.1 ou ultérieure.

MyField comporte les valeurs classées séquentiellement suivantes : [10, 20, 30, 40, 50]. L’expression est évaluée au niveau de chaque entité de la trace. Les résultats sont renvoyés en intégrant l’entité de départ et en excluant l’entité de fin.

Exemple 1 : $track.field["MyField"].window(-1,2)

Exemple 2 : $track.field["MyField"].window(-2,0)[0]

Exemple 3 : $track.field["MyField"].window(0,3)[2]

Exemple 1 : lorsque l’expression est évaluée à chaque entité, la table présente les résultats suivants.

Entité évaluéeRésultat

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

Exemple 2 : si l’expression est évaluée à l’index 2 (valeur de 30), elle renvoie : 10.

Exemple 3 : si l’expression est évaluée à l’index 2 (valeur de 30), elle renvoie : 50.

$track.geometry.window(<value1>, <value2>)

Renvoie une matrice de valeurs représentant la géométrie pour l’index de temps spécifié. La fonction window permet d’avancer et de remonter dans le temps. L’expression est évaluée à chaque entité de la piste.

  • L’entité actuelle se trouve à l’index 0.
  • Les valeurs positives représentent des entités qui ont lieu dans le futur, après la valeur actuelle. Par exemple, la position 1 est la prochaine valeur dans la matrice.
  • Les nombres négatifs représentent des entités qui ont eu lieu dans le passé, avant l’entité précédente. Par exemple, -1 est la valeur précédente dans la matrice.

La fonction de fenêtre est disponible dans ArcGIS Enterprise version 10.6.1 ou ultérieure.

MyField comporte les valeurs classées séquentiellement suivantes : [10, 20, 30, 40, 50]. La géométrie des entités est [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] L’expression est évaluée à chaque entité de la piste. Les résultats sont renvoyés en intégrant l’entité de départ et en excluant l’entité de fin.

Exemple 1 : $track.geometry.window(-1,2)

Exemple 2 : $track.geometry.window(0,1)[0] sur un jeu de données polylignes

Exemple 3 : $track.geometry.window(0,1)[0] sur un jeu de données surfaciques

Exemple 4 : recherche de la valeur X du point précédent $track.geometry.window(-1,0)[0]["x"]

Exemple 1 : lorsque l’expression est évaluée à chaque entité, la table présente les résultats suivants.

Entité évaluéeRésultat

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

Exemple 2 : les polylignes sont renvoyées au format suivant : [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}]

Exemple 3 : les polygones sont renvoyés au format suivant : [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

Exemple 4 : l’expression est évaluée à l’index 2 (valeur de 30) : 2

$track.window(<value1>, <value2>)

Renvoie une matrice de valeurs représentant la géométrie et tous les attributs pour l’index de temps spécifié. La fonction de fenêtre vous permet d’avancer et de reculer dans le temps.

  • L’entité actuelle se trouve à l’index 0.
  • Les valeurs positives représentent des entités qui ont lieu dans le futur, après la valeur actuelle. Par exemple, la position 1 est la prochaine valeur dans la matrice.
  • Les nombres négatifs représentent des entités qui ont eu lieu dans le passé, avant l’entité précédente. Par exemple, -1 est la valeur précédente dans la matrice.

La fonction de fenêtre est disponible dans ArcGIS Enterprise version 10.6.1 ou ultérieure.

MyField comporte les valeurs classées séquentiellement suivantes : [10, 20, 30, 40, 50], en plus des champs objectID, globalID et instant_datetime. La géométrie des entités est [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. L’expression est évaluée au niveau de chaque entité de la trace. Les résultats sont renvoyés en intégrant l’entité de départ et en excluant l’entité de fin.

Exemple 1 : $track.window(-1,0)[0]

Exemple 2 : geometry($track.window(-1,0)[0]["x"]

Exemple 1 : lorsque l’expression est évaluée à chaque entité, la table présente les résultats suivants.

Entité évaluéeRésultat

10

20

[{"geometry": {x: 1, y: 1}},{"attributs": {"MonChamp" : 10, "NomPiste": "PisteExemple1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributs": {"MonChamp" : 20, "NomPiste":"PisteExemple1"}}]

40

[{"geometry": {x: null, y: null}},{"attributs": {"MonChamp" : 30, "NomPiste":"PisteExemple1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributs": {"MonChamp" : 40, "NomPiste":"PisteExemple1"}}]

Exemple 2 : l’expression est évaluée à l’index 2 (valeur de 30) : 2

Utilisez l’expression de piste suivante dans ArcGIS Enterprise 10.6.1 ou version ultérieure.

FonctionExplicationExempleRésultat

TrackStartTime()

Calcule l’heure de début d’une piste en millisecondes depuis la dernière époque.

Utilisation d’une piste commençant le 2 janvier 2017

TrackStartTime()

1483315200000

TrackDuration()

Calcule la durée d'une piste en millisecondes depuis le début jusqu’à l’intervalle temporel actuel.

Utilisation d’une piste commençant le 2 janvier 2017, la date actuelle étant le 4 janvier 2017.

TrackDuration()

172800000

TrackCurrentTime()

Calcule l’heure actuelle dans une piste.

Utilisation d’une entité survenant le 3 janvier 2017 à 9 h 00.

TrackCurrentTime()

1483434000000

TrackIndex

Renvoie l’index temporel de l’entité en cours de calcul.

Calculant cette valeur sur la première entité dans une piste.

TrackIndex

0

TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>)

Renvoie une matrice de valeurs dans le champ donné pour l’index de temps spécifié. La fonction de fenêtre vous permet d’avancer et de reculer dans le temps. L’expression est évaluée à chaque entité de la piste.

  • L’entité actuelle se trouve à l’index 0.
  • Les valeurs positives représentent des entités qui ont lieu dans le futur, après la valeur actuelle. Par exemple, la position 1 est la prochaine valeur dans la matrice.
  • Les nombres négatifs représentent des entités qui ont eu lieu dans le passé, avant l’entité précédente. Par exemple, -1 est la valeur précédente dans la matrice.

MyField comporte les valeurs classées séquentiellement suivantes : [10, 20, 30, 40, 50]. L’expression est évaluée au niveau de chaque entité de la trace. Les résultats sont renvoyés en intégrant l’entité de départ et en excluant l’entité de fin.

Exemple 1 : TrackFieldWindow("MyField,-1,2)

Exemple 2 : TrackFieldWindow("MyField,-2,0)[0]

Exemple 3 : TrackFieldWindow("MyField,0,3)[2]

Exemple 1 : lorsque l’expression est évaluée à chaque entité, la table présente les résultats suivants.

Entité évaluéeRésultat

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

Exemple 2 : si l’expression est évaluée à l’index 2 (valeur de 30), elle renvoie : 10.

Exemple 3 : si l’expression est évaluée à l’index 2 (valeur de 30), elle renvoie : 50.

TrackGeometryWindow(<startIndex>, <endIndex>)

Renvoie une matrice de valeurs représentant la géométrie pour l’index de temps spécifié. La fonction window permet d’avancer et de remonter dans le temps. L’expression est évaluée à chaque entité de la piste.

  • L’entité actuelle se trouve à l’index 0.
  • Les valeurs positives représentent des entités qui ont lieu dans le futur, après la valeur actuelle. Par exemple, la position 1 est la prochaine valeur dans la matrice.
  • Les nombres négatifs représentent des entités qui ont eu lieu dans le passé, avant l’entité précédente. Par exemple, -1 est la valeur précédente dans la matrice.

MyField comporte les valeurs classées séquentiellement suivantes : [10, 20, 30, 40, 50]. La géométrie des entités est [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] L’expression est évaluée à chaque entité de la piste. Les résultats sont renvoyés en intégrant l’entité de départ et en excluant l’entité de fin.

Exemple 1 : TrackGeometryWindow(-1,2)

Exemple 2 : TrackGeometryWindow(0,1)[0] sur un jeu de données polylignes

Exemple 3 : TrackGeometryWindow(0,1)[0] sur un jeu de données surfaciques

Exemple 4 : recherche de la valeur X du point précédent TrackGeometryWindow(-1,0)[0]["x"]

Exemple 1 : lorsque l’expression est évaluée à chaque entité, la table présente les résultats suivants.

Entité évaluéeRésultat

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

Exemple 2 : les polylignes sont renvoyées au format suivant : [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}]

Exemple 3 : les polygones sont renvoyés au format suivant : [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

Exemple 4 : l’expression est évaluée à l’index 2 (valeur de 30) : 2

TrackWindow(<value1>, <value2>)

Renvoie une matrice de valeurs représentant la géométrie et tous les attributs pour l’index de temps spécifié. La fonction de fenêtre vous permet d’avancer et de reculer dans le temps.

  • L’entité actuelle se trouve à l’index 0.
  • Les valeurs positives représentent des entités qui ont lieu dans le futur, après la valeur actuelle. Par exemple, la position 1 est la prochaine valeur dans la matrice.
  • Les nombres négatifs représentent des entités qui ont eu lieu dans le passé, avant l’entité précédente. Par exemple, -1 est la valeur précédente dans la matrice.

MyField comporte les valeurs classées séquentiellement suivantes : [10, 20, 30, 40, 50], en plus des champs objectID, globalID et instant_datetime. La géométrie des entités est [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. L’expression est évaluée au niveau de chaque entité de la trace. Les résultats sont renvoyés en intégrant l’entité de départ et en excluant l’entité de fin.

Exemple 1 : TrackWindow(-1,0)[0]

Exemple 2 : geometry(TrackWindow(-1,0)[0]["x"]

Exemple 1 : lorsque l’expression est évaluée à chaque entité, la table présente les résultats suivants.

Entité évaluéeRésultat

10

20

[{"geometry": {x: 1, y: 1}},{"attributs": {"MonChamp" : 10, "NomPiste": "PisteExemple1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributs": {"MonChamp" : 20, "NomPiste":"PisteExemple1"}}]

40

[{"geometry": {x: null, y: null}},{"attributs": {"MonChamp" : 30, "NomPiste":"PisteExemple1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributs": {"MonChamp" : 40, "NomPiste":"PisteExemple1"}}]

Exemple 2 : l’expression est évaluée à l’index 2 (valeur de 30) : 2

Utilisez les expressions de piste suivantes pour calculer la distance, la vitesse et l’accélération sur les pistes ArcGIS Enterprise 10.9 ou version ultérieure.

Tous les calculs de distance sont exprimés en mètres, la vitesse est exprimée en mètres par seconde et l’accélération, en mètres par seconde carré. Les distances sont mesurées à l’aide des distances géodésiques.

FonctionExplication

TrackCurrentDistance()

Somme des distances parcourues entre les observations de la première observation à l’observation actuelle.

TrackDistanceAt(value)

Somme des distances parcourues entre les observations de la première observation à l’observation le service actuelle, plus la valeur donnée.

TrackDistanceWindow(value1, value2)

Distances entre la première valeur (incluse) et la dernière valeur (exclue) dans une fenêtre sur l’observation actuelle (0).

TrackCurrentSpeed()

Vitesse entre l’observation précédente et l’observation actuelle.

TrackSpeedAt(value1)

Vitesse au niveau de l’observation par rapport à l’observation actuelle. Par exemple, à la valeur 2, il s’agit de la vitesse au niveau de l’observation, deux observations après l’observation actuelle.

TrackSpeedWindow(value1, value2)

Valeurs de vitesse entre la première valeur (incluse) et la dernière valeur (exclue) dans une fenêtre autour de l’observation actuelle (0).

TrackCurrentAcceleration()

Accélération entre l’observation précédente et l’observation actuelle.

TrackAccelerationAt(value1)

Accélération au niveau de l’observation par rapport à l’observation actuelle.

TrackAccelerationWindow(value1, value2)

Valeurs d’accélération entre la première valeur (incluse) et la dernière valeur (exclue) dans une fenêtre autour de l’observation actuelle (0).

Les exemples de calcul de distance, de vitesse et d’accélération utilisent les exemples de l’image ci-après.

Image d’exemple de piste avec six points

FonctionExemple de résultat

TrackCurrentDistance()

Identifiant de pointRésultat (mètres)

P1

0

P2

60

P3

80 + 60 = 140

P4

30 + 80 + 60 = 170

P5

35 + 30 + 80 + 60 = 205

P6

25 + 35 + 30 + 80 + 60 = 230

TrackDistanceAt(2)

Identifiant de pointRésultat (mètres)

P1

0 + 80 + 60 = 140

P2

30 + 80 + 60 = 170

P3

35 + 30 + 80 + 60 = 205

P4

25 + 35 + 30 + 80 + 60 = 230

P5

nul

P6

nul

TrackDistanceWindow(-1, 2)

Identifiant de pointRésultat (mètres)

P1

[0,60]

P2

[0, 60, 140]

P3

[60, 140, 170]

P4

[140, 170, 205]

P5

[170, 205, 230]

P6

[205, 230]

TrackCurrentSpeed()

Identifiant de pointRésultat (mètres/seconde)

P1

0

P2

60/60

1

P3

80/60

1,33

P4

30/60

0,5

P5

35/60

0.5833

P6

25/60

0.4167

TrackSpeedAt(2)

Identifiant de pointRésultat (mètres/seconde)

P1

80/60

1,33

P2

30/60

0,5

P3

35/60

0.5833

P4

25/60

0.4167

P5

nul

P6

nul

TrackSpeedWindow(-1, 2)

Identifiant de pointRésultat (mètres/seconde)

P1

[0, 1]

P2

[0, 1, 1,3]

P3

[1, 1,3, 0,5]

P4

[1,3, 0,5, 0,583]

P5

[0,5, 0,583, -0,4167]

P6

[0,583, -0,4167]

TrackCurrentAcceleration()

Identifiant de pointRésultat (mètres/seconde²)

P1

0

P2

0,0167

P3

0,0056

P4

-0.0014

P5

0.0014

P6

-0.0028

TrackAccelerationAt(2)

Identifiant de pointRésultat (mètres/seconde²)

P1

0,0056

P2

-0.0014

P3

0.0014

P4

-0.0028

P5

nul

P6

nul

TrackAccelerationWindow(-1, 2)

Identifiant de pointRésultat (mètres/seconde²)

P1

[0, 0,0167]

P2

[0, 0,0167, 0,0056]

P3

[0,0167, 0,0056 , -0,0014]

P4

[0,0056 , -0,0014, 0,0014]

P5

[-0,0014, 0,0014, -0,0028]

P6

[0,0014, -0,0028]

Rubriques connexes