Skip To Content

Détecter les incidents

Remarque :

Cette fonction n’est pas encore prise en charge dans Map Viewer Classic (anciennement Map Viewer). Elle sera disponible dans une version future de la nouvelle version deMap Viewer Map Viewer.

Détecter les incidents L’outil Détecter les incidents examine des entités séquentielles temporelles à l’aide d’une condition spécifiée. Les entités répondant à la condition spécifiée sont signalées comme des incidents. La couche résultante affiche les entités en entrée dans le même format que l’entrée, avec des champs supplémentaires indiquant si l’entité est un incident, le statut de l’incident, la durée de l’incident et un identificateur d’incident unique.

Diagramme de workflow

Diagramme du processus Détecter les incidents

Analyse avec les GeoAnalytics Tools

Vous pouvez exécuter des analyses avec GeoAnalytics Tools via un traitement distribué sur plusieurs cœurs et machines ArcGIS GeoAnalytics Server. GeoAnalytics Tools et les outils d’analyse d’entités standard de ArcGIS Enterprise proposent différents paramètres et fonctionnalités. Pour en savoir plus sur ces différences, reportez-vous à la rubrique Différences entre les outils d’analyse d’entités.

Terminologie

PériodeDescription

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. Par exemple, une ville peut disposer d’un parc de chasse-neige qui enregistrent leur position toutes les 10 minutes. L’ID du véhicule pourrait représenter les différentes 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 avoir le type de temps 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é analysée. Pendant l’analyse, toutes les entités sont analysées.

Exemples

Le contrôle de l’eau et des polluants est l’une des principales missions des capteurs. Chaque mesure de capteur inclut un horodatage du moment où elle a été effectuée, ainsi qu’une valeur pour les polluants examinés. Vous avez accès aux données relatives à l’eau dans votre région, avec les mesures et les horodatages correspondants sur chaque site. Il est intéressant d’examiner les capteurs qui signalent une présence accrue d’un polluant au cours des intervalles temporels précédents.

Remarques sur l'utilisation

L’outil Détecter les incidents est exécuté sur des tables, 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 non ponctuelles ne sont pas utilisées ni incluses dans les résultats en sortie.

Le ou les champs utilisés pour identifier les pistes sont renvoyés dans les résultats.

Vous pouvez spécifier un ou plusieurs champs pour identifier des pistes. Les pistes sont représentées par un ou plusieurs champs de piste. Par exemple, si les champs flightID et Destination sont utilisés comme identifiants de pistes, les entités suivantes [ID007, Solden] et [ID007, Tokyo] figureraient dans deux pistes distinctes, car les valeurs de leur champ Destination sont différentes.

Les conditions de début et de fin sont créées à l’aide d’une expression.

En savoir plus sur l’utilisation des expressions pour détecter les incidents avec GeoAnalytics Tools

