Générer une couche d'analyse de la zone de desserte (Network Analyst)

Résumé

Crée une couche de calcul de réseau de zones de desserte et définit ses propriétés d'analyse. Une couche d'analyse de zones de desserte est utile pour déterminer la zone d'accessibilité à partir de la localisation d'une ressource, au sein d'une valeur limite. La couche peut être créée à l'aide d'un jeu de données réseau local ou d'un service de calcul d'itinéraire hébergé en ligne ou sur un portail.

Utilisation

  • Après avoir créé la couche d'analyse avec cet outil, vous pouvez ajouter des objets d'analyse de réseau à l'aide de l'outil Ajouter des localisations, résoudre l'analyse à l'aide de l'outil Calculer et enregistrer les résultats sur le disque à l'aide de l'outil Enregistrer dans un fichier de couche.

  • Lorsque vous utilisez cet outil dans des modèles de géotraitement, si le modèle est exécuté en tant qu'outil, la couche d'analyse de réseau en sortie doit être convertie en paramètre de modèle. Dans le cas contraire, la couche en sortie n'est pas ajoutée au contenu de la carte.

  • Dans ArcGIS Pro, les données des couches d’analyse de réseau sont stockées sur disque dans des classes d’entités de géodatabase fichier. Lorsque vous créez une couche d’analyse de réseau dans un projet, les données de cette couche sont créées dans un nouveau jeu de classes d’entités dans l’environnement Espace de travail courant. Lorsque vous créez une couche d’analyse de réseau dans un script Python, vous devez commencer par définir de façon explicite l’environnement de l’espace de travail sur une géodatabase fichier dans laquelle vous voulez stocker les données de la couche à l’aide de arcpy.env.workspace = "<path to file gdb>". Lorsque la couche est créée, un nouveau jeu de données d'entité contenant les classes d'entités de sous-couche appropriées est ajouté à cette géodatabase fichier.

Syntaxe

arcpy.na.MakeServiceAreaAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {travel_direction}, {cutoffs}, {time_of_day}, {time_zone}, {output_type}, {polygon_detail}, {geometry_at_overlaps}, {geometry_at_cutoffs}, {polygon_trim_distance}, {exclude_sources_from_polygon_generation}, {accumulate_attributes})
ParamètreExplicationType de données
network_data_source

Jeu de données réseau ou service sur lequel l'analyse du réseau est effectuée. Utilisez l'URL du portail pour un service.

Network Dataset Layer;String
layer_name
(Facultatif)

Nom de la couche d’analyse de réseau à créer.

String
travel_mode
(Facultatif)

Nom du mode de déplacement à utiliser dans l’analyse. Le mode de déplacement représente une collection de paramètres réseau, tels que des restrictions de circulation et des règles de demi-tour, qui détermine la façon dont un piéton, une voiture, un camion ou un autre mode de transport se déplace sur le réseau. Les modes de déplacement sont définis dans votre source de données de réseau.

Vous pouvez aussi utiliser un objet arcpy.na.TravelMode et une chaîne contenant la représentation JSON valide d’un mode de déplacement en entrée du paramètre.

String
travel_direction
(Facultatif)

Spécifie la direction de déplacement vers les équipements ou à partir des équipements.

  • FROM_FACILITIESLa zone de desserte représente un déplacement à partir des ressources. Il s’agit de l’option par défaut.
  • TO_FACILITIESLa zone de desserte représente un déplacement dans la direction des ressources.

Ce paramètre peut engendrer des zones de desserte différentes dans un réseau avec des restrictions unidirectionnelles et des impédances différentes selon le sens du trajet. La zone de desserte d'un vendeur de pizzas, par exemple, doit être créée depuis la ressource, alors que la zone de desserte d'un hôpital doit être créée vers la ressource.

String
cutoffs
[cutoffs,...]
(Facultatif)

Etendue de la zone de desserte à calculer, dans les unités de l'attribut d'impédance utilisé par le mode de déplacement sélectionné. Par exemple, lors de l’analyse de la durée du trajet, une valeur limite de 10 signifie que la zone de desserte obtenue représente la zone accessible avec un temps de conduite de 10 minutes.

