Détecter les incidents (GeoAnalytics Desktop)

Synthèse

Crée une couche qui détecte les entités répondant à une condition donnée.

Illustration

Illustration de l’outil Détecter les incidents

Utilisation

  • La table suivante décrit la terminologie relative à l’outil Détecter les incidents :

    TermeDescription

    Parcours

    Séquence d’entités temporelles de type instant. Les entités sont identifiées comme faisant partie de la séquence par un champ d’identificateur de piste et elles obéissent à un classement temporel. Imaginons, par exemple, une ville disposant d’un parc de camions chasse-neige qui enregistrent leur position toutes les 10 minutes. L’identifiant du véhicule permet de représenter les pistes.

    Incident

    Entités qui répondent à une condition donnée.

    Instant

    Moment unique dans le temps représenté par une heure de début, mais pas d’heure de fin. Les entrées de l’outil Détecter les incidents doivent être de type temporel instant.

    Intervalle

    Durée représentée par une heure de début et une heure de fin.

    Entité d’intérêt

    Décrit l’entité à analyser. Pendant l’analyse, toutes les entités sont analysées.

  • Les incidents sont des entités qui répondent à une condition spécifiée.

  • L’outil Détecter les incidents génère une nouvelle sortie. Il ne modifie pas l’entrée.

  • L’outil Détecter les incidents peut s’exécuter sur des entités ponctuelles, linéaires ou surfaciques. La couche en entrée doit être temporelle et comporter des entités représentant un instant donné dans le temps.

  • Seules les entités en entrée qui disposent d’une entrée de temps sont utilisées. Les entités qui ne comportent pas d’entrée temporelle seront exclues.

  • Les pistes sont représentées par une combinaison unique de champs de piste. Si, par exemple, les champs flightID et Destination sont utilisés comme identifiants de pistes, les entités [ID007, Solden] et [ID007, Tokyo] figurent dans deux pistes distinctes puisque le champ Destination contient des valeurs différentes.

  • Les conditions sont créées à l’aide d’expressions Arcade. Une condition de départ est obligatoire et une condition de fin est facultative. Si vous appliquez seulement une condition de départ, l’incident commence lorsque la condition de départ est interprétée comme vraie et se termine lorsque la condition de départ est interprétée comme fausse. Par exemple, si les valeurs dans une piste sont [0, 10, 15, 20, 40, 10, 12, -2, -12] et que la condition de départ est $feature["values"] > 15, les entités qui sont des incidents sont celles dotées de la valeur [True] et sont [0: False, 10: False, 15: False, 20: True, 40: True, 10: False, 12: False, -2: False, -12: False], où seules les valeurs supérieures à 15 sont des incidents. Si vous choisissez d’appliquer la condition de fin $feature["values"] < 0, les résultats sont [0: False, 10: False, 15: False, 20: True, 40: True, 10: True, 12: True, -2: False, -12: False]. Dans cet exemple, l’incident commence lorsque la condition de départ est remplie, et chaque entité séquentielle est un incident jusqu’à ce que la condition de fin soit vraie. Ces exemples sont décrits dans le tableau suivant :

    Position123456789

    Valeur

    0

    10

    15

    20

    40

    10

    12

    -2

    -12

    Début : $feature["values"] > 15, pas de fin

    False

    False

    False

    True

    True

    False

    False

    False

    False

    Début : $feature["values"] > 15 et fin : $feature["values"] < 0

    False

    False

    False

    True

    True

    True

    True

    False

    False

    Appliquer des segments d'intervalle temporel permet d’effectuer un suivi à un intervalle défini. Par exemple, si vous définissez la limite d’intervalle temporel sur une journée, avec un début le 1er janvier 1990 à 9 h 00 (9:00 a.m.), chaque piste sera tronquée à 9 h 00 tous les jours. Cette fraction réduit le temps de calcul car elle crée des pistes plus petites pour l’analyse. Si le fractionnement selon une limite d’intervalle temporel récurrente est pertinent pour votre analyse, il est recommandé pour le traitement de Big Data.

  • Les conditions sont créées par les expressions Arcade et peuvent faire l’objet d’un suivi de gestion. Reportez-vous à Expressions Arcade dans les outils GeoAnalytics Desktop pour plus d’informations.

  • Une piste peut détenir plusieurs espaces de travail.

  • Les entités en sortie renverront les champs de l’entrée, ainsi que les champs supplémentaires suivants :

    • IncidentID : ID unique attribué à chaque entité qui est un incident.
    • IncidentStatus : champ de type chaîne représentant le statut d’un incident. La valeur est null si l’entité n’est pas un incident, Started si l’entité est le premier incident qui remplit la condition de début, OnGoing si l’entité est toujours un incident et Ended lorsqu’une entité n’est plus un incident. Une simple piste peut détenir plusieurs espaces de travail. Par exemple, une piste avec les valeurs [0, 10, 15, 20, 40, 10, 12, -2, -12] et la condition de départ $feature["values"] > 15 génère des valeurs IncidentStatus égales à [0: null, 10: null, 15: null, 20: Started, 40: OnGoing, 10: Ended, 12: null, -2: null, -12: null].
    • IncidentDuration : la durée, en millisecondes, d’un incident. Cette durée est calculée en faisant la différence entre l’entité d’intérêt et l’entité qui a démarré l’incident.
    • Instant_Datetime : l’heure à laquelle l’entité se produit.

  • Les entités sont classées de manière séquentielle dans le temps par piste. À partir de la première entité, la condition de début est évaluée jusqu’à ce qu’elle soit vraie. Lorsqu’une entité remplit la condition de départ, les entités suivantes sont vérifiées jusqu’à ce que la condition de départ soit fausse (si aucune condition de fin n’est spécifiée) ou jusqu’à ce que la condition de fin soit vraie (si une condition de fin est spécifiée). Une fois cette condition remplie, l’incident prend fin et le processus redémarre. Une piste peut comporter plusieurs segments d’incident. Par exemple, une piste de valeurs [10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20] et la condition de départ $feature["values"] > 20 génèrent deux segments d’incidents [10: null, 20: null, 30: Started, 40: OnGoing, 50: OnGoing, 10: Ended, 20: null, 30: Started, 40: OnGoing, 50: OnGoing, 10: Ended, 20: null].

  • La durée d’un incident est calculée en millisecondes (temps de l’entité moins le début d’un incident). La durée est calculée uniquement si l’entité a le statut Started, OnGoing, ou Ended. La durée d’une entité dont le statut est Started est toujours 0.

  • Vous pouvez améliorer les performances de l’outil Détecter les incidents en effectuant une ou plusieurs des opérations suivantes :

    • Définissez l’environnement de l’étendue de manière à analyser uniquement des données d’intérêt.
    • Seuls les entités incidents sont renvoyées en sortie.
    • Fractionnez les pistes à l’aide du paramètre Time Boundary Split (Limite de fraction temporelle).
    • Utilisez les données locales de l’environnement de l’analyse.

  • Cet outil de géotraitement est mis en œuvre par Spark. L’analyse est effectuée sur votre ordinateur de bureau en utilisant plusieurs cœurs en parallèle. Pour en savoir plus sur l’exécution de l’analyse, reportez-vous à la rubrique Remarques relatives aux outils GeoAnalytics Desktop.

  • Lorsque vous exécutez des outils GeoAnalytics Desktop, l’analyse est effectuée sur votre ordinateur de bureau. Pour des performances optimales, les données doivent être accessibles sur votre bureau. Si vous utilisez une couche d’entités hébergée, il est recommandé d'utiliser ArcGIS GeoAnalytics Server. Si vos données ne sont pas enregistrées en local, l’exécution des outils prendra plus de temps. Pour utiliser votre ArcGIS GeoAnalytics Server en vue d'une analyse, reportez-vous à la rubrique GeoAnalytics Tools.

