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

Synthèse

Utilise des données de panel ou de station (emplacements définis où la géographie ne change pas, mais où les attributs évoluent au fil du temps) et les structure en 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 d’emplacements définis

Illustration

Création d'un cube spatio-temporel

Utilisation

  • Cet outil utilise des données de panel ou de station (emplacements définis où la géographie ne change pas, mais où les attributs évoluent au fil du temps) comme entités en entrée et les structure dans des groupes spatio-temporels. La structure de données qui en résulte peut être considérée comme un cube tridimensionnel 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 tridimensionnel

  • 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 d'emplacements définis (x,y ou sommets) partagent le même ID d'emplacement. 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 présente une valeur LOCATION_ID, time_step_ID et COUNT, ainsi que les valeurs des 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 emplacements définis 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 vos 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 une fois stockées dans le cube spatio-temporel. Pour savoir si vos entités en entrée contiennent des courbes vraies, exécutez l’outil Vérifier les géométries avec OGC comme 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 votre jeu de données et risquent d’être éliminées et remplacées par des sommets à l’aide de l’outil Densifier avec la méthode de densification Angle avant de créer le 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 un ensemble d'entités avec une table associée contenant les attributs enregistrés au fil du temps.

  • L'outil échoue si les paramètres spécifiés génèrent un cube doté de plus de deux milliards de groupes.

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

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

  • La sortie de cet outil est une représentation netCDF de vos entités en entrée, ainsi que des messages récapitulant les caractéristiques du cube. Les messages sont écrits au bas de la fenêtre Géotraitement au cours de l'exécution de l'outil. Vous pouvez accéder aux messages en survolant la barre de progression, en cliquant sur le bouton contextuel Bouton contextuel ou en développant 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 du géotraitement. Vous pouvez utiliser le fichier netCDF en entrée dans d’autres outils, tels que l’outilAnalyse de points chauds émergents ou l’outil Analyse de valeurs aberrantes locales. Reportez-vous à la rubrique Visualisation du cube spatio-temporel pour découvrir les stratégies vous permettant de consulter le contenu d'un cube.

  • Sélectionnez 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 l'entrée comporte une table associée, ce champ sera l'horodatage associé à chaque enregistrement dans la table.

  • L'intervalle temporel définit la façon dont vous voulez partitionner la période couverte par vos données. Si l'agrégation temporelle est désactivée, l'intervalle temporel doit être défini sur la structure existante de vos 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. Activez ce paramètre si vous souhaitez effectuer une agrégation temporelle. Par exemple, si vous possédez des données de capteur qui ont été enregistrées toutes les 5 minutes, vous pouvez procéder à une agrégation à l'aide d'intervalles d'une journée. Les intervalles temporels sont toujours des durées fixes et l'outil requiert un minimum de dix phases.

    Remarque :

    Alors que plusieurs unités de temps apparaissent dans la liste déroulante Intervalle temporaire, l'outil ne prend en charge que les valeurs Années, Mois, Semaines, Jours, Heures, Minutes et Secondes.

  • Si votre cube spatio-temporel ne peut pas être créé, l'outil est peut-être incapable de structurer les données en entrée que vous avez fournies en 10 intervalles temporels. Si un message d'erreur s'affiche lors de l'exécution de cet outil, 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.

  • L'heure/la date de référence 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, Ecart 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 vos Entités en entrée, il est fortement recommandé d’exécuter d’abord l’outil Remplir les valeurs manquantes. Si, après l’exécution de l’outil Fill Missing Values (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 Summary Fields (Champs de récapitulation)) et un pour Summary Fields (Champs de récapitulation). Si l'ensemble de valeurs Null 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 SPATIAL_NEIGHBORS, l’outil effectue 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 SPACE_TIME_NEIGHBORS, l’outil effectue des estimations en fonction des 8 voisins les plus proches. En outre, des voisins temporels sont utilisés pour chacun des groupes identifiés comme étant des voisins spatiaux en se déplaçant vers l'avant et l'arrière de 1 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 TEMPORAL_TREND, les groupes des deux premières et des deux dernières périodes temporelles à un emplacement donné doivent comporter des valeurs afin d’interpoler les valeurs à d’autres périodes temporelles pour cet emplacement.

  • Le type de remplissage TEMPORAL_TREND 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 plus volumineux.

Paramètres

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

La classe d'entités ponctuelles ou surfaciques en entrée à convertir 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 d’entier contenant le numéro d’identification de chaque emplacement unique.

Field
Agrégation temporelle

Détermine si les données vont être agrégées temporellement.

  • Désactivé : le cube spatio-temporel sera créé avec la structure temporelle existante de vos entités en entrée. Par exemple, vous possédez des données annuelles et souhaitez créer un cube avec un intervalle temporel annuel. Il s’agit de l’option par défaut.
  • Activé : le cube spatio-temporel va temporellement agréger vos entités en fonction de l'intervalle temporel que vous fournissez. Par exemple, vous possédez des données qui ont été collectées quotidiennement et souhaitez créer un cube avec un intervalle temporel hebdomadaire.
