Créer un cube spatio-temporel à partir d'emplacements définis (Exploration des modèles spatio-temporels)

Synthèse

Structure des données de panel ou de station (localisations définies où la géographie ne change pas, mais où les attributs évoluent au fil du temps) dans un format de données netCDF en créant des groupes spatio-temporels. Pour tous les emplacements, l'évolution des variables ou des champs de récapitulation est évaluée.

En savoir plus sur le fonctionnement de l’outil Créer un cube spatio-temporel à partir de localisations définies

Illustration

Illustration de l’outil Créer un cube spatio-temporel à partir de localisations définies

Utilisation

  • La structure de données créée par l’outil peut être considérée comme un cube 3D constitué de groupes spatio-temporels, les dimensions x et y représentant l’espace et la dimension t représentant le temps.

    Groupes spatio-temporels dans un cube 3D

  • Chaque groupe possède une position fixe dans l'espace (emplacement x,y si les entrées sont des points et un ensemble fixe de sommets si les entrées sont des emplacements surfaciques) et dans le temps (t). Les groupes couvrant la même surface de localisations définies (x,y ou sommets) partagent le même ID de localisation. Les bins englobant la même durée partagent le même ID d'intervalle temporel.

    Emplacements dans le cube spatio-temporel

  • Chaque groupe du cube spatio-temporel possède des valeurs LOCATION_ID, time_step_ID et COUNT, ainsi que les valeurs de paramètre Variables ou Champs de récapitulation qui ont été incluses lors de la création du cube. Les groupes associés à la même localisation physique partagent le même ID de localisation et constituent ensemble une série chronologique. Les groupes associés au même intervalle temporel partagent le même ID d’intervalle temporel et constituent ensemble une tranche temporelle.

  • Les entités en entrée peuvent être des points ou des polygones, et doivent représenter des localisations définies ou fixes avec des attributs associés qui ont été collectés au fil du temps. Ce type de données est communément nommé données de panel ou de station. Le champ contenant l’horodatage de l’événement doit être de type date.

    Remarque :

    Si les entités en entrée sont stockées dans une géodatabase fichier et contiennent des courbes vraies (stockées sous forme d’arcs et non avec des sommets), les formes surfaciques sont déformées lorsqu’elles sont stockées dans le cube spatio-temporel. Pour savoir si les entités en entrée contiennent des courbes vraies, exécutez l’outil Vérifier les géométries avec l’option OGC pour le paramètre Méthode de validation. Si un message d’erreur indiquant que l’option sélectionnée ne prend pas en charge les segments non linéaires apparaît, des courbes vraies sont présentes dans le jeu de données ; elles peuvent être éliminées et remplacées par des sommets via l’outil Densifier avec le paramètre Méthode de densification défini sur l’option Angle avant la création du cube spatio-temporel.

  • Les entités en entrée peuvent être des formes répétées contenues dans la même classe d’entités ou dans un ensemble d’entités avec une table associée incluant les attributs enregistrés au fil du temps.

  • L’outil échoue si les paramètres spécifiés génèrent un cube comportant plus de 2 milliards de groupes.

  • Cet outil nécessite des données projetées pour mesurer précisément les distances.

  • Si le paramètre Agrégation temporelle est sélectionné, le cube spatio-temporel obtenu contient la valeur numérique de chaque groupe représentant le nombre d’événements qui ont eu lieu à la localisation associée dans l’intervalle temporel associé.

  • La sortie de cet outil est une représentation netCDF des entités en entrée, ainsi que des messages récapitulant les caractéristiques du cube. Les messages sont écrits en bas de la fenêtre Géotraitement au cours de l’exécution de l’outil. Pour accéder aux messages, survolez la barre de progression et cliquez sur le bouton de menu contextuel bouton Menu contextuel ou développez la section des messages dans la fenêtre Géotraitement. Vous pouvez également accéder aux messages d’une précédente exécution de l’outil via l’historique de géotraitement. Vous pouvez utiliser le fichier netCDF en entrée dans d’autres outils, comme Analyse de points chauds émergents ou Analyse de valeurs aberrantes locales. Reportez-vous à la rubrique Visualiser le cube spatio-temporel pour savoir comment afficher le contenu d’un cube.

  • Indiquez un champ de type date pour le paramètre Champ temporel. Si l’entrée est constituée de formes répétées, ce champ doit contenir l’horodatage associé à chaque entité. Si une valeur de paramètre Table associée est indiquée, ce champ est l’horodatage associé à chaque enregistrement dans la table. S’il s’agit d’un champ à haute précision (contenant des valeurs en millisecondes), l’horodatage de chaque groupe spatio-temporel n’inclura que des secondes, et les millisecondes seront ignorées.

  • Le paramètre Intervalle temporel définit le mode de partitionnement de la période couverte par les données. Si le paramètre Agrégation temporelle est désactivé, définissez le paramètre Intervalle temporel sur la structure existante des données. Par exemple, si vous possédez des données de recensement qui ont été collectées tous les cinq ans, l’entrée doit être 5 ans. Cochez le paramètre Agrégation temporelle si vous souhaitez effectuer une agrégation temporelle. Par exemple, si vous disposez de données de capteur qui ont été enregistrées toutes les cinq minutes, vous pouvez les agréger avec un jour d’intervalle. Les intervalles temporels sont toujours des durées fixes et l’outil requiert un minimum de dix phases.

    Remarque :

    Plusieurs unités de temps apparaissent dans la liste déroulante du paramètre Intervalle temporel ; l’outil ne prend cependant en charge que les années, les mois, les semaines, les jours, les heures, les minutes et les secondes.

  • Si le cube spatio-temporel ne peut pas être créé, il est possible que l’outil ne soit pas parvenu à structurer les données en entrée fournies en 10 intervalles temporels. Si un message d’erreur s’affiche, examinez les horodatages de l’entrée pour vérifier qu’ils incluent une plage de valeurs (au moins dix). La plage de valeurs doit couvrir au moins 10 secondes, car il s’agit du plus petit incrément temporel accepté par l’outil. 10 intervalles temporels sont requis par la statistique Mann-Kendall.

  • Le paramètre Référence temporelle peut être une valeur de date et d’heure, ou simplement une valeur de date, mais pas uniquement une valeur d’heure. Le format attendu est fonction des paramètres régionaux de l’ordinateur.

  • L'analyse de tendance réalisée sur les variables agrégées ou les valeurs de champ de récapitulation repose sur la statistique de Mann-Kendall.

  • Cet outil permet les opérations statistiques suivantes pour l’agrégation des attributs : somme, moyenne, minimum, maximum, écart type et médiane.

  • Les valeurs nulles présentes dans les enregistrements des champs de récapitulation entraînent l’exclusion de ces entités du cube en sortie. Si des valeurs nulles sont présentes dans les entités en entrée, il est recommandé d’exécuter d’abord l’outil Remplir les valeurs manquantes. Si, après l’exécution de l’outil Remplir les valeurs manquantes, des valeurs nulles sont toujours présentes et que le fait de disposer du total des points dans chaque groupe fait partie de votre stratégie d’analyse, vous pouvez créer des cubes distincts : un pour le total (sans champs de récapitulation) et un pour les champs de récapitulation. Si l’ensemble de valeurs nulles est différent pour chaque champ de récapitulation, vous pouvez également créer un cube distinct pour chaque champ de récapitulation.

  • Lorsque vous remplissez des groupes vides avec des voisins spatiaux, l’outil calcule des estimations en fonction des 8 voisins les plus proches. Au minimum 4 de ces voisins spatiaux doivent comporter des valeurs pour remplir le groupe vide à l'aide de cette option.

  • Lorsque vous remplissez des groupes vides avec des voisins spatio-temporels, l’outil calcule des estimations en fonction des 8 voisins les plus proches. De plus, des voisins temporels sont utilisés pour chacun des groupes identifiés comme étant des voisins spatiaux lorsque vous vous déplacez vers l’avant et vers l’arrière dans l’intervalle temporel. Un minimum de 13 voisins spatio-temporels est nécessaire pour remplir le groupe vide à l'aide de cette option.

  • Lorsque vous remplissez des groupes vides avec une tendance temporelle, les groupes des deux premières et des deux dernières périodes temporelles à une localisation donnée doivent comporter des valeurs de telle sorte que les valeurs puissent être interpolées à d’autres périodes temporelles pour cette localisation.

  • La méthode de remplissage avec tendance temporelle utilise la méthode de spline univariée interpolée du paquetage d’interpolation de SciPy.

  • Cet outil peut tirer parti des performances accrues disponibles dans les systèmes équipés de plusieurs processeurs (ou de processeurs multicœur). L’outil s’exécute par défaut avec 50 % des processeurs disponibles. Toutefois, le nombre de processeurs peut être augmenté ou réduit à l’aide de l’environnement Facteur de traitement parallèle. L’augmentation de la vitesse de traitement est davantage visible lors de la création de cubes spatio-temporels volumineux.

