Skip to main content

Переход с arcpy.na на ArcGIS Pro

Скрипты Python, созданные в ArcGIS for Desktop с помощью arcpy.na, должны быть изменены перед запуском в ArcGIS Pro. Дополнительно, если вы хотите сохранить обратную совместимость с ArcGIS Desktop, следует учесть некоторые особенности. В следующих разделах приведены необходимые изменения и некоторые особенности.

Использование Python 3

ArcGIS Pro использует Python 3. Возможно, придется изменить некоторые элементы стандартного синтаксиса Python. Если вы собираетесь использовать автономные скрипты, вам необходимо установить 64-разрядный Python.

Создание слоев сетевого анализа

Начиная с ArcGIS Pro, слои сетевого анализа можно создавать с помощью нового набора инструментов геообработки. Старые инструменты для создания слоев сетевого анализа не рекомендуются к использованию. Инструмент Создать слой маршрута заменен на Создать слой анализа маршрута, то же сделано для других типов слоев сетевого анализа. Новые инструменты предлагают расширенную функциональность, такую как возможность работы с режимами передвижения и использования для анализа как локального набора сетевых данных, так и сервиса портала. Устаревшие инструменты продолжат работать в ArcGIS Pro, но их следует использовать только для сохранения обратной совместимости скрипта с ArcGIS Desktop или с версиями ArcGIS Pro до 1.2.

Задание параметров среды рабочей области

В ArcGIS Pro слои сетевого анализа хранят свои данные на диске в классах пространственных объектов файловой базы геоданных. При создании нового слоя сетевого анализа в скрипте Python (например, используя arcpy.na.MakeRouteAnalysisLayer()), необходимо сначала явно задать среду рабочей области для файловой базы геоданных, в которой вы собираетесь хранить данные слоя, используя arcpy.env.workspace = "<path to file gdb>". После создания слоя в файловую базу геоданных будет добавлен новый набор классов объектов, содержащий соответствующие подслои для классов пространственных объектов.

Работа с файлами слоя

Файлы слоя, созданные в ArcGIS Desktop, имеют расширение .lyr, а файлы слоя, созданные в ArcGIS Pro, имеют расширение .lyrx. Существующие файлы слоев сетевого анализа .lyr могут быть использованы в скриптах ArcGIS Pro, но они будут автоматически конвертированы в новый формат слоев и данные из них будут сохранены в классы объектов на диске. Перед использованием файла слоя сетевого анализа .lyr в скрипте, необходимо сначала явно задать параметр среды Рабочая область как файловую базу геоданных, в которой вы собираетесь хранить данные слоя, используя arcpy.env.workspace = "<path to file gdb>". Если вы хотите сохранить существующий файл слоя сетевого анализа .lyr в новом формате .lyrx, используйте arcpy.management.SaveToLayerFile(). Независимо от того, куда вы сохранили файл .lyrx, данные слоя остаются в файловой базе геоданных, указанной в среде рабочей области.

Работа с объектами слоев

Модуль arcpy.mapping теперь заменен модулем arcpy.mp, и эти изменения повлияют на работу с объектами слоев сетевого анализа в скриптах. В частности, изменился синтаксис доступа к подслоям, получения объектов слоев из файлов слоев и сохранение объектов слоев в качестве файлов слоев.

Для создания объекта слоя из существующего файла слоя сетевого анализа .lyrx (или .lyr), используйте arcpy.mp.LayerFile(lyrxPath).listLayers()[0]. Учтите, что arcpy.mapping.ListLayers() был заменен на layer_object.listLayers(), а вместо arcpy.mp.LayerFile следует использовать arcpy.mapping.Layer. Метод listLayers возвращает список объектов слоев, содержащихся в файле .lyrx; первый элемент – это всегда объект слоя сетевого анализа, а остальные объекты являются подслоями. Для сохранения слоя сетевого анализа в файл .lyrx, используйте NA_layer_object.saveACopy("<path to output .lyrx>").

Чтобы получить доступ к определенному подслою слоя сетевого анализа, вы можете использовать групповой символ в listLayers для фильтрации результатов, если вы знаете имя подслоя, к которому нужно получить доступ: facilities_sublayer = NA_layer_object.listLayers(facilities_layer_name)[0]. Если вы не знаете имя подслоя или хотите обеспечить работу скрипта в локализованных версиях ArcGIS Pro, вы можете получить имена подслоёв с помощью arcpy.na.GetNAClassNames, как это делали в ArcGIS Desktop. Вы больше не можете получить доступ к подслоям, используя строку пути, например, "Route/Stops" для подслоя Остановки в слое сетевого анализа с именем Маршрут.