Paramètres

ÉtiquetteExplicationType de données
Couche en entrée

Entités en entrée qui contiennent des incidents potentiels.

Table View
Jeu de données en sortie

Nouveau jeu de données en sortie qui contient des incidents.

Feature Class;Table
Champs de trace

Un champ ou des champs permettant d’identifier des pistes uniques.

Field
Condition de début

Condition utilisée pour identifier des incidents. Les expressions sont écrites en langage Arcade et peuvent inclure les opérateurs [+ - * / ] et plusieurs champs.

Si la couche est ajoutée à la carte, les filtres Fields (Champs) et Helpers (Assistants) permettent de construire une expression.

En savoir plus sur les expressions Détecter les incidents

Calculator Expression
Condition de fin
(Facultatif)

Condition utilisée pour mettre fin aux incidents. Si aucune condition de fin n’est spécifiée, les incidents se terminent lorsque la condition de départ n’est plus vraie.

Les expressions sont écrites dans Arcade et peuvent inclure des opérateurs et plusieurs champs.

Si la couche est ajoutée à la carte, les filtres Fields (Champs) et Helpers (Assistants) permettent de construire une expression.

Calculator Expression
Mode en sortie
(Facultatif)

Spécifie les entités à renvoyer.

  • Toutes les entitésToutes les entités en entrée sont renvoyées. Il s’agit de l’option par défaut.
  • IncidentsSeules les entités qui sont des incidents sont renvoyées.