L’application d’une condition de fin est facultative. Si vous appliquez uniquement une condition de début, l’incident commence lorsque cette condition est évaluée comme vraie et il se termine lorsqu’elle est évaluée comme fausse. Par exemple, si les valeurs d’une piste étaient [0, 10, 15, 20, 40, 10, 12, -2, -12] et que la condition de début était $feature["values"] > 15, les entités qui sont des incidents sont celles évaluées comme [True], à savoir [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 avez éventuellement appliqué la condition de fin $feature["values"] < 0, les résultats sont les suivants : [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ébut est remplie, puis chaque entité séquentielle est un incident jusqu’à ce que la condition de fin soit vraie. Ces exemples sont présentés dans le tableau suivant :

Position :123456789

Valeurs

0

10

15

20

40

10

12

-2

-12

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

False

False

False

True

True

True

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. Si, par exemple, vous définissez la limite temporelle comme étant un jour, à partir de 9 heures du matin à la date du 1 janvier 1990 chaque piste sera tronquée à 9 heures chaque jour et analysé au sein de ce segment. Ces intervalles temporels sont une manière d’accélérer le calcul, car cela génère de plus petites pistes à analyser. S’il est pertinent d’appliquer une division par une limite d’intervalle temporel récurrent dans le cadre de l’analyse, il est recommandé d’utiliser cette méthode pour le traitement Big Data.

Les entités en sortie renvoient les champs en entrée, ainsi que des champs supplémentaires :

  • 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 piste peut contenir plusieurs segments d’incidents. Par exemple, une piste contenant les valeurs [0, 10, 15, 20, 40, 10, 12, -2, -12] et la condition de début $feature["values"] > 15 produit les valeurs IncidentStatus [0: null, 10: null, 15: null, 20: Started, 40: OnGoing, 10: Ended, 12: null, -2: null, -12: null].
  • IncidentDuration: 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: date/heure auxquelles l’entité se produit.

Si l'option Use current map extent (Utiliser l'étendue courante de la carte) est sélectionnée, seules les entités qui sont visibles au sein de l'étendue courante de la carte seront analysées. Si l’option n’est pas sélectionnée, toutes les entités en entrée qui se trouvent dans la couche en entrée sont analysées, même si elles se trouvent en dehors de l’étendue actuelle de la carte.

Limitations

Les entrées doivent être des entités temporelles de type instant. Les entités non ponctuelles ne seront pas incluses dans la sortie.

Fonctionnement de Détecter les incidents

La section suivante décrit le fonctionnement de l’outil Détecter les incidents :

Calculs

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ébut, les suivantes sont évaluées jusqu’à ce que la condition de début 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 recommence depuis le début. Une piste peut comporter plusieurs segments d’incident. Par exemple, avec une piste contenant les valeurs [10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20] et la condition de début $feature["values"] > 20, il existe 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 n’est calculée que si l’entité a le statut Started, OnGoing et Ended. La durée d’une entité dont le statut est Started est toujours 0.

Exemple de ArcGIS API for Python

L’outil Détecter les incidents est disponible dans ArcGIS API for Python.

Cet exemple recherche à quel moment et à quel endroit les chasse-neige se déplaçaient à une vitesse inférieure à 10 miles par heure en calculant la moyenne d’une fenêtre mobile de cinq vitesses.


# Import the required ArcGIS API for Python modules
import arcgis
from arcgis.gis import GIS
from arcgis.geoanalytics import find_locations

# Connect to your ArcGIS Enterprise portal and confirm that GeoAnalytics is supported
portal = GIS("https://myportal.domain.com/portal", "gis_publisher", "my_password", verify_cert=False)
if not portal.geoanalytics.is_supported():
    print("Quitting, GeoAnalytics is not supported")
    exit(1)   

# Find the big data file share dataset you'll use for analysis
search_result = portal.content.search("", "Big Data File Share")

# Look through the search results for a big data file share with the matching name
bdfs_search = next(x for x in search_result if x.title == "bigDataFileShares_VehicleData")

# Look through the big data file share for snowplow track data
snowplows = next(x for x in bdfs_search.layers if x.properties.name == "Snowplow_tracks")

# Set the tool environment settings
arcgis.env.verbose = True
arcgis.env.defaultAggregations = True

# Run the Detect Incidents tool
output = find_locations.detect_incidents(input_layer = snowplows, 
    																																					track_fields = "plowID, dayOfYear", 
    																																					start_condition_expression = "Mean($track.field["speed"].window(-5, 0)) < 10", 
    																																					output_name = "Snow_Plow_Incidents")

# Visualize the tool results if you are running Python in a Jupyter Notebook
processed_map = portal.map('Fairbanks, AK', 10)
processed_map.add_layer(output)
processed_map

Outils semblables

Utilisez Détecter les incidents pour rechercher les entités qui sont des incidents. D'autres outils peuvent vous aider à résoudre des problèmes légèrement différents.

Outils d'analyse Map Viewer Classic

Pour reconstruire des entités temporelles en pistes, utilisez l’outil Reconstruire les pistes.

Pour calculer les valeurs d’un champ, utilisez l’outil Calculer un champ.

Outils d'analyse ArcGIS Desktop

L’outil Reconstruire les pistes est également disponible dans ArcGIS Pro.

L’outil Calculer un champ est disponible dans ArcGIS Pro.

L’outil Détecter les incidents est disponible dans ArcGIS Pro.

Pour exécuter l’outil à partir de ArcGIS Pro, votre portail actif doit être Enterprise version 10.6 ou ultérieure. Vous devez vous connecter via un compte détenteur des privilèges permettant d’effectuer une analyse d’entités GeoAnalytics.