Краткая информация
Класс ArcPy, предназначенный для выполнения анализа размещения-распределения.
Обсуждение
Анализ размещения-распределения позволяет размещать пункты обслуживания таким образом, чтобы наиболее эффективно обеспечить точки спроса. Более подробно о выполнении анализа размещения-распределения.
Синтаксис
LocationAllocation (in_network)
Параметр | Описание | Тип данных |
in_network | Набор сетевых данных или сервис, который будет использоваться для сетевого анализа. Аргумент можно задать с помощью пути к каталогу с набором сетевых данных, объекту слоя набора сетевых данных, строки с именем слоя набора сетевых данных или URL-адреса портала для сервиса сетевого анализа. Сеть должна содержать хотя бы один режим перемещения. Для использования URL-адреса портала необходимо выполнить вход на портал под учетной записью с правами на маршрутизацию. Анализ расходует кредиты, если объект использует ArcGIS Online в качестве in_network. Дополнительные сведения см. в разделе Обзор сервисных кредитов. | String |
Свойства
Свойство | Описание | Тип данных |
accumulateAttributeNames (чтение и запись) | Список атрибутов стоимости, который будет суммироваться во время анализа. Эти накопившиеся атрибуты могут использоваться только для сведения; алгоритм решения при выполнении анализа использует только атрибут стоимости в соответствии с используемым режимом передвижения. По умолчанию пустой список. | String |
allowSaveLayerFile (чтение и запись) | Указывает, разрешается ли сохранение результата анализа в виде файла слоя, используя метод saveAsLayerFile получившегося объекта. True означает, что вы можете сохранить файл слоя. False означает, что сохранить нельзя. Значение по умолчанию True, если в анализе используется набор сетевых данных, и False при использовании сервиса портала. Разрешение сохранения файла слоя может замедлить анализ, если в анализе используется сервис портала. | Boolean |
decayFunctionParameterValue (чтение и запись) | Значение свойства decayFunctionType вместе со значением свойства decayFunctionParameterValue (β) определяет, насколько сильно сетевой импеданс между пунктами обслуживания и точками спроса влияет на выбор пунктов при расчете. Подробнее о затухании функции Размещение-Распределение. Этим свойством задается значение параметра для затухании функции. Значение по умолчанию равно 1. | Double |
decayFunctionType (чтение и запись) | Свойство decayFunctionType, или трансформация импеданса, задает уравнение для преобразования сетевой стоимости между пунктами обслуживания и точками спроса. Значение этого свойства вместе со значением свойства decayFunctionParameterValue (β) определяет, насколько сильно сетевой импеданс между пунктами обслуживания и точками спроса влияет на выбор пунктов при расчете. Подробнее о затухании функции Размещение-Распределение. Возвращается свойство и задается в качестве участвующего в перечислении DecayFunctionType. По умолчанию – DecayFunctionType.Linear. | Object |
defaultCapacity (чтение и запись) | Емкость, назначенная всем пунктам обслуживания. Это параметр активен только в тех случаях, когда для свойства problemType задано значение LocationAllocationProblemType.MaximizeCapacitatedCoverage. Значение по умолчанию равно 1. Значения defaultCapacity могут замещаться по пунктам обслуживания с использованием поля Capacity входных пунктов обслуживания. | Double |
defaultImpedanceCutoff (чтение и запись) | Максимальный импеданс, при котором точка спроса назначается объекту. Если используемый в анализе режим перемещения применяет основанный на времени атрибут импеданса, считается, что значения defaultImpedanceCutoff выражены в единицах свойства timeUnits. Если используемый в анализе режим перемещения применяет основанный на расстоянии атрибут импеданса, считается, что значения defaultImpedanceCutoff выражены в единицах свойства distanceUnits. Если атрибут импеданса режима передвижения не основан ни на времени, ни на расстоянии, считается, что значения defaultImpedanceCutoff выражены в единицах атрибута импеданса. Значение по умолчанию - None, что означает отсутствие примененного предельного значения. Значение defaultImpedanceCutoff может быть замещено на основе точек спроса с использованием поля TimeCutoff для атрибута импеданса на основе времени, поля DistanceCutoffдля атрибута импеданса на основе расстояния либо поля Cutoff - в случае, когда атрибут импеданса режима передвижения не основан ни на времени, ни на расстоянии. | Double |
distanceUnits (чтение и запись) | Единицы, используемые для расстояния перемещения в выходных данных анализа. Независимо от единиц измерения в стоимостных атрибутах набора сетевых данных выходные данные будут трансформированы в единицы, заданные в этом свойстве. Возвращается свойство и задается в качестве значения в перечислении DistanceUnits. По умолчанию – DistanceUnits.Kilometers. | Object |
facilityCount (чтение и запись) | Число пунктов обслуживания, которое должен выбрать механизм расчета. Значение по умолчанию равно 1. Этот параметр не применяется для типов задач LocationAllocationProblemType.MaximizeCoverage и LocationAllocationProblemType.TargetMarketShare. | Integer |
ignoreInvalidLocations (чтение и запись) | Указывает, будут ли игнорироваться неверные входные местоположения. Значение True указывает, что неверные входные местоположения будут игнорироваться, поэтому анализ будет успешным только при использовании допустимых местоположений. Значение False указывает, что недопустимые местоположения не будут проигнорированы и приведут к сбою анализа. Прежние версии:Сервисы маршрутизации на основе портала версий ArcGIS Enterprise старше, чем 10.9, всегда игнорируют некорректные входные местоположения. Метод возвращает исключение ValueError, если для ignoreInvalidLocations вы задали False, а сервис не поддерживает эту опцию. | Boolean |
lineShapeType (чтение и запись) | Тип линейной геометрии, создаваемой для отображения выходных данных анализа. Время в пути и расстояние всегда рассчитываются по сети, однако выходные линейные геометрии отображают соединения, вычисленные между входными точками анализа, а не путь по сети. Возвращается свойство и задается в качестве значения в перечислении LineShapeType. По умолчанию – LineShapeType.StraightLine. | Object |
networkDataSource (только чтение) | Полный путь каталога к набору сетевых данных, используемому для анализа. | String |
overrides (чтение и запись) | Задайте дополнительные опции, которые смогут повлиять на выполнение расчета при поиске решений задач сетевого анализа. Значение этого параметра должно быть задано в JavaScript Object Notation (JSON). К примеру, корректным значением является следующее: {"overrideSetting1" : "value1", "overrideSetting2" : "value2"}. Замещающее имя всегда заключено в двойные кавычки. Эти значения могут быть числовыми, булевыми или текстовыми. Значение по умолчанию является пустым, что означает отсутствие замещения каких-либо настроек механизма расчета. Замещения – дополнительные настройки, которые должны применяться только по итогам выполнения тщательного анализа результатов, которые будут получены до и после применения таких настроек. Список поддерживаемых настроек замещений для каждого расчета и их доступных значений можно получить, обратившись в службу технической поддержки Esri. | String |
problemType (чтение и запись) | Тип задачи, используемый для анализа. Подробнее о типах задач Размещение-Расположение. Возвращается свойство и задается в качестве участвующего в перечислении LocationAllocationProblemType. По умолчанию – LocationAllocationProblemType.MinimizeImpedance. | Object |
searchQuery (чтение и запись) | При размещении входных данных в сети, задает запрос на ограничение поиска поднабора объектов в классе исходных объектов. Эта опция полезна, если вы не хотите находить объекты, которые могут не подходить для сетевого положения. Например, если вы загружаете центроиды полигонов и не хотите размещать их на местных дорогах, можно создать запрос, который будет искать только основные дороги. Дополнительные сведения о способе размещения входных данных в сети Значение параметра указывается в виде списка с вложенными списками. Вложенный список состоит из двух значений, указывающих имя и выражение SQL для всех источников сети. Синтаксис выражения SQL несколько различается в зависимости от типа класса объектов источника сети. Например, если вы выполняете запрос к исходному классу объектов, хранящемуся в файловой или многопользовательской базе геоданных, шейп-файлам, SDC, то имена полей необходимо заключить в двойные кавычки: "CFCC". Если вы выполняете запрос к исходному классу объектов, хранящемуся в персональной базе геоданных, заключите поля в квадратные скобки: [CFCC]. Если запрос для конкретного источника указывать не нужно, используйте "#" в качестве значения для выражения SQL или исключите имя источника и выражение SQL из значения параметра. Если запрос для всех источников сети указывать не нужно, используйте "#" в качестве значения параметра. Например, значение параметра [["Streets","\"CFCC\" = 'A15'"], ["Streets_ND_Junctions",""]] определяет выражение SQL для исходного класса объектов Streets и отсутствие выражения для исходного класса объектов Streets_ND_Junctions. Обратите внимание, что двойные кавычки, окружающие имя поля CFCC, можно проигнорировать, добавив символы обратной косой черты, что позволит избежать ошибки анализа в интерпретаторе Python. По умолчанию запрос не используется. | List |
searchTolerance (чтение и запись) | Максимальный допуск поиска для расположения входных объектов в сети. Свойство возвращается и устанавливается как число двойной точности, и единицы этого значения доступны через свойство searchToleranceUnits. Значение по умолчанию равно 5000. Дополнительные сведения о способе размещения входных данных в сети | Double |
searchToleranceUnits (чтение и запись) | Единицы измерения для свойства searchTolerance. Возвращается свойство и задается в качестве значения в перечислении DistanceUnits. По умолчанию – DistanceUnits.Meters. | Object |
targetMarketShare (чтение и запись) | Процент от общего веса спроса, который должны удовлетворить пункты обслуживания решения. Механизм решения выбирает количество пунктов обслуживания, необходимое для обеспечения целевой доли рынка, заданной этим числовым значением. Значение по умолчанию - 10, и оно должно быть в диапазоне от 0 до 100. Это параметр активен только в тех случаях, когда для свойства problemType задано значение LocationAllocationProblemType.TargetMarketShare. | Double |
timeOfDay (чтение и запись) | Время суток для использования в анализе. Значение по умолчанию равно None, означающее, что анализ не будет зависеть от времени. | DateTime |
timeUnits (чтение и запись) | Единицы, используемые для времени перемещения в выходных данных анализа. Независимо от единиц измерения в стоимостных атрибутах набора сетевых данных выходные данные будут трансформированы в единицы, заданные в этом свойстве. Возвращается свойство и задается в качестве значения в перечислении TimeUnits. По умолчанию – TimeUnits.Minutes. | Object |
timeZone (чтение и запись) | Определяет, будет ли указанное в свойстве timeOfDay время интерпретироваться в местном времени входных местоположений или во всемирном координированном времени (UTC). Свойство возвращается и задается в качестве участвующего в перечислении TimeZoneUsage и применяется, только если значение свойства timeOfDay не равно None. По умолчанию – TimeZoneUsage.LocalTimeAtLocations. | Object |
travelDirection (чтение и запись) | Направление движения между пунктами обслуживания и точками спроса. Возвращается свойство и задается в качестве участвующего в перечислении TravelDirection. По умолчанию – TravelDirection.FromFacility. | Object |
travelMode (чтение и запись) | Режим передвижения, используемый для анализа. Значение возвращается и устанавливается как объект arcpy.nax.TravelMode, но оно также может быть установлено с использованием текстового имени режима передвижения или строки, содержащей действительное представление JSON режима передвижения. По умолчанию используется режим передвижения, определенный в наборе сетевых данных, используемом для анализа. | Object |
Обзор метода
Метод | Описание |
addFields (input_type, field_description) | Добавляет пользовательские поля к заданному входному классу. Эти поля будут включены в словарь сопоставления полей, созданный методом fieldMappings, и будут также доступны для использования посредством метода insertCursor. |
count (input_type) | Возвращает количество строк, добавленных к входному типу. |
fieldMappings (input_type, {use_location_fields}, {list_candidate_fields}) | Создает словарь NAClassFieldMappings, который сопоставляет входной тип с объектами arcpy.nax.NAClassFieldMap, позволяющими вам сопоставлять поля ваших входных данных свойствам механизма расчета. Словарь может использоваться в качестве входных данных аргумента field_mappings метода load. |
fieldNames (input_type, {use_location_fields}) | Получает список имен полей, поддерживаемых заданным входным типом. |
insertCursor (input_type, field_names) | Задает курсор записи для заданного типа выходных данных. Этот курсор предназначен для добавления строк непосредственно во входных данных. |
load (input_type, features, {field_mappings}, {append}, {max_features}) | Задает входные объекты, которые будут участвовать в анализе. |
solve () | Выполняет анализ размещения-распределения с помощью свойств, заданных для объекта LocationAllocation и загруженных входных данных. |
Методы
addFields (input_type, field_description)
Параметр | Описание | Тип данных |
input_type | The type of input to which the fields should be added. Параметр должен быть задан с помощью перечисления LocationAllocationInputDataType. | Object |
field_description [field_description,...] |
The fields and their properties that will be added to the input class. The value should be constructed as a list of lists with each row containing the following items:
Available field types are as follows:
The method will return an error if the field already exists in the table or if any of the field properties are invalid. | List |
count (input_type)
Параметр | Описание | Тип данных |
input_type | Тип подсчитываемых входных объектов. Параметр должен быть задан с помощью перечисления LocationAllocationInputDataType. | Object |
Тип данных | Описание |
Integer | Число строк. |
fieldMappings (input_type, {use_location_fields}, {list_candidate_fields})
Параметр | Описание | Тип данных |
input_type | The type of input for which the field mappings are returned. Параметр должен быть задан с помощью перечисления LocationAllocationInputDataType. См. описания полей, доступных для каждого типа входных данных | Object |
use_location_fields | Indicates whether network location fields should be included in the returned field mappings dictionary. Network location fields describe the point on the network where an object is located. You can use network location fields to more precisely control how your analysis inputs locate on the network and to save time when calling the solve method because the solver will not have to calculate the location fields from the geometry of the inputs. You can calculate location fields for a feature class using the Calculate Locations tool. Learn more about network location fields and how inputs are located on the network When this argument is set to True, the returned field mappings dictionary will contain network location fields. The default is False; the field mapping dictionary will not include network location fields. (Значение по умолчанию — False) | Boolean |
list_candidate_fields [list_candidate_fields,...] | Use this parameter to map additional, non-default fields from your input data into your analysis inputs. For example, if your input feature class contains a field named MyField, and you want this field to be included in your analysis inputs, pass the MyField field object to the list_candidate_fields parameter. MyField will be included in the returned field mapping dictionary and automatically mapped. When you call the load method using these field mappings, MyField will be included in the analysis inputs along with all the default fields. In many cases, these extra fields will be passed to the analysis output as well. The parameter should be specified as a list of arcpy.Field objects, which can be obtained from a given feature class or table using the arcpy.ListFields function. Learn more about best practices for setting up analysis inputs (Значение по умолчанию — None) | Field |
Тип данных | Описание |
Dictionary | Словарь NAClassFieldMappings, в котором ключами являются имена полей, а значениями - объекты arcpy.nax.NAClassFieldMap. |
fieldNames (input_type, {use_location_fields})
Параметр | Описание | Тип данных |
input_type | Тип входных данных, для которых возвращаются поддерживаемые имена полей. Параметр должен быть задан с помощью перечисления LocationAllocationInputDataType. См. описания полей, доступных для каждого типа входных данных | Object |
use_location_fields | Определяет, будут ли поля сетевого местоположения включены в возвращаемый список имён полей. Поля местоположения сети описывают точку сети, в которой расположен объект. Вы можете использовать поля местоположения сети для более точного контроля, как входные данные вашего анализа располагаются в сети в целях сохранения времени при вызове метода solve, поскольку механизм решения не будет вычислять поля местоположения из геометрии входных данных. Поле местоположения для класса объектов можно вычислить при помощи инструмента Вычислить местоположения. Дополнительные сведения о полях местоположения сети и способе размещения входных данных в сети Если значение аргумента - True, возвращаемый словарь сопоставления полей будет содержать только поля местоположения в сети. Значение по умолчанию - False; список имён полей не будет содержать поля местоположения в сети. (Значение по умолчанию — False) | Boolean |
Тип данных | Описание |
String | Список имен полей, поддерживаемых заданным входным типом. |
insertCursor (input_type, field_names)
Параметр | Описание | Тип данных |
input_type | Тип входных данных, для которых может использоваться курсор для вставки строк. Параметр должен быть задан с помощью перечисления LocationAllocationInputDataType. | Object |
field_names [field_names,...] | Список имен полей входного типа, значения в которых вы хотите задать при вставке строк с помощью курсора. Вы можете получить имена полей, которые поддерживаются входным типом с помощью метода fieldNames. См. описания полей, доступных для каждого типа входных данных Помимо обычных полей вы можете задать геометрию входных данных с использованием одного из токенов геометрии:
Токены SHAPE@XY и SHAPE@XYZ поддерживаются только точечными входными типами. При использовании токенов SHAPE@XY и SHAPE@XYZ, значения x, y и z должны быть заданы в пространственной привязке источника сетевых данных, используемого в анализе. | String |
Тип данных | Описание |
Object | Объект SolverInsertCursor, который можно использовать для записи объектов. |
load (input_type, features, {field_mappings}, {append}, {max_features})
Параметр | Описание | Тип данных |
input_type | The type of input feature to load. Параметр должен быть задан с помощью перечисления LocationAllocationInputDataType. | Object |
features | The input features to load. This parameter accepts the following input types:
For layer inputs, only selected features will be loaded. If a layer has a definition query, only the subset of features visible with the definition query will be loaded. The method also honors the Extent geoprocessing environment; only features in the specified extent will be loaded. | String |
field_mappings | An NAClassFieldMappings dictionary that maps the field names of the input type to arcpy.nax.NAClassFieldMap objects representing the mapping of fields from the input features. Valid input for this parameter can be constructed using the fieldMappings method. If field mappings are not specified, all fields from the input features that have the same name as the supported fields for the input type will be mapped. (Значение по умолчанию — None) | Dictionary |
append | Indicates whether the features being loaded should be appended to the existing set of features for the input type. A value of True indicates that the new features should be appended; the existing features will be preserved. This is useful if you want to load inputs from multiple feature classes or tables to use in a single analysis. This is the default. A value of False indicates that any existing features for the input type should be deleted and replaced with the features currently being loaded. (Значение по умолчанию — True) | Boolean |
max_features | The maximum number of features that can be loaded into the input type. This is useful if you are creating a tool or service and want an error returned if the size of the input exceeds the available resources. The load method will return an arcpy.nax.LimitError if the number of input features exceeds the max_features limit. If a value is not specified, no limit is enforced for the count of the input features. (Значение по умолчанию — None) | Integer |
solve ()
Тип данных | Описание |
Object | Объект arcpy.nax.LocationAllocationResult, который можно использовать для доступа к выходным данным и сообщениям механизма расчета. |
Пример кода
Выполняет анализ Размещения-Распределения.
# An example showing how to perform location-allocation analysis using inputs from feature classes.
import arcpy
arcpy.CheckOutExtension("network")
nds = "C:/data/NorthAmerica.gdb/Routing/Routing_ND"
nd_layer_name = "Routing_ND"
input_facilities = "C:/data/io.gdb/Facilities"
input_demand_points = "C:/data/io.gdb/DemandPoints"
output_lines = "C:/data/io.gdb/AllocationLines"
# Create a network dataset layer and get the desired travel mode for analysis
arcpy.nax.MakeNetworkDatasetLayer(nds, nd_layer_name)
nd_travel_modes = arcpy.nax.GetTravelModes(nd_layer_name)
travel_mode = nd_travel_modes["Driving Time"]
# Instantiate a LocationAllocation solver object
loc_alloc = arcpy.nax.LocationAllocation(nd_layer_name)
# Set properties
loc_alloc.travelMode = travel_mode
loc_alloc.travelDirection = arcpy.nax.TravelDirection.ToFacility
loc_alloc.problemType = arcpy.nax.LocationAllocationProblemType.MinimizeImpedance
loc_alloc.facilityCount = 3
loc_alloc.timeUnits = arcpy.nax.TimeUnits.Minutes
loc_alloc.defaultImpedanceCutoff = 15
loc_alloc.lineShapeType = arcpy.nax.LineShapeType.StraightLine
# Load inputs
loc_alloc.load(arcpy.nax.LocationAllocationInputDataType.Facilities, input_facilities)
loc_alloc.load(arcpy.nax.LocationAllocationInputDataType.DemandPoints, input_demand_points)
# Solve the analysis
result = loc_alloc.solve()
# Export the results to a feature class
if result.solveSucceeded:
result.export(arcpy.nax.LocationAllocationOutputDataType.Lines, output_lines)
else:
print("Solve failed")
print(result.solverMessages(arcpy.nax.MessageSeverity.All))