String
Fraction de limite temporelle
(Facultatif)

Période dans laquelle fractionner les données en entrée pour analyse. Une limite temporelle vous permet d’analyser des valeurs dans une période temporelle définie. Par exemple, si vous utilisez une limite temporelle de 1 jour et que vous définissez la référence de limite temporelle au 1er janvier 1980, les traces seront fractionnées au début de chaque jour.

Time Unit
Référence de la limite temporelle
(Facultatif)

Référence temporelle dans laquelle fractionner les données en entrée pour analyse. Les limites temporelles seront créées pour toute la plage des données et il n’est pas nécessaire que la référence temporelle se situe au début. Si aucune référence temporelle n’est indiquée, le 1er janvier 1970 est utilisé.

Date

arcpy.geoanalytics.DetectIncidents(input_layer, output, track_fields, start_condition, {end_condition}, {output_mode}, {time_boundary_split}, {time_boundary_reference})
NomExplicationType de données
input_layer

Entités en entrée qui contiennent des incidents potentiels.

Table View
output

Nouveau jeu de données en sortie qui contient des incidents.

Feature Class;Table
track_fields
[track_fields,...]

Un champ ou des champs permettant d’identifier des pistes uniques.

Field
start_condition

Condition utilisée pour identifier des incidents. Les expressions sont écrites en langage Arcade et peuvent inclure les opérateurs [+ - * / ] et plusieurs champs.

Calculator Expression
end_condition
(Facultatif)

Condition utilisée pour mettre fin aux incidents. Si aucune condition de fin n’est spécifiée, les incidents se terminent lorsque la condition de départ n’est plus vraie.

Calculator Expression
output_mode
(Facultatif)

Spécifie les entités à renvoyer.

  • ALL_FEATURESToutes les entités en entrée sont renvoyées. Il s’agit de l’option par défaut.
  • INCIDENTSSeules les entités qui sont des incidents sont renvoyées.
String
time_boundary_split
(Facultatif)

Période dans laquelle fractionner les données en entrée pour analyse. Une limite temporelle vous permet d’analyser des valeurs dans une période temporelle définie. Par exemple, si vous utilisez une limite temporelle de 1 jour et que vous définissez la référence de limite temporelle au 1er janvier 1980, les traces seront fractionnées au début de chaque jour.

Time Unit
time_boundary_reference
(Facultatif)

Référence temporelle dans laquelle fractionner les données en entrée pour analyse. Les limites temporelles seront créées pour toute la plage des données et il n’est pas nécessaire que la référence temporelle se situe au début. Si aucune référence temporelle n’est indiquée, le 1er janvier 1970 est utilisé.

Date

Exemple de code

Exemple d’utilisation de la fonction DetectIncidents (script autonome)

Le script autonome ci-dessous illustre l’utilisation de la fonction DetectIncidents.

# Name: DetectIncidents.py
# Description: Detect incidents when wind speed is greater than 100 miles per hour

# Import system modules
import arcpy

arcpy.env.workspace = "C:/data/Weather.gdb"

# Enable time on the input features using an .lyrx file.
# To create the .lyrx file, add your layer to a map, open the layer properties 
# and enable time. Then right-click the layer and select Share As Layer File.
inputLyrx = r'C:\data\Hurricanes.lyrx'

# MakeFeatureLayer converts the .lyrx to features
hurricanesLayer = arcpy.management.MakeFeatureLayer(inputLyrx, "Hurricanes Layer")

# ApplySymbologyFromLayer sets the time using the .lyrx file definition
arcpy.management.ApplySymbologyFromLayer(hurricanesLayer, inputLyrx)

# Set local variables
out = "Hurricane_Incidents"
trackIdentifier = "STAGE"
startCondition = "$feature['WINDSPEED'] > 100"

# Run Detect Incidents
arcpy.gapro.DetectIncidents(hurricanesLayer, out, trackIdentifier, startCondition)