Plusieurs limites peuvent être configurées pour créer des zones de desserte concentriques. Par exemple, pour trouver des zones de desserte de 2, 3 et 5 minutes à partir d’une même ressource, spécifiez 2, 3 et 5 comme valeurs de ce paramètre.

Vous pouvez remplacer cette valeur limite par défaut ressource par ressource en spécifiant des valeurs de borne individuelles dans la sous-couche des ressources.

Double
time_of_day
(Facultatif)

Heure de départ ou d'arrivée aux ressources de la couche de zone de desserte. Cette valeur est interprétée comme heure de départ ou heure d'arrivée selon que le trajet s'effectue à partir des ressources ou vers celles-ci.

  • Elle représente l’heure de départ si travel_direction='FROM_FACILITIES'.
  • Elle représente l'heure d'arrivée si travel_direction='TO_FACILITIES'.

Le paramètre time_of_day est très utile pour trouver les routes accessibles en fonction d’un mode de déplacement utilisant un attribut d’impédance qui varie selon l’heure, tel qu’un attribut basé sur des conditions de circulation dynamiques. En effectuant la même analyse avec des valeurs différentes pour le paramètre time_of_day, vous pouvez voir l'évolution de la portée d'une ressource en fonction de l'heure. Par exemple, la zone de desserte de 5 minutes autour d’une caserne de pompiers peut être grande tôt le matin, diminuer aux heures de pointe matinales, augmenter en fin de matinée, et ainsi de suite, tout au long de la journée.

Une date et une heure peuvent être spécifiées au format 10/21/2015 10:30 AM.

Au lieu d'utiliser une date particulière, un jour de la semaine peut être spécifié à l'aide des dates suivantes :

  • Aujourd’hui - 12/30/1899
  • Dimanche - 12/31/1899
  • Lundi - 1/1/1900
  • Mardi - 1/2/1900
  • Mercredi - 1/3/1900
  • Jeudi - 1/4/1900
  • Vendredi - 1/5/1900
  • Samedi - 1/6/1900

Date
time_zone
(Facultatif)

