Использование Python в ArcGIS
Использование Python в ArcGIS
Модуль Arcpyo Написан и поддерживается ESRI. Был представлен с
ArcGIS 10.0o ArcPy представляет собой набор модулей, классов и
функций, которые обеспечивают доступ к 800+ инструментам геообработки (ArcToolbox)
o Документацию можно найти в справке ArcGISo Большинство скриптов геообработки будут начинаться с:import arcpy
Arcpy заменил более ранний модуль arcgisscripting
Модуль Arcpy в документацииИнструмент Clip (вырезать)
o Как только написали функцию. Увидели подсказку. Что включает этот метод и что он делает
Геообработка в ArcGISo Инструменты Диалоговое окно инструмента
Параметры
Обязательные
Необязательные
Ошибки
Предупреждения
Установка текущей рабочей областиПосле импорта ArcPy, большинство сценариев
начинаются с установления рабочего пространства дляизвлечения и хранения файлов
import arcpyarcpy.env.workspace = "c:/workshop"В приведенном выше коде env это класс, а workspace является cвойством класса env.
arcpy.<class>.<property>
Параметры средыo Свойства класса env
Использование инструментов• ArcPy предоставляет доступ ко всем инструментам ArcToolbox• Все инструменты представлены как функции
arcpy.<toolname_toolboxalias>(<parameters>)
Примерimport arcpyarcpy.env.workspace = "c:/data"arcpy.Clip_analysis("streams.shp", "study.shp", "result.shp")
Параметры инструментаClip_analysis (in_features, clip_features, out_feature_class, {cluster_tolerance})
Свойства параметровo Имяo Тип (класс пространственных объектов, целое, и т.д.)o Направление (входной или выходной)o Обязательные или необязательные
Синтаксис инструментаДиалоговое окно Инструмента
Python syntax: Clip_analysis(in_features, clip_features,out_feature_class, {cluster_tolerance})
Опциональные параметрыo Опциональные параметры взяты в фигурные скобки { }o Обязательные параметры в команде всегда расположены первыми.o Необязательные параметры всегда идут после обязательных.
Если нужно установить некоторые опциональные параметры
Buffer_analysis (in_features, out_feature_class buffer_distance_or_field, {line_side}, {line_end_type}, {dissolve_option}, {dissolve_field})
arcpy.Buffer_analysis("roads", "buffer", "100 METERS", "", "", "LIST", "Code")
arcpy.Buffer_analysis("roads", "buffer", "100 METERS", "#", "#", "LIST", "Code")
arcpy.Buffer_analysis("roads", "buffer", "100 METERS", dissolve_option=LIST, dissolve_field=Code)
Параметры инструментаØ Именам параметров для входных наборов данных предшествует “in_”
(Например, in_data, in_features, in_table, in_workspace)
Ø Для параметров выходных наборов данных добавляется “out_”
(Out_data, out_features, out_table)
Buffer_analysis (in_features, out_feature_class, buffer_distance_or_field, {line_side}, {line_end_type}, {dissolve_option}, {dissolve_field}, {method})
Параметры инструментаimport arcpyarcpy.env.workspace = "c:/data"arcpy.Clip_analysis("streams.shp", "study.shp", "result.shp")
Как сделать код более удобным? Использование переменных для параметров
import arcpyarcpy.env.workspace = "c:/data"infc = "streams.shp"clipfc = "study.shp"outfc = "result.shp"arcpy.Clip_analysis (infc, clipfc, outfc)
Параметры задаваемые пользователямиimport arcpyinfc = arcpy.GetParameterAsText(0)clipfc = arcpy.GetParameterAsText(1)outfc = arcpy.GetParameterAsText(2)arcpy.Clip_analysis(infc, clipfc, outfc)
GetParameterAsText (index)Получает указанный параметр в виде текстовой строки по его индексу позиции из списка параметров.
Возвращаемое значение
Объект ResultПри выполнении инструмента геообработки результат его
работы возвращается в виде объекта Result.
import arcpyarcpy.env.workspace = "c:/data"myresult = arcpy.Clip_analysis("streams.shp“,"study.shp","result.shp")print myresult
Результатом будет путь к выходному набору данных
c:/data/result.shp
Классы Arcpy§ Классы служат основой для создания объектов
§ Примеры классов-- SpatialReference, Extent, env
§ Классы имеют свойства и методы -- SpatialReference.name-- SpatialReference.type§ Синтаксисarcpy.<classname>(<parameters>)
Extent (arcpy)Экстентом является прямоугольник, заданный координатами левого нижнего угла и верхнего правого угла в единицах карты.
СинтаксисExtent ({XMin}, {YMin}, {XMax}, {YMax}, {ZMin}, {ZMax}, {MMin}, {MMax})
Свойства
Классы ArcpyБольшинство параметров инструментов легко задать с помощью строки или числа.Некоторые нет:SpatialReferenceExtent
Классы могут быть использованы для определения данных параметров
Классы arcpyo Пример содержания файла .prj
o Для того чтобы избежать работы с подобной строкой мы можем использовать
SpatialReference class
Классы Arcpy. ПримерВ примере создается Spatial Reference объект на основе существующего файла .prj. В дальнейшем используются свойства данного объектаimport arcpyprjfile = "D:/Data/streams.prj"spatialref = arcpy.SpatialReference(prjfile)myref = spatialRef.nameprint myRef
В результате выполнения будет возвращено
NAD_1983_StatePlane_Florida_East_FIPS_0901_Feet
Функции ArcpyØ Все инструменты геообработки являются функциями arcpy
Ø Дополнительные функции arcpy- Описание данных- Получение и настройка параметров- многие другие
Ø Общий синтаксисarcpy.<functionname>(<arguments>)
Функции Arcpy• Cursors Курсоры• Describing data Описание данных• Environment and settings Параметры среды и настройка• Fields Поля• General Общие• General data functions Общие функции данных• Getting and setting parameters Получение и настройка параметров• Licensing and installation Лицензирование и установка• Listing data Работа со списками данных • Messaging and error handling Сообщения и обработка ошибок• Progress dialog Диалоговое окно хода выполнения• Tools and toolboxes Инструменты и наборы инструментов
Функция описания DescribеФункция Describe используется для определения свойств
набора данных.
Синтаксисimport arcpy<variable> = arcpy.Describe(<input dataset>)Пример
import arcpydesc = arcpy.Describe("c:/data/streams.shp")print desc.shapeType
Списки данныхv ArcPy содержит ряд функций, предназначенных для
создания списков– ListFields– ListIndexes– ListDataset– ListFeatureClasses– ListFiles– ListRasters– ListTables– ListWorkspaces– ListVersions
v Схожая логика– Создается список– Используется цикл for для итерации списка
ListFeatureClassesv Функция ListFeatureClasses возвращает список классов пространственных объектов в текущей рабочей области.
v Общий синтаксисListFeatureClasses ({wild_card}, {feature_type},
{feature_dataset})
v Примерimport arcpyfrom arcpy import envenv.workspace = "c:/data"fclist = arcpy.ListFeatureClasses()
[u'amtrak_stations.shp', u'cities.shp', u'counties.shp', u'new_mexico.shp', u'railroads.shp']
ListFeatureClasses• Без фильтра:fclist = arcpy.ListFeatureClasses()
• Фильтр на основе параметра группового символаfclist = arcpy.ListFeatureClasses("w*")
• Фильтр на основе типа объектаfclist = arcpy.ListFeatureClasses("", "point")
ListFieldsv Функция ListFields перечисляет поля в шейп-файле, классе пространственных объектов или таблице в выбранном наборе данных.
v Общий синтаксисListFields (dataset, {wild_card}, {field_type})
v Примерimport arcpyarcpy.env.workspace = "c:/data"fieldlist = arcpy.ListFields("roads.shp")