Paramètres

ÉtiquetteExplicationType de données
Entités en entrée

Classe d’entités ponctuelles ou surfaciques en entrée qui sera convertie en cube spatio-temporel.

Feature Layer
Cube spatio-temporel en sortie

Le cube de données netCDF en sortie qui sera créé.

File
ID d'emplacement

Champ de type entier ou texte contenant le numéro d’identification de chaque localisation unique.

Field
Agrégation temporelle

Indique si les données sont agrégées temporellement.

  • Coché - Le cube spatio-temporel est créé avec la structure temporelle existante des entités en entrée. Par exemple, si vous possédez des données annuelles et que vous souhaitez créer un cube avec un intervalle temporel annuel. Il s’agit de l’option par défaut.
  • Coché - Le cube spatio-temporel agrège temporellement les entités en fonction de l’intervalle temporel indiqué. Par exemple, si les données ont été collectées quotidiennement et que vous souhaitez créer un cube avec un intervalle temporel hebdomadaire.
Boolean
Champ temporel

Champ contenant l’horodatage de chaque enregistrement du jeu de données. Ce champ doit être de type date.

Field
Intervalle temporel
(Facultatif)

Nombre de secondes, minutes, heures, jours, semaines ou années qui représenteront une seule phase. Voici un exemple d'entrées valides pour ce paramètre : 1 semaine, 13 jours ou 1 mois.