Spécifie le fuseau horaire du paramètre d’heure.

  • LOCAL_TIME_AT_LOCATIONSLe paramètre d’heure utilise le ou les fuseaux horaires dans lesquels se trouvent les ressources. Les heures de début ou de fin des zones de desserte sont échelonnées en fonction du fuseau horaire. Il s’agit de l’option par défaut.Par exemple, lorsque l’heure est définie sur 9h00, les zones de desserte sont générées pour 9h00 (heure de l’Est) pour les ressources situées dans le fuseau horaire de l’Est, pour 9h00 (heure du Centre) pour les ressources situées dans le fuseau horaire du Centre, pour 9h00 (heure des Rocheuses) pour les ressources situées dans le fuseau horaire des Rocheuses, etc. Si les points de vente d’une chaîne implantée dans tous les États-Unis ouvrent à 9h00 (heure locale), définissez la valeur de ce paramètre pour trouver, grâce à une seule analyse, les zones de marché de tous les points de vente, à l’heure d’ouverture. Tout d’abord, les points de vente se trouvant dans le fuseau horaire de l’Est ouvrent et un polygone est généré. Une heure plus tard, les points de vente se trouvant dans le fuseau horaire central ouvrent, et ainsi de suite. L'heure locale est toujours 09 h 00, mais elle est échelonnée en temps réel.
  • UTCLe paramètre d’heure du jour utilise le temps universel coordonné (UTC). L’heure de départ des ressources est identique à l’heure d’arrivée, quel que soit leur fuseau horaire.Lorsque l’heure est définie sur 14h00, les zones de desserte sont générées pour 9h00 (heure de l’Est) pour les ressources situées dans le fuseau horaire de l’Est, pour 8h00 (heure du Centre) pour les ressources situées dans le fuseau horaire du centre, pour 7h00 (heure des Rocheuses) pour les ressources situées dans le fuseau horaire des Rocheuses, etc.
    Remarque :

    Le scénario ci-dessus implique l'utilisation de l'heure standard. Pendant l’heure d’été, les heures de l’Est, du Centre et des Rocheuses, auraient chacune une heure d’avance (à savoir, 10 h 00, 09 h 00 et 08 h 00, respectivement).

    L'option UTC est utile pour visualiser la couverture des interventions d'urgence d'une juridiction répartie sur deux fuseaux horaires. Les véhicules d'urgence sont chargés en tant que ressources. Le paramètre d'heure est défini sur l'heure actuelle en temps universel coordonné (UTC). (Vous devez déterminer l'heure et la date actuelles en temps universel coordonné (UTC) pour utiliser correctement cette option.) Les autres propriétés sont définies et l'analyse est résolue. Même si une limite de fuseau horaire sépare les véhicules, les résultats indiquent les zones accessibles en fonction des conditions de circulation actuelles spécifiées. Vous pouvez utiliser le même processus pour d'autres heures également, et pas seulement l'heure actuelle.
String
output_type
(Facultatif)

Spécifie le type de sortie à générer. La sortie des zones de desserte peut être constituée d'entités linéaires représentant les routes atteignables avant que les valeurs limites ne soient dépassées ou les entités surfaciques comprenant ces lignes (représentant la zone atteignable).

  • POLYGONSLa sortie de zones de desserte contient uniquement des polygones. Il s’agit de l’option par défaut.
  • LINESLa sortie de zones de desserte contient uniquement des lignes.
  • POLYGONS_AND_LINESLa sortie de zones de desserte contient à la fois des polygones et des lignes.

Les types de sortie Lines (Lignes) et Polygons and Lines (Polygones et lignes) ne sont pas disponibles si la source de données réseau est un service hébergé sur une version de Portal for ArcGIS qui ne prend pas en charge la génération de lignes.

String
polygon_detail
(Facultatif)

Spécifie le niveau de détail des polygones en sortie.

  • STANDARDDes polygones avec un niveau de détail standard sont créés. Il s’agit de l’option par défaut.
  • GENERALIZEDDes polygones généralisés sont créés à l’aide de l’attribut de hiérarchie du réseau afin de générer des résultats rapides. Cette option n’est pas disponible si le jeu de données de réseau n’a pas d’attribut de hiérarchie.
  • HIGHDes polygones avec un niveau de détail plus élevé sont créés pour les applications où il est important d’avoir des résultats précis.

Si votre analyse inclut une zone urbaine avec un réseau de transport de type grille, la différence entre les polygones généralisés et les polygones standard est minime. Cependant, les polygones standard et détaillés peuvent afficher des résultats beaucoup plus précis que les polygones généralisés pour les routes de montagne et de campagne.

String
geometry_at_overlaps
(Facultatif)

Spécifie le comportement de la sortie de zones de desserte à partir de plusieurs ressources liées les unes aux autres.

  • OVERLAPDes polygones individuels ou des ensembles de lignes pour chaque ressource sont créés. Les polygones ou lignes peuvent se superposer. Il s’agit de l’option par défaut.
  • DISSOLVELes polygones de plusieurs ressources qui possèdent la même valeur limite sont fusionnés dans un seul polygone. Cette option ne s’applique pas à la sortie de lignes.
  • SPLITUne zone est attribuée à la ressource la plus proche afin que les polygones ou lignes ne se superposent pas les uns aux autres.
String
geometry_at_cutoffs
(Facultatif)

Spécifie le comportement de la sortie de zones de desserte pour une seule ressource lorsque plusieurs valeurs limites sont spécifiées. Ce paramètre ne s'applique pas à la sortie de lignes.

  • RINGSChaque polygone inclut uniquement la surface entre les valeurs limites consécutives. Il n’inclut pas la zone entre la ressource et d’éventuelles limites moins élevées. Par exemple, si vous créez des zones de desserte de 5 et 10 minutes, le polygone de 5 minutes inclut la zone accessible en 0 à 5 minutes et la zone de desserte de 10 minutes comprend la zone accessible en 5 à 10 minutes. Il s’agit de l’option par défaut.
  • DISKSChaque polygone inclut la zone accessible à partir de la ressource et jusqu’à la valeur limite, y compris la zone accessible avec des valeurs limites moins élevées. Par exemple, si vous créez des zones de desserte de 5 et 10 minutes, le polygone de la zone de desserte de 10 minutes inclut la zone située sous le polygone de la zone de desserte de 5 minutes.
String
polygon_trim_distance
(Facultatif)

Distance de découpage des polygones de la zone de desserte. La distance de découpage des polygones correspond à la distance d’extension du polygone de la zone de desserte à partir de la route, lorsqu’aucune autre route accessible ne se trouve à proximité. Elle fonctionne de la même manière qu’une taille de zone tampon de lignes. Cette option est utile lorsque le réseau est clairsemé et que vous ne voulez pas que la zone de desserte couvre de larges surfaces sur lesquelles il n’y a aucune entité.

Ce paramètre comprend une valeur et des unités de distance. La valeur par défaut est 100 mètres.

Linear Unit
exclude_sources_from_polygon_generation
[exclude_sources_from_polygon_generation,...]
(Facultatif)

Sources de tronçons du jeu de données réseau exclues lors de la génération des polygones des zones de desserte. Aucun polygone n’est généré autour des sources exclues, même si elles sont traversées lors de l’analyse.

L’exclusion d’une source de données de polygones de zone de desserte n’empêche pas ces sources d’être traversées. L’exclusion de sources de polygones de zone de desserte agit uniquement sur la forme des polygones des zones de desserte. Si vous souhaitez empêcher la traversée d’une source de réseau précise, vous devez créer une restriction correspondante lors de la définition de votre jeu de données réseau.

Cette option est utile si vous avez quelques sources de données du réseau que vous ne voulez pas inclure dans la génération de polygones parce qu'elles créent des polygones moins précis ou sont sans importance pour l'analyse des zones de desserte. Par exemple, lors de la création d'une zone de desserte de durée de trajet à pied dans un réseau multimodal incluant des rues et des lignes de métro, vous devez choisir d'exclure les lignes de métro de la génération de polygones. Bien que le voyageur puisse utiliser les lignes de métro, il ne peut pas s'arrêter à mi-chemin le long d'une ligne de métro et entrer dans un bâtiment voisin. Il doit voyager sur toute la ligne de métro, sortir du métro à la station choisie, puis emprunter les rues menant au bâtiment. Il n’est donc pas pertinent de générer une entité surfacique autour d’une ligne de métro.

Ce paramètre n’est pas disponible si les types de géométrie en sortie n’incluent aucun polygone, si le réseau comporte moins de deux sources de segment, si la source de données réseau est un service ArcGIS Online ou si la source de données réseau est un service dans une version de Portal for ArcGIS qui ne prend pas en charge l’exclusion des sources.

String
accumulate_attributes
[accumulate_attributes,...]
(Facultatif)

Liste des attributs de coût à cumuler lors de l’analyse. Ces attributs accumulés servent uniquement de référence. Le solveur utilise uniquement l’attribut de coût utilisé par le mode de déplacement désigné pour la réalisation de l’analyse.

Pour chaque attribut de coût accumulé, une propriété Total_[Impédance] est renseignée dans les entités en sortie de l’analyse du réseau.

Ce paramètre n’est pas disponible si la couche d’analyse n’est pas configurée pour obtenir des lignes en sortie, si la source de données réseau est un service ArcGIS Online ou si la source de données réseau est un service hébergé sur une version de Portal for ArcGIS qui ne prend pas en charge l’accumulation.

String

Sortie dérivée

NomExplicationType de données
out_network_analysis_layer

Couche d’analyse de réseau nouvellement créée.

Couche Network Analyst

Exemple de code

Exemple 1 d'utilisation de l'outil Générer une couche d'analyse de la zone de desserte (fenêtre Python)

Exécute l'outil uniquement avec les paramètres requis.

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeServiceAreaAnalysisLayer(network, "FireStationCoverage")
Exemple 2 d'utilisation de l'outil Générer une couche d'analyse de la zone de desserte (fenêtre Python)

Exécutez l'outil avec tous les paramètres.

network = "C:/Data/Paris.gdb/Transportation/ParisMultimodal_ND"
arcpy.na.MakeServiceAreaAnalysisLayer(network, "WarehouseCoverage",
                                "Driving Time", "FROM_FACILITIES", [5, 10, 15],
                                "1/1/1900 9:00 AM", "UTC", "POLYGONS",
                                "STANDARD", "DISSOLVE", "RINGS", "100 meters",
                                ["Metro_Lines", "Transfer_Stations",
                                "Transfer_Street_Station"], ["Meters", 
                                "DriveTime"])
Exemple 3 d'utilisation de l'outil Générer une couche d'analyse de la zone de desserte (workflow)

Le script Python autonome suivant illustre l'utilisation de l'outil MakeServiceAreaAnalysisLayer pour générer des zones de desserte de 1, 2 et 3 minutes autour de casernes de pompiers.

# Name: MakeServiceAreaAnalysisLayer_Workflow.py
# Description: Generate 1-,2-,3- minute service areas around fire stations and
#              save the results to a layer file on disk. The service area
#              polygons can be used to visualize the areas that do not have
#              adequate coverage from the fire stations
# Requirements: Network Analyst Extension

#Import system modules
import arcpy
from arcpy import env
import os

try:
    #Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
    
    #Set environment settings
    output_dir = "C:/Data"
    #The NA layer's data will be saved to the workspace specified here
    env.workspace = os.path.join(output_dir, "Output.gdb")
    env.overwriteOutput = True

    #Set local variables
    input_gdb = "C:/Data/SanFrancisco.gdb"
    network = os.path.join(input_gdb, "Transportation", "Streets_ND")
    layer_name = "FireStationCoverage"
    travel_mode = "Driving Time"
    facilities = os.path.join(input_gdb, "Analysis", "FireStations")
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    #Create a new service area layer. We wish to generate the service area
    #polygons as rings, so that we can easily visualize the coverage for any
    #given location. We also want overlapping polygons so we can determine the
    #number of fire stations that cover a given location. We will specify these
    #options while creating the new service area layer.
    result_object = arcpy.na.MakeServiceAreaAnalysisLayer(network, layer_name,
                                    travel_mode, "FROM_FACILITIES", [1, 2, 3],
                                    polygon_detail="HIGH",
                                    geometry_at_overlaps="OVERLAP",
                                    geometry_at_cutoffs="RINGS")

    #Get the layer object from the result object. The service layer can now be
    #referenced using the layer object.
    layer_object = result_object.getOutput(0)

    #Get the names of all the sublayers within the service area layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    #Stores the layer names that we will use later
    facilities_layer_name = sublayer_names["Facilities"]

    #Load the fire stations as facilities using default field mappings and
    #default search tolerance
    arcpy.na.AddLocations(layer_object, facilities_layer_name, facilities, "",
                                                                            "")

    #Solve the service area layer
    arcpy.na.Solve(layer_object)

    #Save the solved service area layer as a layer file on disk
    layer_object.saveACopy(output_layer_file)

    print("Script completed successfully")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))