Boolean
Champ temporel

Le champ contenant l'horodatage pour chaque ligne 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 l'agrégation temporelle est désactivée, vous n'effectuez pas d'agrégation temporelle et ce paramètre doit être défini sur la structure temporelle existante de vos données.

Si l'agrégation temporelle est activée, vous effectuez l'agrégation temporelle et ce paramètre doit être défini sur l'intervalle temporel que vous voulez créer. Toutes les entités au sein du même intervalle temporel seront agrégées.

Time Unit
Alignement de l’intervalle temporel
(Facultatif)

Définit la structure du cube en fonction d'un intervalle temporel donné.

  • Heure de finLes phases s'alignent sur le dernier événement temporel et s'agrègent dans le passé. Il s’agit de l’option par défaut.
  • Heure de débutLes phases s'alignent sur le premier événement temporel et s'agrègent dans le futur.
  • Référence temporelleLes phases s'alignent sur une date/heure en particulier que vous spécifiez. Si la valeur d'horodatage de tous les points des entités en entrée est supérieure à la référence temporelle que vous avez 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 à une agrégation dans le futur (comme avec un alignement 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 que vous avez 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 à une agrégation dans le passé (comme avec un alignement Heure de fin). Si la référence temporelle que vous indiquez se trouve au milieu de l'étendue temporelle de vos données, un intervalle temporel est créé, lequel se termine par la référence temporelle que vous indiquez (comme avec un alignement Heure de fin). Des intervalles supplémentaires seront créés avant et après la référence temporelle jusqu'à ce que l'étendue temporelle complète de vos données soit couverte.
String
Référence temporelle
(Facultatif)

Date/heure à utiliser pour aligner les intervalles temporels. Si vous souhaitez regrouper vos données de façon hebdomadaire du lundi au dimanche, par exemple, définissez une heure/date de référence le dimanche à minuit pour vous assurer que les groupes sont séparés 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.

Types de remplissage disponibles :

  • DROP_LOCATIONS : les emplacements dont des données sont manquantes pour des variables seront supprimés du cube spatio-temporel en sortie.
  • ZEROS : remplit les groupes vides avec des zéros.
  • SPATIAL_NEIGHBORS : remplit les groupes vides avec la valeur moyenne des voisins spatiaux.
  • SPACE_TIME_NEIGHBORS : remplit les groupes vides avec la valeur moyenne des voisins spatio-temporels.
  • TEMPORAL_TREND : remplit les groupes vides à 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 vos entités en entrée, il est fortement recommandé d’exécuter d’abord l’outil Fill Missing Values (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 la suppression de ces entités du cube en sortie. Si des valeurs nulles sont présentes dans vos entités en entrée, il est fortement recommandé d’exécuter d’abord l’outil Fill Missing Values (Remplir les valeurs manquantes) avant de créer un cube spatio-temporel.

Types de statistiques disponibles :

  • SUM : ajoute la valeur totale du champ spécifié dans chaque groupe.
  • MEAN : calcule la moyenne du champ spécifié dans chaque groupe.
  • MIN : recherche la plus petite valeur parmi tous les enregistrements du champ spécifié dans chaque groupe.
  • MAX : recherche la plus grande valeur parmi tous les enregistrements du champ spécifié au sein de chaque groupe.
  • STD : recherche l’écart type dans les valeurs du champ spécifié dans chaque groupe.
  • MEDIAN : recherche la valeur centrale triée parmi tous les enregistrements du champ spécifié au sein de chaque groupe.

Types de remplissage disponibles :

  • ZEROS : remplit les groupes vides avec des zéros.
  • SPATIAL_NEIGHBORS : remplit les groupes vides avec la valeur moyenne des voisins spatiaux.
  • SPACE_TIME_NEIGHBORS : remplit les groupes vides avec la valeur moyenne des voisins spatio-temporels.
  • TEMPORAL_TREND : remplit les groupes vides à 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 vos Entités en entrée, il est fortement recommandé d’exécuter d’abord l’outil Remplir les valeurs manquantes. Si, après l’exécution de l’outil Fill Missing Values (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 Summary Fields (Champs de récapitulation)) et un pour Summary Fields (Champs de récapitulation). Si l'ensemble de valeurs Null est différent pour chaque champ de récapitulation, vous pouvez également 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 d’entier dans la table associée qui contient l’ID d’emplacement sur lequel reposera la relation.

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

La classe d'entités ponctuelles ou surfaciques en entrée à convertir en cube spatio-temporel.

Feature Layer
output_cube

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

File
location_id

Champ d’entier contenant le numéro d’identification de chaque emplacement unique.

Field
temporal_aggregation
  • APPLY_TEMPORAL_AGGREGATIONLe cube spatio-temporel va temporellement agréger vos entités en fonction de l’time_step_interval que vous fournissez. Par exemple, vous disposez de données qui ont été collectées quotidiennement et souhaitez créer un cube avec un time_step_interval hebdomadaire.
  • NO_TEMPORAL_AGGREGATIONLe cube spatio-temporel sera créé avec la structure temporelle existante de vos in_features. Par exemple, vous disposez de données annuelles et souhaitez créer un cube avec un time_step_interval annuel. Il s’agit de l’option par défaut.
Boolean
time_field

Le champ contenant l'horodatage pour chaque ligne 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 l’temporal_aggregation est désactivée, vous n’effectuez pas d’agrégation temporelle, et ce paramètre doit être défini sur la structure temporelle existante de vos données.

Si l’temporal_aggregation est activée, vous effectuez l’agrégation temporelle, et ce paramètre doit être défini sur l’time_step_interval que vous voulez créer. Toutes les entités au sein du même time_step_interval seront agrégées.

Time Unit
time_step_alignment
(Facultatif)

Définit la structure du cube en fonction d’un time_step_interval donné.

  • END_TIMELes phases s'alignent sur le dernier événement temporel et s'agrègent dans le passé.
  • START_TIMELes phases s'alignent sur le premier événement temporel et s'agrègent dans le futur.
  • REFERENCE_TIMELes phases s'alignent sur une date/heure en particulier que vous spécifiez. Si la valeur d’horodatage de tous les points des entités en entrée est supérieure à la référence temporelle que vous avez 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 à une agrégation dans le futur (comme avec un alignement START_TIME). Si la valeur d’horodatage de tous les points des entités en entrée est inférieure à la référence temporelle que vous avez 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 à une agrégation dans le passé (comme avec un alignement END_TIME). Si la référence temporelle que vous indiquez se trouve au milieu de l’étendue temporelle de vos données, un intervalle temporel est créé qui se termine par la référence temporelle que vous indiquez (comme avec un alignement END_TIME). Des intervalles supplémentaires seront créés avant et après la référence temporelle jusqu’à ce que l’étendue temporelle complète de vos données soit couverte.
String
reference_time
(Facultatif)

Date/heure à utiliser pour aligner les intervalles temporels. Si vous souhaitez regrouper vos données de façon hebdomadaire du lundi au dimanche, par exemple, définissez une heure/date de référence le dimanche à minuit pour vous assurer que les groupes sont séparés 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.

Types de remplissage disponibles :

  • DROP_LOCATIONS : les emplacements dont des données sont manquantes pour des variables seront supprimés du cube spatio-temporel en sortie.
  • ZEROS : remplit les groupes vides avec des zéros.
  • SPATIAL_NEIGHBORS : remplit les groupes vides avec la valeur moyenne des voisins spatiaux.
  • SPACE_TIME_NEIGHBORS : remplit les groupes vides avec la valeur moyenne des voisins spatio-temporels.
  • TEMPORAL_TREND : remplit les groupes vides à 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 vos entités en entrée, il est fortement recommandé d’exécuter d’abord l’outil Fill Missing Values (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 la suppression de ces entités du cube en sortie. Si des valeurs nulles sont présentes dans vos entités en entrée, il est fortement recommandé d’exécuter d’abord l’outil Fill Missing Values (Remplir les valeurs manquantes) avant de créer un cube spatio-temporel.

Types de statistiques disponibles :

  • SUM : ajoute la valeur totale du champ spécifié dans chaque groupe.
  • MEAN : calcule la moyenne du champ spécifié dans chaque groupe.
  • MIN : recherche la plus petite valeur parmi tous les enregistrements du champ spécifié dans chaque groupe.
  • MAX : recherche la plus grande valeur parmi tous les enregistrements du champ spécifié au sein de chaque groupe.
  • STD : recherche l’écart type dans les valeurs du champ spécifié dans chaque groupe.
  • MEDIAN : recherche la valeur centrale triée parmi tous les enregistrements du champ spécifié au sein de chaque groupe.

Types de remplissage disponibles :

  • ZEROS : remplit les groupes vides avec des zéros.
  • SPATIAL_NEIGHBORS : remplit les groupes vides avec la valeur moyenne des voisins spatiaux.
  • SPACE_TIME_NEIGHBORS : remplit les groupes vides avec la valeur moyenne des voisins spatio-temporels.
  • TEMPORAL_TREND : remplit les groupes vides à 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 vos Entités en entrée, il est fortement recommandé d’exécuter d’abord l’outil Remplir les valeurs manquantes. Si, après l’exécution de l’outil Fill Missing Values (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 Summary Fields (Champs de récapitulation)) et un pour Summary Fields (Champs de récapitulation). Si l'ensemble de valeurs Null est différent pour chaque champ de récapitulation, vous pouvez également 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 d’entier dans la table associée qui contient l’ID d’emplacement sur lequel reposera la relation.

Field

Exemple de code

Exemple 1 d'utilisation de l'outil CreateSpaceTimeCubeDefinedLocations (fenêtre Python)

Le script suivant 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 Python autonome 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 we will 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 we 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 which bound each other are considered neighbours
    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())