Si vous n’appliquez pas l’agrégation temporelle (paramètre Agrégation temporelle décoché), définissez ce paramètre sur la structure temporelle existante des données.

Si vous appliquez l’agrégation temporelle (paramètre Agrégation temporelle coché), définissez ce paramètre sur l’intervalle temporel que vous souhaitez créer. Toutes les entités au sein du même intervalle temporel sont agrégées.

Time Unit
Alignement de l’intervalle temporel
(Facultatif)

Définit l’alignement de la structure du cube en fonction d’un intervalle temporel donné.

  • Heure de finLes intervalles temporels sont alignés sur le dernier événement temporel et agrégés en arrière dans le temps. Il s’agit de l’option par défaut.
  • Heure de débutLes intervalles temporels sont alignés sur le premier événement temporel et agrégés en avant dans le temps.
  • Référence temporelleLes intervalles temporels s’alignent sur la date et l’heure spécifiées. Si la valeur d’horodatage de tous les points des entités en entrée est supérieure à la référence temporelle spécifiée (ou si elle correspond exactement à l’heure de début des entités en entrée), l’intervalle temporel commence par cette référence temporelle et procède à l’agrégation vers l’avenir (comme avec un alignement de type heure de début). Si la valeur d’horodatage de tous les points des entités en entrée est inférieure à la référence temporelle spécifiée (ou si elle correspond exactement à l’heure de fin des entités en entrée), l’intervalle temporel termine par cette référence temporelle et procède à l’agrégation à rebours (comme avec un alignement de type heure de fin). Si la référence temporelle indiquée se trouve au milieu de l’étendue temporelle des données, un intervalle temporel est créé ; il se termine par la référence temporelle spécifiée (comme avec un alignement de type heure de fin). Des intervalles supplémentaires sont créés avant et après la référence temporelle jusqu’à ce que l’étendue temporelle complète des données soit couverte.
