Resumen
Resuelve el problema de capa de análisis de red en base a las propiedades y las ubicaciones de red.
Uso
Cuando la solución falla, los mensajes de advertencia y error proporcionan información útil acerca de las razones de la falla.
Asegúrese de especificar todos los parámetros en la capa de análisis de red necesarios para resolver el problema antes de ejecutar esta herramienta.
La herramienta consumirá créditos cuando la capa de análisis de red haga referencia a ArcGIS Online como la fuente de datos de red. Para obtener más información, consulte Descripción general de los créditos de servicio.
Sintaxis
arcpy.na.Solve(in_network_analysis_layer, {ignore_invalids}, {terminate_on_solve_error}, {simplification_tolerance}, {overrides})
Parámetro | Explicación | Tipo de datos |
in_network_analysis_layer | La capa de análisis de red en la que se calculará el análisis. | Network Analyst Layer |
ignore_invalids (Opcional) | Especifica si se ignorarán las ubicaciones de entrada no válidas.
| Boolean |
terminate_on_solve_error (Opcional) | Especifica si la ejecución de la herramienta debe finalizar si encuentra un error al resolver.
| Boolean |
simplification_tolerance (Opcional) | La tolerancia que determina el grado de simplificación para su geometría de salida. Si se especifica una tolerancia, debe ser mayor que cero. Puede elegir una unidad preferida; la predeterminada es grados decimales. Especificar una tolerancia de simplificación tiende a reducir el tiempo que lleva renderizar las rutas o áreas de servicio. La desventaja, sin embargo, es que simplificar la geometría elimina los vértices, que pueden aminorar la exactitud espacial de la salida a escalas mayores. Debido a que una línea con solo dos vértices no se puede simplificar más, este parámetro no tiene efecto en los tiempos de dibujo para salida de segmento único, como rutas de línea recta, líneas de matriz de coste OD y líneas de ubicación y asignación. | Linear Unit |
overrides (Opcional) | Especifique cualquier parámetro adicional que pueda influir en el comportamiento del solucionador al buscar soluciones para problemas de análisis de red. Se debe especificar el valor para este parámetro en la notación de objetos JavaScript (JSON). Por ejemplo, un valor válido tiene el siguiente formato {"overrideSetting1" : "value1", "overrideSetting2" : "value2"}. El nombre del parámetro de invalidación siempre está incluido entre comillas dobles. Los valores pueden ser un número, operador booleano o cadena de caracteres. El valor predeterminado para este parámetro es ningún valor, lo que indica que no se debe invalidar ningún parámetro del solucionador. Las invalidaciones son parámetros avanzados que se deben utilizar solamente después de un análisis cuidadoso de los resultados obtenidos antes y después de aplicar los parámetros. Puede ponerse en contacto con el Soporte técnico de Esri para obtener una lista de los parámetros de invalidación compatibles para cada solucionador y sus valores aceptables. | String |
Salida derivada
Nombre | Explicación | Tipo de datos |
output_layer | La capa de análisis de red resuelta. | Capa de Network Analyst |
solve_succeeded | Booleano que indica si la solución fue correcta o no. | Booleano |
Muestra de código
Ejecuta la herramienta utilizando todos los parámetros.
arcpy.na.Solve("Route", "HALT", "TERMINATE", "10 Meters")
El siguiente script independiente de Python muestra cómo se puede utilizar la herramienta Solve para realizar un análisis de instalación más cercana y guardar los resultados en un archivo de capa.
# Name: Solve_Workflow.py
# Description: Solve a closest facility analysis to find the closest warehouse
# from the store locations and save the results to a layer file on
# disk.
# 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/Paris.gdb"
network = os.path.join(input_gdb, "Transportation", "ParisMultimodal_ND")
layer_name = "ClosestWarehouse"
travel_mode = "Driving Time"
facilities = os.path.join(input_gdb, "Analysis", "Warehouses")
incidents = os.path.join(input_gdb, "Analysis", "Stores")
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
#Create a new closest facility analysis layer.
result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(network,
layer_name, travel_mode,
"TO_FACILITIES",
number_of_facilities_to_find=1)
#Get the layer object from the result object. The closest facility layer can
#now be referenced using the layer object.
layer_object = result_object.getOutput(0)
#Get the names of all the sublayers within the closest facility layer.
sublayer_names = arcpy.na.GetNAClassNames(layer_object)
#Stores the layer names that we will use later
facilities_layer_name = sublayer_names["Facilities"]
incidents_layer_name = sublayer_names["Incidents"]
#Load the warehouses as Facilities using the default field mappings and
#search tolerance
arcpy.na.AddLocations(layer_object, facilities_layer_name,
facilities, "", "")
#Load the stores as Incidents. Map the Name property from the NOM field
#using field mappings
field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
incidents_layer_name)
field_mappings["Name"].mappedFieldName = "NOM"
arcpy.na.AddLocations(layer_object, incidents_layer_name, incidents,
field_mappings, "")
#Solve the closest facility layer
arcpy.na.Solve(layer_object)
#Save the solved closest facility 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))
Entornos
Información de licenciamiento
- Basic: Limitado
- Standard: Limitado
- Advanced: Limitado