Краткая информация
Импортирует набор инструментов геообработки в ArcPy, обеспечивая доступ к входящим в этот набор инструментам.
Примечание:
Эта функция эквивалентна функции AddToolbox.
Обсуждение
Хотя все базовые наборы инструментов ArcGIS доступны в скрипте по умолчанию, пользовательские наборы инструментов или наборы инструментов сторонних разработчиков должны добавляться с помощью ImportToolbox, для того, чтобы использоваться в скрипте.
Другие наборы инструментов различного происхождения могут быть включены в любую из множества папок или баз геоданных. Среди них могут быть наборы инструментов, созданные вами или вашей организацией, а также наборы инструментов, загруженные из ArcGIS Online или других сайтов. В любом случае эти наборы инструментов должны быть импортированы в ArcPy, прежде чем их можно будет использовать как инструменты в Python.
Сервисы геообработки также можно импортировать с использованием точки с запятой в качестве разделителя.
Параметр | Синтаксис |
---|---|
input_file | "SOAP_URL;servicename;{username};{password}" "SOAP_URL;servicename;UseSSOIdentityIfPortalOwned" "SOAP_URL;servicename;token={token};{referer}" "<full path to AGS connection file>;servicename" |
URL-адрес должен быть URL-адресом SOAP, чтобы разрешить Python доступ к вашим сервисам. В большинстве случаев URL-адрес будет https://machine.domain.com/webadaptor/services. Если ваш сервис находится в папке на ArcGIS Server, используйте формат <folder name>/<service name> вместо формата servicename, указанного ниже. Имя пользователя и пароль не требуются, если сервис геообработки является общедоступным.
Для того, чтобы разрешить любому пользователю доступ к вашему инструменту, используйте ключевое слово UseSSOIdentityIfPortalOwned. При выполнении ImportToolbox появится диалоговое окно Вход, если пользователь еще не выполнил вход, иначе они увидят сообщение об успешном входе в систему.
import arcpy
toolbox = "https://logistics.arcgis.com/arcgis/services;World/ServiceAreas;UseSSOIdentityIfPortalOwned"
arcpy.ImportToolbox(toolbox)
arcpy.ServiceAreas.GenerateServiceAreas()
Примечание:
Будет использовано диалоговое окно Вход, запускающее автономный файл Python.
import arcpy
arcpy.SignInToPortal()
arcpy.ImportToolbox("https://domain.machine.com/webadaptor/services;ExtractLandUseData;UseSSOIdentityIfPortalOwned")
preprocess_result = arcpy.ExtractLandUseData.step1preprocess()
analyze_result = arcpy.ExtractLandUseData.step2analyze()
Если токен ранее уже был получен, он также может использоваться с ImportToolbox.
import arcpy
token = 'sadsa213d2j32jsdw02dm2'
referrer = 'https://www.arcgis.com/'
toolbox = 'https://logistics.arcgis.com/arcgis/services;' + \
'World/ServiceAreas;token={};{}'.format(token, referrer)
arcpy.ImportToolbox(toolbox)
result = arcpy.ServiceAreas.GenerateServiceAreas()
ImportToolbox также поддерживает работу с защищенными сервисами геообработки с помощью файла подключения ArcGIS Server (.ags). Использование файла .ags позволяет сохранять в нем учетные данные в скрытом виде.
import arcpy
arcpy.ImportToolbox('c:/logistics/logistics.ags;World/ServiceAreas')
arcpy.ServiceAreas.GenerateServiceAreas()
После импорта набора инструментов используйте функцию IsSynchronous, чтобы определить, является ли сервис геообработки синхронным или асинхронным. Если он асинхронный, регулярно проверяйте состояние выполняющегося задания до тех пор, пока оно не будет завершено, всякий раз, когда вы обращаетесь к сервису геообработки за пределами окна Python в ArcGIS AllSource. Посмотрите третий пример класса Result для простого кода.
Синтаксис
ImportToolbox (input_file, {module_name})
Параметр | Описание | Тип данных |
input_file | The geoprocessing toolbox that will be accessed from ArcPy. | String |
module_name | If the toolbox does not have an alias, the module_name value is required. When a tool is accessed through the ArcPy site package, the toolbox alias where the tool is contained is a required suffix (arcpy.<toolname>_<alias> or arcpy.<alias>.<toolname>). Since ArcPy depends on toolbox aliases to access and run the correct tool, aliases are important when importing custom toolboxes. It is recommended that you define a custom toolbox's alias; however, if the toolbox alias is not defined, a temporary alias can be set as the second parameter. | String |
Тип данных | Описание |
Module | Возвращает импортированный модуль. При необходимости имена инструментов можно получить из свойств модуля __all__. |
Пример кода
Импорт набора инструментов геообработки для использования в ArcPy.
import arcpy
# Import custom toolbox
arcpy.ImportToolbox("c:/tools/My_Analysis_Tools.atbx")
try:
# Run tool in the custom toolbox. The tool is identified by the tool name
# and the toolbox alias.
arcpy.myanalysis.GetPoints("c:/data/forest.shp")
except arcpy.ExecuteError:
print(arcpy.GetMessages(2))
Импортирует публично доступный набор инструментов.
import arcpy
tbx = 'https://machine.domain.com/arcgis/services/;Utilities/PrintingTools'
arcpy.ImportToolbox(tbx)
arcpy.PrintingTools.GetLayoutTemplatesInfo()