Récapitulatif
Fournit un dictionnaire Python d'objets NAClassFieldMap permettant de mapper des noms de champs ou de définir des valeurs par défaut pour les propriétés d'une classe d'analyse de réseau au sein d'une couche d'analyse de réseau. Les clés de dictionnaires sont les noms des propriétés de la classe d'analyse de réseau, et les valeurs sont les objets NAClassFieldMap.
Discussion
L'objet NAClassFieldMappings ou sa représentation de chaîne est utilisé comme entrée pour le paramètre field_mappings dans l'outil de géotraitement Ajouter des emplacements. Les objets NAClassFieldMap contenus dans l'objet NAClassFieldMappings fournissent un accès pour obtenir ou définir la valeur par défaut et le nom de champ mappé associé à chaque propriété de la classe d'analyse de réseau.
Syntaxe
NAClassFieldMappings (network_analyst_layer, sub_layer_name, {use_location_fields}, {list_candidate_fields})
Paramètre | Explication | Type de données |
network_analyst_layer | Variable qui fait référence à un objet Couche obtenu depuis une couche d'analyse réseau. Elle peut être dérivée de couches existantes dans un document ArcMap ou en spécifiant le chemin de catalogue au fichier de couche d'analyse réseau en tant qu'argument de la classe Couche. La propriété isNetworkAnalystLayer sur l'objet couche peut être utilisée pour identifier si un objet couche donné est une couche d'analyse réseau. | Layer |
sub_layer_name | Nom de la sous-couche pour laquelle les appariements de champs doivent être créés. Le nom doit être valide pour le type de couche d'analyse réseau particulier. Pour une couche d'analyse réseau donnée, le nom de sous-couche peut être déterminé à l'aide de la fonction GetNAClassNames. | String |
use_location_fields | Indique s'il faut créer les appariements de champs pour les propriétés d'emplacement réseau avec d'autres propriétés. (La valeur par défaut est False) | Boolean |
list_candidate_fields [list_candidate_fields,...] | Liste d'objets Champ qui sont utilisés pour générer les noms de champs appariés. La valeur d'argument peut être obtenue depuis une table ou une classe d'entités donnée à l'aide de la fonction ListFields. Si l'argument n'est pas spécifié, les appariements de champs sont créés avec uniquement les valeurs par défaut des propriétés appropriées. (La valeur par défaut est None) | Field |
Exemple de code
Exemple 1 d'utilisation de l'objet NAClassFieldMappings (fenêtre Python)
Le script suivant indique comment charger des casernes de pompiers en tant que ressources dans une couche de zone de desserte existante et spécifie un délai de 10 minutes lors du chargement des ressources à l'aide de l'objet NAClassFieldMappings. Il suppose qu'une couche d'analyse de réseau de zone de desserte appelée Couverture de casernes de pompiers, créée à partir du jeu de données réseau du didacticiel pour la région de San Francisco, et qu'une couche d'entités appelée FireStations sont déjà ajoutées à un document ArcMap existant.
#Get the service area layer called "Fire Stations Coverage" from the table of contents
saLayer = arcpy.mapping.Layer("Fire Stations Coverage")
#Get the list of fields from the FireStations feature layer in the table of contents
fields = arcpy.ListFields("FireStations")
#Get the facilities sublayer name from the service area layer. Note that we are not
#using a string called "Facilities" because the sublayer name can be
#different if using ArcGIS on a non-english operating system.
facilitiesSubLayerName = arcpy.na.GetNAClassNames(saLayer)["Facilities"]
#Create a field mappings object for facilities sublayer based on the fields from
#FireStations layer
fieldMappings = arcpy.na.NAClassFieldMappings(saLayer, facilitiesSubLayerName,
False, fields)
#Get the field map corresponding to the "Attr_TravelTime" property of facilities
fieldMap = fieldMappings["Attr_TravelTime"]
#Set a delay of 10 minutes for the facilities
fieldMap.defaultValue = 10
#Load the fire stations as service area facilities using the field mappings
arcpy.na.AddLocations(saLayer, facilitiesSubLayerName, "FireStations", fieldMappings)
Exemple 2 d'utilisation de l'objet NAClassFieldMappings (workflow)
L'exemple indique comment trouver le meilleur itinéraire entre divers emplacements de magasin en tenant compte des conditions météorologiques comme surfaces de ralentissement. Il illustre l'utilisation de l'objet NAClassFieldMappings lors du chargement des polygones météorologiques en tant qu'interruptions polygonales et des emplacements de magasin en tant qu'arrêts à l'aide de l'outil Ajouter des emplacements.
import arcpy
#Set up the environment
arcpy.env.overwriteOutput = True
arcpy.CheckOutExtension("network")
#Set up variables
networkDataset = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
polygonBarriers = "C:/Data/WeatherSlowDownAreas.shp"
stops = "C:/Data/SanFrancisco.gdb/Analysis/Stores"
impedanceAttribute = "TravelTime"
outputLayer = "C:/Data/WeatherRoute.lyr"
#Create a new route layer
routeLayer = arcpy.na.MakeRouteLayer(networkDataset, "WeatherRoute",
impedanceAttribute).getOutput(0)
#Get na class names based on the layer
naClasses = arcpy.na.GetNAClassNames(routeLayer, "INPUT")
#Create field mappings for loading barriers as scaled cost polygon barriers
#with a slow down of 40%
fieldMappings = arcpy.na.NAClassFieldMappings(routeLayer,
naClasses["PolygonBarriers"])
fieldMappings["BarrierType"].defaultValue = 1
fieldMappings["Attr_" + impedanceAttribute].defaultValue = 1.4
#Load weather polygons as slow down barriers
arcpy.na.AddLocations(routeLayer, naClasses["PolygonBarriers"],
polygonBarriers, fieldMappings)
#get a list of field objects from the stores feature class
storeFields = arcpy.ListFields(stops)
#Create field mappings for loading stops based on the field names from the stores
stopsFieldMappings = arcpy.na.NAClassFieldMappings(routeLayer, naClasses["PolygonBarriers"],
False, storeFields)
#Load stops using the field mappings
arcpy.na.AddLocations(routeLayer, naClasses["Stops"], stops, stopsFieldMappings)
#Solve the route
arcpy.na.Solve(routeLayer)
#Save the solved layer as a layer file
arcpy.management.SaveToLayerFile(routeLayer, outputLayer)
arcpy.AddMessage("Completed")