String
Référence temporelle
(Facultatif)

Date et heure à utiliser pour aligner les intervalles temporels. Si vous souhaitez regrouper les données de façon hebdomadaire du lundi au dimanche, par exemple, définissez l’heure de référence du dimanche à minuit pour garantir la séparation des groupes entre le dimanche et le lundi à minuit.

Date
Variables
(Facultatif)

Le champ numérique contenant les valeurs attributaires qui seront importées dans le cube spatio-temporel.

Les types de remplissage disponibles sont les suivants :

  • DROP_LOCATIONS - Les localisations pour lesquelles il manque des données de variables sont supprimées du cube spatio-temporel en sortie.
  • ZEROS - Les groupes vides sont remplis avec des zéros.
  • SPATIAL_NEIGHBORS - Les groupes vides sont remplis avec la valeur moyenne des voisins spatiaux.
  • SPACE_TIME_NEIGHBORS - Les groupes vides sont remplis avec la valeur moyenne des voisins spatio-temporels.
  • TEMPORAL_TREND - Les groupes vides sont remplis à l’aide d’un algorithme de spline univariée interpolée.

Remarque :

Les valeurs nulles présentes dans des enregistrements de variables génèrent un groupe vide. Si des valeurs nulles sont présentes dans les entités en entrée, il est recommandé d’exécuter d’abord l’outil Remplir les valeurs manquantes.

Value Table
Champs de récapitulation
(Facultatif)

Champ numérique contenant les valeurs attributaires qui permettent de calculer les statistiques indiquées lors de l’agrégation dans un cube spatio-temporel. Vous pouvez spécifier plusieurs combinaisons de statistiques et de champs. Les valeurs nulles présentes dans les champs spécifiés entraînent l’exclusion de cette entité du cube en sortie. Si des valeurs nulles sont présentes dans les entités en entrée, il est recommandé d’exécuter l’outil Remplir les valeurs manquantes avant de créer un cube spatio-temporel.

Les types de statistiques disponibles sont les suivants :

  • SUM : la valeur totale du champ spécifié au sein de chaque groupe sera calculée.
  • MEAN - La moyenne du champ spécifié au sein de chaque groupe est calculée.
  • MIN - La valeur la plus faible parmi tous les enregistrements du champ spécifié au sein de chaque groupe est identifiée.
  • MAX - La valeur la plus élevée parmi tous les enregistrements du champ spécifié au sein de chaque groupe est identifiée.
  • STD : l’écart type des valeurs du champ spécifié au sein de chaque groupe sera calculé.
  • MEDIAN : la valeur centrale triée de tous les enregistrements du champ spécifié au sein de chaque groupe sera calculée.

Les types de remplissage disponibles sont les suivants :

  • ZEROS - Les groupes vides sont remplis avec des zéros.
  • SPATIAL_NEIGHBORS - Les groupes vides sont remplis avec la valeur moyenne des voisins spatiaux.
  • SPACE_TIME_NEIGHBORS - Les groupes vides sont remplis avec la valeur moyenne des voisins spatio-temporels.
  • TEMPORAL_TREND - Les groupes vides sont remplis à l’aide d’un algorithme de spline univariée interpolée.

Remarque :