Exemple 4 d'utilisation de l'outil Générer une couche d'analyse de la zone de desserte (workflow)

Cet exemple explique comment créer des zones de desserte autour de ressources à des heures différentes de la journée. Il montre également comment transférer des champs d'entités en entrée à destination d'entités en sortie et ajouter des polygones en sortie à une classe d'entités existante.

Héritage :

La fonction GetNASublayer peut être utilisée pour extraire les sous-couches d’une couche d’analyse de réseau. Elle a été introduite dans ArcGIS Pro 2.7. Dans les versions précédentes, la meilleure manière d’extraire un objet de sous-couche d’une couche d’analyse de réseau consistait à utiliser la méthode listLayers de l’objet Layer d’analyse de réseau en utilisant le nom de la sous-couche en tant que caractère générique.

# Name: MakeServiceAreaAnalysisLayer_Workflow2.py
# Description: Generate 3-minute service areas around fire stations at several
#               times of day to compare coverage differences due to varying
#               traffic conditions. Save the results to a feature class on disk.
# Requirements: Network Analyst Extension

# Import system modules
import arcpy
from arcpy import env
import os, datetime

try:
    # Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
    
    # Set environment settings
    output_dir = "C:/Data"
    # The NA layer's data will be saved to the workspace specified here
    env.workspace = os.path.join(output_dir, "Output.gdb")
    env.overwriteOutput = True

    # Set local variables
    input_gdb = "C:/Data/SanFrancisco.gdb"
    network = os.path.join(input_gdb, "Transportation", "Streets_ND")
    layer_name = "FireStationCoverage"
    out_featureclass = os.path.join(output_dir, "Output.gdb",
                                                        "FireStationCoverage")
    travel_mode = "Driving Time"
    facilities = os.path.join(input_gdb, "Analysis", "FireStations")
    times_of_day = [datetime.datetime(2014, 9, 25, 7, 0, 0),
                    datetime.datetime(2014, 9, 25, 12, 30, 0),
                    datetime.datetime(2014, 9, 25, 17, 30, 0),
                    datetime.datetime(2014, 9, 25, 21, 0, 0)]

    # Create a new service area layer.
    result_object = arcpy.na.MakeServiceAreaAnalysisLayer(network, layer_name,
                                                travel_mode, "FROM_FACILITIES",
                                                [3], polygon_detail="HIGH",
                                                geometry_at_overlaps="OVERLAP")

    # Get the layer object from the result object. The service area layer can
    # now be referenced using the layer object.
    layer_object = result_object.getOutput(0)

    # Get the names of all the sublayers within the service area layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    # Stores the layer names that we will use later
    facilities_layer_name = sublayer_names["Facilities"]
    polygons_layer_name = sublayer_names["SAPolygons"]

    # The input data has a field for FireStationID that we want to transfer to
    # our analysis layer. Add the field, and then use field mapping to transfer
    # the values.
    arcpy.na.AddFieldToAnalysisLayer(layer_object, facilities_layer_name,
                                                    "FireStationID", "TEXT")
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                    facilities_layer_name)
    field_mappings["FireStationID"].mappedFieldName = "FireStationID"

    # Load the fire stations as facilities.
    arcpy.na.AddLocations(layer_object, facilities_layer_name, facilities,
                            field_mappings, "")

    # Add fields to the output Polygons sublayer for later use.
    arcpy.na.AddFieldToAnalysisLayer(layer_object, polygons_layer_name,
                                        "FireStationID", "TEXT")
    arcpy.na.AddFieldToAnalysisLayer(layer_object, polygons_layer_name,
                                        "TimeOfDay", "TEXT")

    # Get sublayers to work with later
    facilities_sublayer = arcpy.na.GetNASublayer(layer_object, "Facilities")
    polygons_sublayer = arcpy.na.GetNASublayer(layer_object, "SAPolygons")

    # Get the Service Area Layer's solver properties. This can be used to
    # set individual properties later without re-creating the layer.
    solver_properties = arcpy.na.GetSolverProperties(layer_object)

    # Solve the Service Area for each time of day in the time list
    for t in times_of_day:

        print("Calculating service area for time of day: ", t)

        # Use the solver properties to set the time of day for the solve
        solver_properties.timeOfDay = t

        # Solve the service area layer
        arcpy.na.Solve(layer_object)

        # Transfer the FireStationID field from the input Facilities to the
        # output Polygons
        arcpy.management.AddJoin(polygons_sublayer, "FacilityID",
                                        facilities_sublayer, "ObjectID")
        # The joined fields are qualified by the feature class name of the joined
        # table, so determine the feature class names
        field_qualifier_pol = os.path.basename(polygons_sublayer.dataSource)
        target_field_name = "%s.FireStationID" % field_qualifier_pol
        field_qualifier_fac = os.path.basename(facilities_sublayer.dataSource)
        expression = "!%s.FireStationID!" % field_qualifier_fac
        arcpy.management.CalculateField(polygons_sublayer, target_field_name,
                                        expression, "PYTHON")
        arcpy.management.RemoveJoin(polygons_sublayer)

        # Populate the TimeOfDay field in the output feature class
        expression = '"' + str(t) + '"'
        arcpy.management.CalculateField(polygons_sublayer, "TimeOfDay",
                                            expression, "PYTHON")

        # Append the polygons to the output feature class. If this was the first
        # solve, create the feature class.
        if not arcpy.Exists(out_featureclass):
            arcpy.management.CopyFeatures(polygons_sublayer, out_featureclass)
        else:
            arcpy.management.Append(polygons_sublayer, out_featureclass)

    print("Script completed successfully")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))

Informations de licence

  • Basic: Oui
  • Standard: Oui
  • Advanced: Oui