Les valeurs nulles présentes dans les enregistrements des champs de récapitulation entraînent l’exclusion de ces entités du cube en sortie. Si des valeurs nulles sont présentes dans les entités en entrée, il est recommandé d’exécuter d’abord l’outil Remplir les valeurs manquantes. Si, après l’exécution de l’outil Remplir les valeurs manquantes, des valeurs nulles sont toujours présentes et que le fait de disposer du total des points dans chaque groupe fait partie de votre stratégie d’analyse, vous pouvez créer des cubes distincts : un pour le total (sans champs de récapitulation) et un pour les champs de récapitulation. Si l’ensemble de valeurs nulles est différent pour chaque champ de récapitulation, vous pouvez créer un cube distinct pour chaque champ de récapitulation.

Value Table
Table associée
(Facultatif)

La table ou la vue tabulaire à associer dans les entités en entrée.

Table View
ID d'emplacement associé
(Facultatif)

Champ de type entier ou texte dans la table associée qui contient l’ID de localisation sur lequel la relation est basée.

Field

arcpy.stpm.CreateSpaceTimeCubeDefinedLocations(in_features, output_cube, location_id, temporal_aggregation, time_field, {time_step_interval}, {time_step_alignment}, {reference_time}, {variables}, {summary_fields}, {in_related_table}, {related_location_id})
NomExplicationType de données
in_features

Classe d’entités ponctuelles ou surfaciques en entrée qui sera convertie en cube spatio-temporel.

Feature Layer
output_cube

Le cube de données netCDF en sortie qui sera créé.

File
location_id

Champ de type entier ou texte contenant le numéro d’identification de chaque localisation unique.

Field
temporal_aggregation
  • APPLY_TEMPORAL_AGGREGATIONLe cube spatio-temporel agrège temporellement les entités en fonction de l’intervalle temporel indiqué. Par exemple, si les données ont été collectées quotidiennement et que vous souhaitez créer un cube avec un intervalle temporel hebdomadaire.
  • NO_TEMPORAL_AGGREGATIONLe cube spatio-temporel est créé avec la structure temporelle existante des entités en entrée. Par exemple, si vous possédez des données annuelles et que vous souhaitez créer un cube avec un intervalle temporel annuel. Il s’agit de l’option par défaut.
Boolean
time_field

Champ contenant l’horodatage de chaque enregistrement du jeu de données. Ce champ doit être de type date.

Field
time_step_interval
(Facultatif)

Nombre de secondes, minutes, heures, jours, semaines ou années qui représenteront une seule phase. Voici un exemple d'entrées valides pour ce paramètre : 1 semaine, 13 jours ou 1 mois.

Si vous n’appliquez pas l’agrégation temporelle (temporal_aggregation = "NO TEMPORAL_AGGREGATION"), définissez ce paramètre sur la structure temporelle existante des données.

Si vous appliquez l’agrégation temporelle (temporal_aggregation = "APPLY TEMPORAL_AGGREGATION"), définissez ce paramètre sur l’intervalle temporel que vous souhaitez créer. Toutes les entités au sein du même intervalle temporel sont agrégées.

Time Unit
time_step_alignment
(Facultatif)

Définit l’alignement de la structure du cube en fonction d’une valeur time_step_interval donnée.

  • END_TIMELes intervalles temporels sont alignés sur le dernier événement temporel et agrégés en arrière dans le temps. Il s’agit de l’option par défaut.
  • START_TIMELes intervalles temporels sont alignés sur le premier événement temporel et agrégés en avant dans le temps.
  • REFERENCE_TIMELes intervalles temporels s’alignent sur la date et l’heure spécifiées. Si la valeur d’horodatage de tous les points des entités en entrée est supérieure à la référence temporelle spécifiée (ou si elle correspond exactement à l’heure de début des entités en entrée), l’intervalle temporel commence par cette référence temporelle et procède à l’agrégation vers l’avenir (comme avec un alignement de type heure de début). Si la valeur d’horodatage de tous les points des entités en entrée est inférieure à la référence temporelle spécifiée (ou si elle correspond exactement à l’heure de fin des entités en entrée), l’intervalle temporel termine par cette référence temporelle et procède à l’agrégation à rebours (comme avec un alignement de type heure de fin). Si la référence temporelle indiquée se trouve au milieu de l’étendue temporelle des données, un intervalle temporel est créé ; il se termine par la référence temporelle spécifiée (comme avec un alignement de type heure de fin). Des intervalles supplémentaires sont créés avant et après la référence temporelle jusqu’à ce que l’étendue temporelle complète des données soit couverte.
String
reference_time
(Facultatif)

Date et heure à utiliser pour aligner les intervalles temporels. Si vous souhaitez regrouper les données de façon hebdomadaire du lundi au dimanche, par exemple, définissez l’heure de référence du dimanche à minuit pour garantir la séparation des groupes entre le dimanche et le lundi à minuit.

Date
variables
[[Field, Fill Empty Bins with],...]
(Facultatif)

Le champ numérique contenant les valeurs attributaires qui seront importées dans le cube spatio-temporel.

Les types de remplissage disponibles sont les suivants :

  • DROP_LOCATIONS - Les localisations pour lesquelles il manque des données de variables sont supprimées du cube spatio-temporel en sortie.
  • ZEROS - Les groupes vides sont remplis avec des zéros.
  • SPATIAL_NEIGHBORS - Les groupes vides sont remplis avec la valeur moyenne des voisins spatiaux.
  • SPACE_TIME_NEIGHBORS - Les groupes vides sont remplis avec la valeur moyenne des voisins spatio-temporels.
  • TEMPORAL_TREND - Les groupes vides sont remplis à l’aide d’un algorithme de spline univariée interpolée.

Remarque :

Les valeurs nulles présentes dans des enregistrements de variables génèrent un groupe vide. Si des valeurs nulles sont présentes dans les entités en entrée, il est recommandé d’exécuter d’abord l’outil Remplir les valeurs manquantes.

Value Table
summary_fields
[[Field, Statistic, Fill Empty Bins with],...]
(Facultatif)

Champ numérique contenant les valeurs attributaires qui permettent de calculer les statistiques indiquées lors de l’agrégation dans un cube spatio-temporel. Vous pouvez spécifier plusieurs combinaisons de statistiques et de champs. Les valeurs nulles présentes dans les champs spécifiés entraînent l’exclusion de cette entité du cube en sortie. Si des valeurs nulles sont présentes dans les entités en entrée, il est recommandé d’exécuter l’outil Remplir les valeurs manquantes avant de créer un cube spatio-temporel.

Les types de statistiques disponibles sont les suivants :

  • SUM : la valeur totale du champ spécifié au sein de chaque groupe sera calculée.
  • MEAN - La moyenne du champ spécifié au sein de chaque groupe est calculée.
  • MIN - La valeur la plus faible parmi tous les enregistrements du champ spécifié au sein de chaque groupe est identifiée.
  • MAX - La valeur la plus élevée parmi tous les enregistrements du champ spécifié au sein de chaque groupe est identifiée.
  • STD : l’écart type des valeurs du champ spécifié au sein de chaque groupe sera calculé.
  • MEDIAN : la valeur centrale triée de tous les enregistrements du champ spécifié au sein de chaque groupe sera calculée.

Les types de remplissage disponibles sont les suivants :

  • ZEROS - Les groupes vides sont remplis avec des zéros.
  • SPATIAL_NEIGHBORS - Les groupes vides sont remplis avec la valeur moyenne des voisins spatiaux.
  • SPACE_TIME_NEIGHBORS - Les groupes vides sont remplis avec la valeur moyenne des voisins spatio-temporels.
  • TEMPORAL_TREND - Les groupes vides sont remplis à l’aide d’un algorithme de spline univariée interpolée.

Remarque :

Les valeurs nulles présentes dans les enregistrements des champs de récapitulation entraînent l’exclusion de ces entités du cube en sortie. Si des valeurs nulles sont présentes dans les entités en entrée, il est recommandé d’exécuter d’abord l’outil Remplir les valeurs manquantes. Si, après l’exécution de l’outil Remplir les valeurs manquantes, des valeurs nulles sont toujours présentes et que le fait de disposer du total des points dans chaque groupe fait partie de votre stratégie d’analyse, vous pouvez créer des cubes distincts : un pour le total (sans champs de récapitulation) et un pour les champs de récapitulation. Si l’ensemble de valeurs nulles est différent pour chaque champ de récapitulation, vous pouvez créer un cube distinct pour chaque champ de récapitulation.

Value Table
in_related_table
(Facultatif)

La table ou la vue tabulaire à associer dans les entités en entrée.

Table View
related_location_id
(Facultatif)

Champ de type entier ou texte dans la table associée qui contient l’ID de localisation sur lequel la relation est basée.

Field

Exemple de code

Exemple 1 d’utilisation de la fonction CreateSpaceTimeCubeDefinedLocations (fenêtrePython)

Le script ci-dessous pour la fenêtre Python illustre l’utilisation de la fonction CreateSpaceTimeCubeDefinedLocations.

import arcpy
arcpy.env.workspace = r"C:\STPM\Chicago.gdb"
arcpy.stpm.CreateSpaceTimeCubeDefinedLocations("Chicago_Data", r"C:\STPM\Chicago_Cube.nc", "MYID",
                                               "NO_TEMPORAL_AGGREGATION", "TIME", "1 Months",
                                               "END_TIME", "", "COUNT ZEROS")
Exemple 2 d'utilisation de l'outil CreateSpaceTimeCubeDefinedLocations (script autonome)

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

# Fill missing values using a feature set and related table
# Use the results to create a space-time cube from defined locations
# Run Emerging Hot Spot Analysis on the data
# Visualize the results in 3d

# Import system modules
import arcpy

# Set overwriteOutput property to overwrite existing output, by default
arcpy.env.overwriteOutput = True

# Local variables ...
arcpy.env.workspace = r"C:\STPM\Chicago.gdb"

try:

    # Fill missing values in a feature class containing block group polygon shapes and a related table containing the incidents
    # Since some of the values are missing, fill them using the temporal trend method

    arcpy.stpm.FillMissingValues("Chicago_Feature", "Chicago_FilledFeature", "COUNT", "TEMPORAL_TREND", "", "", NoneNone,
                                 "TIME", "", "MYID", "Chicago_Table", "MYID", "", "", "", "Chicago_FilledTable")



    # Create a defined location space-time cube using a related table
    # Using a reference time at the start of the month to force binning fall on month breaks
    # Using temporal aggregation to sum multiple entries into one month
    # Using the method drop location if missing values since you already filled using Fill Missing Values
    arcpy.stpm.CreateSpaceTimeCubeDefinedLocations("Chicago_FilledFeature", r"C:\STPM\Chicago_Cube.nc", "MYID",
                                                   "APPLY_TEMPORAL_AGGREGATION", "TIME", "1 Months", "REFERENCE_TIME",
                                                   "10/1/2015", "", "COUNT SUM DROP_LOCATIONS", "Chicago_FilledTable",
                                                   "MYID")

    # Run an emerging hot spot analysis on the defined locations cube
    # Using contiguity edges so only block groups that bound each other are considered neighbors
    arcpy.stpm.EmergingHotSpotAnalysis(r"C:\STPM\Chicago_Cube.nc", "COUNT_SUM_NONE",
                                       "Chicago_Cube_EmergingHotSpot", "", 1, "",
                                       "CONTIGUITY_EDGES_ONLY")

    # Use Visualize Cube in 3d to see the hot spot results for each time slice
    arcpy.stpm.VisualizeSpaceTimeCube3D(r"C:\STPM\Chicago_Cube.nc", "COUNT_SUM_NONE", "HOT_AND_COLD_SPOT_RESULTS",
                                        "Chicago_Cube_Visualize3d")

except arcpy.ExecuteError:
    # If any error occurred when running the tool, print the messages
    print(arcpy.GetMessages())