Перечисление и описание наборов данных с помощью Python

Открытие проекта и обзор наборов данных

Прежде чем вы начнете использовать Python для перечисления и описания наборов данных, вы загрузите и извлечете .zip файл данных проекта и просмотрите наборы данных в ArcGIS Pro.

  1. Загрузите данные для этого руководства и извлеките содержимое в папку на своем компьютере.

    Файл .zip содержит папку с именем PythonDesc.

    В этом руководстве данные находятся в папке C:\Lessons\PythonDesc\. Можно использовать другую папку, но тогда надо учитывать, что и пути в последующих инструкциях и коде должны быть другими.

  2. Запустите ArcGIS Pro.
  3. В ArcGIS Pro в разделе Новый проект щелкните Запуск без шаблона.

    Запуск без шаблона.

    Открывается новый проект под названием Untitled. Вы будете использовать ArcGIS Pro только для просмотра данных, поэтому нет необходимости переименовывать проект и сохранять свою работу.

  4. Если панель Каталог не видна, на вкладке Вид щелкните Панель Каталог.
  5. В панели Каталог щелкните правой кнопкой мыши Папки и щелкните Добавить подключение к папке.

    Добавить подключение к папке.

  6. В окне Добавить подключение к папке перейдите в папку, в которую вы распаковали файл PythonDesc.zip (C:\Lessons), щелкните папку PythonDesc и нажмите ОК.
  7. В панели Каталог разверните Папки и разверните PythonDesc.

    Содержимое папки PythonDesc

    Папка содержит два шейп-файла (bike_routes.shp и watersheds.shp), а также текстовый файл (bike_racks.csv) и таблицу базы данных (gardens.dbf). Также она содержит базу геоданных DC.gdb.

  8. Разверните DC.gdb.

    развернута.

    База геоданных содержит три класса пространственных объектов (boundary, neighborhoods и public_schools), одну таблицу (car_share_locations) и один набор данных пространственных объектов (Transportation).

  9. Разверните Transportation.

    Набор данных Transportation развернут.

    Набор классов объектов содержит четыре класса пространственных объектов (roads, street_lights, traffic_analysis_zones и traffic_junctions) и один набор сетевых данных (traffic).

    Типичные для ГИС-проектов наборы данных: классы пространственных объектов и табличные данные в различных форматах, а также другие элементы для организации этих данных. Вы будете использовать код Python для идентификации этих наборов данных на основе их типа и других свойств. Обратите внимание, что эти группировки означают, что данные проекта имеют многоуровневую вложенную структуру.

    Прежде чем приступить к работе с кодом Python, вы изучите эти наборы данных, просматривая файлы на своем компьютере.

  10. Откройте Microsoft File Explorer и перейдите к папке C:\Lessons\PythonDesc\ или другому местоположению, куда вы поместили папку PythonDesc.

    Содержимое папки в проводнике Windows

    File Explorer показывает вам файлы. Две автономные таблицы, bike_racks.csv и gardens.dbf, представляют собой отдельные файлы. Шейп-файлы bike_routes и watersheds состоят из нескольких файлов с одинаковыми именами и разными расширениями. База геоданных DC представляет собой папку с расширением файла .gdb.

  11. В File Explorer разверните папку DC.gdb.

    Содержание базы геоданных

    В этой папке десятки файлов. Нет четко распознаваемой связи между этими файлами и элементами данных, которые видны при просмотре базы геоданных на панели Каталог в ArcGIS Pro. Например, вы не можете идентифицировать один или несколько файлов, составляющих один конкретный класс пространственных объектов. Это важно при использовании наборов данных ГИС в коде Python, поскольку это влияет на доступ и работу с наборами данных в разных форматах.

  12. Вы изучили организацию данных в ArcGIS Pro и в проводнике Windows. Далее вы откроете файл Python и начнете использовать Python для перечисления и описания этих данных.

Откройте файл скрипта Python

В этом руководстве вы будете писать код Python с использованием IDLE. IDLE — это базовый редактор Python, входящий в состав ArcGIS Pro.

Чтобы убедиться, что для запуска вашего кода используется правильная версия Python, установленная с ArcGIS Pro, вы будете использовать ярлык для запуска IDLE.

Если у вас также установлен ArcGIS Desktop (ArcMap), контекстное меню будет включать ярлык Редактировать в IDLE. Не используйте этот ярлык; он откроет более старую версию Python.

  1. В File Explorer вернитесь на уровень выше в папку C:\Lessons\PythonDesc\.
  2. Щелкните правой кнопкой describe_data.py и щелкните Редактировать в IDLE (ArcGIS Pro).

    Редактировать в IDLE (ArcGIS Pro)

    Открытие IDLE таким образом открывает скрипт, используя активную среду Python ArcGIS Pro. Это гарантирует, что используется правильная версия Python. Хотя в этом руководстве в качестве редактора кода используется IDLE, код также работает и в других редакторах Python, например, в PyCharm или Spyder, а также в окне Python или Блокнотах внутри ArcGIS Pro.

    Примечание:
    Если Редактировать в IDLE (ArcGIS Pro) не появляется в контекстном меню, щелкните Пуск, разверните ArcGIS и щелкните Командная строка Python. В окне Командная строка Python введите idle и нажмите Enter. Появится IDLE (Python 3.7 Shell). Щелкните Файл и щелкните Открыть. Найдите и откройте файл description_data.py.

    Откроется скрипт.

    Скрипт открыт в IDLE.

    Сценарий включает в себя три строки кода для начала работы. Первая строка - import arcpy - импортирует пакет ArcPy. Это обеспечивает то, что функциональные возможности ArcPy, включая функции, которые вы будете использовать для составления списка и описания наборов данных ГИС, будут доступны в скрипте.

    Вторая строка указывает путь, по которому находятся данные. Это значение присваивается переменной с именем mypath.

    В пути используется одинарная косая черта (/) вместо одной обратной косой черты (\). Одна обратная косая черта в Python используется в качестве escape-символа и ее использование в путях может иметь непредвиденные последствия. Если за ней следуют определенные другие символы, они кодируют особое поведение. Например, \t означает вкладку, и такой путь, как C:\Lessons\toronto.gdb, приведет к добавлению в путь вкладки, что вызовет ошибку.

    Вместо одной косой черты можно добавить перед строкой букву r (чтобы строка не обрабатывалась) (r"C:\Lessons\PythonDesc") или использовать двойную обратную косую черту ("C:\\Lessons\\PythonDesc"). Все три обозначения будут работать.

    Третья строка задает рабочую область. Рабочая область — это место по умолчанию для файлов, с которыми вы будете работать, таких как входные и выходные наборы данных. Рабочее пространство устанавливается в переменную mypath. Хотя рабочую область можно задать напрямую, не используя переменную mypath, использование отдельной переменной для пути, где находятся данные, дает определенные преимущества.

  3. Если вы сохранили папку PythonDesc в месте, отличном от C:\Lessons\PythonDesc\, измените в скрипте путь, чтобы он указывал на местоположение, в котором вы сохранили папку.

    Например, если вы извлекли данные для этого руководства в папку C:\EsriLessons, вы должны отредактировать вторую строку следующим образом:

    mypath = "C:/EsriLessons/PythonDesc"

    Если путь относительно длинный, вы можете скопировать его из Проводника и вставить в скрипт. Вы можете сделать это, щелкнув папку правой кнопкой мыши (Windows 11) или щелкнув папку правой кнопкой мыши, удерживая нажатой клавишу Shift (Windows 10), и выбрав Копировать путь. Затем вы можете выбрать и удалить старый путь из скрипта и нажать Ctrl+V, чтобы вставить новый путь.

    Чтобы использовать путь в качестве допустимой рабочей области, он должен быть строкой Python, то есть путь должен быть заключен в кавычки. Вам также необходимо использовать для пути один из трех, упомянутых выше, стилей. Если вы скопируете путь Windows, он будет содержать обратную косую черту. Вы можете заменить каждую обратную косую черту двумя обратными косыми чертами или одной прямой косой чертой. Для длинных путей самым простым решением является добавление r перед строкой, чтобы сделать ее необрабатываемой строкой. Это гарантирует, что обратная косая черта не будет читаться как escape-символ.

    Теперь вы будете тестировать свой код.

  4. Нажмите Файл и нажмите Сохранить.
  5. Нажмите Запустить и нажмите Запустить модуль.

    Появится окно IDLE Shell с сообщением о перезапуске интерпретатора для вашего скрипта. Отображается путь к скрипту и имя файла. После паузы в несколько секунд окно IDLE Shell возвращает >>>.

    Интерпретатор

    Может показаться, что ничего не произошло, потому что скрипт не имеет никаких инструкций для вывода данных в интерпретатор. Позже вы добавите выражения печати в свой код, чтобы вернуть информацию в интерпретатор.

    IDLE Shell также является местом, где вы можете печатать строки кода и немедленно их запускать.

  6. В IDLE Shell после >>> введите print(arcpy.env.workspace) и нажмите Enter.

    Напечатайте рабочую область.

    Путь к рабочей области, который вы задали в скрипте, напечатан в IDLE Shell. Скрипт импортировал модуль arcpy, установил переменную mypath, равную строке, которая содержала путь к данным урока, и задал рабочую область arcpy по этому пути. Напечатав значение arcpy.env.workspace в интерпретаторе, вы показали, что скрипт работает.

  7. Закройте окно IDLE Shell.

С установленной рабочей областью вы можете ссылаться на набор данных, используя только его имя файла без полного пути.

Опишите набор данных с помощью Python

Теперь, когда скрипт задает рабочую область, вы можете использовать Python для описания свойств набора данных в этой рабочей области.

Для этого вы будете использовать функцию da.Describe().

  1. В окне редактора IDLE щелкните после строки arcpy.env.workspace = mypath и нажмите Enter, чтобы добавить новую строку.
  2. Введите следующий код и нажмите Enter:

    desc = arcpy.da.Describe("bike_routes.shp")

    Опишите велосипедные маршруты.

    Функция da.Describe() — это функция модуля arcpy.da, которая используется для рабочих процессов доступа к данным. Функция возвращает словарь Python. Словарь Python состоит из пар ключей и соответствующих им значений. Ключи в словаре, возвращаемые функцией da.Describe(), являются свойствами набора данных.

  3. Добавьте новую строку после строки desc = arcpy.da, добавьте следующий код и нажмите Enter:

    print(f'baseName: {desc["baseName"]}')

    При запуске скрипта печатается значение свойства baseName. В приведенной выше строке кода desc — это словарь свойств, а baseName — ключ в виде строки. Выражение desc["baseName"] возвращает значение, связанное с этим ключом в словаре.

    Используемый здесь стиль форматирования печати известен как f-строка. F-строки также называются литералы форматированных строк. Это строки с буквенным префиксом f, содержащие переменные в фигурных скобках. Эти переменные заменяются значениями во время выполнения. В приведенном выше примере кода вокруг значения baseName используются двойные кавычки, чтобы сделать его строкой. Поскольку кавычки также используются для f-строк, необходимо использовать одинарные кавычки, чтобы отличить их от двойных кавычек. Эти различные типы кавычек могут использоваться взаимозаменяемо в Python, при условии, что они используются последовательно.

    Следующее выражение также является верным:

    print(f"baseName: {desc['baseName']}")

    Полный код пока выглядит следующим образом:

    import arcpy
    mypath = "C:/Lessons/PythonDesc"
    arcpy.env.workspace = mypath
    desc = arcpy.da.Describe("bike_routes.shp")
    print(f'baseName: {desc["baseName"]}')

    Если вы сохранили данные в другом месте, ваша строка mypath будет другой.

  4. Щелкните Файл и затем Сохранить, чтобы сохранить скрипт.

    Вы также можете использовать сочетание клавиш Ctrl+S.

  5. Нажмите Запустить и нажмите Запустить модуль.

    Сообщить о базовом имени bike_routes.

    Появится IDLE Shell с результатом:

    baseName: bike_routes

    Базовое имя данных — это имя файла без расширения файла.

    При обучении кодированию часто случаются ошибки. Типичная ошибка, с которой вы можете столкнуться при запуске этого скрипта, показана в следующем шаге.

  6. Измените строку desc = arcpy.da.Describe("bike_routes.shp"), удалив символ подчеркивания из bike_routes.

    desc = arcpy.da.Describe("bikeroutes.shp")

  7. Сохраните и запустите скрипт.

    IDLE Shell показывает сообщение об ошибке:

    ValueError: Object: Error in accessing describe

    Сообщение об ошибке значения

    Ошибка предполагает, что существует проблема с функцией da.Describe(). Причина этой ошибки в том, что имя класса пространственных объектов написано неправильно, поэтому его невозможно найти. Если вы столкнулись с этой ошибкой, дважды проверьте правильность имени. Другая возможная ошибка заключается в том, что была неправильно задана рабочая область, поэтому обязательно проверьте путь, используемый для вашей рабочей области.

    Примечание:
    Помимо da.Describe(), для изучения свойств наборов данных ГИС вы можете использовать обычную функцию ArcPy Describe(). Синтаксис немного отличается от da.Describe(). Функция Describe() возвращает объект Describe, и вы можете использовать этот объект для проверки его свойств.

  8. В окне редактора IDLE измените строку, чтобы исправить имя класса пространственных объектов.

    desc = arcpy.da.Describe("bike_routes.shp")

  9. После строки print(f'baseName: добавьте следующие строки:

    print(f'extension: {desc["extension"]}')
    print(f'dataType: {desc["dataType"]}')
    print(f'shapeType: {desc["shapeType"]}')

  10. Сохраните и запустите скрипт.

    Результаты с дополнительными свойствами напечатаны

    Печатаются базовое имя, расширение файла, тип данных и тип геометрии входного набора данных. В панели Каталог легко увидеть, что bike_routes.shp представляет собой линейный шейп-файл, но теперь вы можете получить доступ к этим свойствам и в скрипте Python.

    Есть много других свойств, но эти обеспечивает общее понимание каждого набора данных. Полный список свойств можно найти в разделе Документация ArcPy на страницах справки ArcGIS Pro.

    Существует множество различных свойств, и на страницах справки они организованы в группы свойств. Группа свойств Describe по ссылке выше включает некоторые общие свойства для всех наборов данных, в частности baseName, extension и datatype. Помимо этого, есть группы свойств для определенных типов наборов данных. Например, группа свойств FeatureClass включает свойство shapeType, использованное в предыдущем примере кода. Не все наборы данных будут иметь это свойство, поскольку они могут не содержать никакой геометрии. Некоторые свойства может быть сложно найти при навигации по страницам справки. Например, свойство экстента находится в группе свойств Dataset. Группы свойств - это только организация страниц справки и они не влияют на код.

Далее вы замените ссылку на набор данных, чтобы использовать скрипт для изучения других наборов данных.

Опишите другие наборы данных

Теперь, когда у вас есть скрипт, описывающий набор данных bike_routes.shp, вы измените его для описания других данных.

  1. Измените строку desc = arcpy.da.Describe("bike_routes.shp"), заменив bike_routes.shp на watersheds.shp.

    desc = arcpy.da.Describe("watersheds.shp")

  2. Сохраните и запустите скрипт.

    Результаты для шейп-файла с водоразделами

  3. Измените строку desc = arcpy.da.Describe("bike_routes.shp"), заменив watersheds.shp на bike_racks.csv.

    desc = arcpy.da.Describe("bike_racks.csv")

  4. Сохраните и запустите скрипт.

    Ключевая ошибка в файле CSV

    IDLE Shell показывает сообщение об ошибке.

    KeyError: 'shapeType'

    Это означает, что при использовании словаря произошла ошибка, поскольку ключ словаря shapeType не существовал. Если подумать, что означает shapeType, это имеет смысл. Текстовый файл не имеет геометрии, поэтому его нельзя отнести к категории Point, Polyline или Polygon. Свойство отсутствует в словаре, поскольку оно не имеет смысла для файлов CSV.

    Словарь, возвращаемый da.Describe(), включает только те ключи и значения, которые имеют смысл для данного типа данных.

    Вы можете предотвратить возникновение ошибки, выполнив проверку.

  5. Щелкните скрипт после строки print(f'dataType: {desc["dataType"]}') и нажмите Enter, чтобы добавить новую строку.

    Добавьте новую строку.

  6. После строки print(f'dataType: добавьте следующую строку:

    if "shapeType" in desc:

    Строка содержит выражение if. Строки выражения If включают проверку, в данном случае определяющую, есть ли строка "shapeType" в словаре desc. После теста - за выражениями if - следует двоеточие. Следующая строка — это первая строка блока кода, который выполняется при условии, что тест оценивается как True. Строки в блоке кода должны иметь отступ, чтобы показать Python, что они вместе и должны выполняться только в том случае, если тест верен.

  7. Щелкните в начале последней строки и добавьте четыре пробела, чтобы сделать отступ строки.

    Сделайте отступ в последней строке.

    Последние две строки кода выглядят следующим образом:

    if "shapeType" in desc:
        print(f'shapeType: {desc["shapeType"]}')

  8. Сохраните и запустите скрипт.

    Результаты для файла CSV

    Результаты для файла CSV печатаются без ошибок. Выводятся первые три свойства, затем выражение if проверяет, содержит ли словарь "shapeType", и, поскольку его нет, последняя строка не выполняется.

    Как узнать, какие свойства доступны для данного набора данных?

    Вы можете увидеть свойства, распечатав весь словарь.

    Далее вы увидите, как напечатать свойства.

Распечатать все свойства набора данных

Вы узнали, как напечатать определенные ключи и значения для словаря и как проверить, есть ли конкретный ключ в словаре. Теперь вы узнаете, как напечатать весь словарь.

  1. Выберите последние пять строк скрипта.

    Сюда входят строки, выводящие первые три свойства, а также выражение if и последняя строка печати.

  2. Выделив строки кода, нажмите Формат, затем нажмите Закомментировать область.

    Закомментировать область

    Перед выбранными строками теперь стоят двойные знаки решетки. Добавление # преобразует строку в комментарий для Python, поэтому эти строки не будут выполняться при выполнении кода.

    Вы также можете сделать это, введя с клавиатуры знак решетки в начале каждой строки, но опция меню в IDLE позволяет вам сделать это для нескольких строк за один шаг.

    Вы можете вернуть состояние строк, выбрав строки и в меню Формат выбрав Раскомментировать область.

  3. Добавьте новую строку кода внизу скрипта и удалите все отступы.
  4. Добавьте следующие строки:

    for k, v in desc.items():
        print(f"{k}: {v}")

    Цикл для печати всех свойств.

    Первая из двух новых строк запускает цикл for. Циклы For берут набор входных данных и блок кода с отступом и запускают блок кода для каждого из входных данных. В этом случае цикл for перебирает пары ключ-значение, возвращаемые при вызове метода items для словаря desc. См. документацию Python для получения дополнительной информации о цикличности в словарях.

    Вторая из двух строк имеет отступ. Эта строка является единственной строкой блока кода цикла for. При каждом запуске цикла эта строка выводит форматированную строку, содержащую значения переменных k и v (ключ и значение), разделенные двоеточием.

  5. Сохраните и запустите скрипт.

    Результат выполнения цикла списка ключ-значение для CSV-файла

    Код перебирает все элементы словаря и печатает ключи и значения.

    Печать словаря позволяет вам увидеть свойства определенного типа данных.

    Далее вы рассмотрите некоторые элементы внутри базы геоданных.

Опишите классы пространственных объектов базы геоданных

Теперь, когда вы узнали, как исследовать свойства файловых шейп-файлов и таблиц CSV, вы будете использовать Python для изучения свойств элементов в базе геоданных. Вы будете использовать набор выражений печати, который использовали ранее, а не перечислять все свойства.

  1. Выберите пять строк кода, которые ранее были закомментированы, нажмите Формат и нажмите Раскомментировать область.
  2. Закомментируйте последние две строки кода, которые использовались для итерирования словаря.
  3. Измените строку mypath = "C:/Lessons/PythonDesc", чтобы добавить /DC.gdb.

    mypath = "C:/Lessons/PythonDesc/DC.gdb"

  4. Измените строку desc = arcpy.da.Describe("bike_racks.csv"), чтобы описать класс пространственных объектов boundary.

    desc = arcpy.da.Describe("boundary")

    Элементы в базе геоданных не имеют расширения файла, поэтому они различаются только по типу данных.

    Опишите класс пространственных объектов boundary.

  5. Сохраните и запустите скрипт.

    Результаты скрипта по описанию boundary.

    Второе свойство — это расширение файла. Хотя это свойство является допустимым ключом в словаре, его значение пусто. Так как пустые расширения файлов являются обычным явлением для элементов базы геоданных, вы можете добавить еще одно выражение if, чтобы печатать строку расширения только, если оно присутствует.

  6. Замените строку print(f'extension: {desc["extension"]}') следующими двумя строками:

    if desc["extension"] != "":
        print(f'extension: {desc["extension"]}')

    Строки отображения расширения по условию

    Оператор сравнения != означает «не равно». Допустимые операторы сравнения в Python: == (равно), != (не равно), < (меньше), <= (меньше или равно), > (больше) и >= (больше или равно). Имейте в виду, что кажется, будто =! и <> должны тоже работать, но они не являются допустимыми операторами сравнения и вызовут синтаксическую ошибку.

    Первая из этих двух строк проверяет, не равно ли значение, связанное с ключом "extension", пустой строке (две кавычки, между которыми ничего нет). Если это оценивается как Истина, выполняется строка печати форматированной строки с именем ключа расширения и связанным значением для этого ключа.

  7. Сохраните и запустите скрипт.

    Результаты кода с условием проверки расширения

    Код запускается и проверяет, не имеет ли ключ расширения пустое значение. Если значение пустое, тест оценивается как Ложь, тогда строка блока кода с отступом не выполняется, и код не печатает эту строку. Код переходит к следующей строке за пределами блока кода и продолжает работу, печатая dataType и shapeType.

    Аналогичным образом вы можете изучить другие элементы базы геоданных, изменив имя элемента в функции da.Describe().

  8. Измените строку desc = arcpy.da.Describe("boundary"), заменив boundary на car_share_locations.

    desc = arcpy.da.Describe("car_share_locations")

  9. Сохраните и запустите скрипт.

    Описать таблицу car_share_locations

    Элемент car_share_locations представляет собой таблицу базы геоданных. Она не имеет расширения и записи для shapeType, поэтому эти строки не печатаются.

  10. Измените строку desc = arcpy.da.Describe("car_share_locations") для описания элемента Transportation.

    desc = arcpy.da.Describe("Transportation")

  11. Сохраните и запустите скрипт.

    Результат описания Transportation

    Transportation — это набор данных объектов в базе геоданных. Набор классов объектов содержит элементы данных, которые имеют общую систему координат. Набор классов объектов можно использовать в качестве рабочей области.

  12. Измените строку mypath = "C:/Lessons/PythonDesc/DC.gdb", чтобы добавить /Transportation.

    mypath = "C:/Lessons/PythonDesc/DC.gdb/Transportation"

    Теперь вы можете описать классы пространственных объектов и другие элементы, находящиеся внутри набора пространственных данных.

  13. Измените строку desc = arcpy.da.Describe("Transportation"), чтобы описать элемент Traffic.

    desc = arcpy.da.Describe("Traffic")

    Код для описания сети

  14. Сохраните и запустите скрипт.

    Описание сети Traffic

    Traffic — это набор сетевых данных. Наборы сетевых данных используются для моделирования транспортных сетей. Их создают из исходных объектов, которые могут состоять из простых объектов (линий и точек) и поворотов, а также они хранят связность исходных объектов. Сетевой анализ всегда производится с набором сетевых данных.

    Существуют и другие типы данных, которые можно использовать в da.Describe(), но описанные вами элементы охватывают наиболее типичные наборы данных ГИС. Однако описание каждого набора данных по отдельности может быть громоздким. Удобнее создать список различных наборов данных, доступных в рабочей области, без необходимости вводить их имена по отдельности.

Список файлов в рабочей области

Распространенной задачей при написании скриптов в Python является использование в работе нескольких наборов данных. Вводить имя каждого отдельного набора данных трудоемко и требует много времени. ArcPy включает несколько функций для создания описи наборов данных. Эти функции обычно возвращают наборы данных в виде списка Python, который можно использовать для дальнейшей обработки.

  1. Вы начнете новый скрипт.
  2. В окне редактора IDLE нажмите Файл и нажмите Сохранить как.

    Текущее имя файла скрипта describe_data.py. Вы будете использовать опцию Сохранить как, чтобы создать новый скрипт для продолжения своей работы, сохранив при этом работу, которую проделали ранее, в файл describe_data.py, чтобы вы могли обратиться к ней в будущем.

  3. В диалоговом окне Сохранить как введите list_data.py и нажмите Сохранить.
  4. В окне скрипта describe_data выделите все строки, кроме первых трех, и нажмите клавишу Delete.

    Удалите все, кроме первых трех строк.

  5. Отредактируйте строку mypath =, чтобы удалить /DC.gdb/Transportation из пути.

    mypath = "C:/Lessons/PythonDesc"

    Останется путь к базовой папке с данными этого руководства.

  6. После строки arcpy.env.workspace добавьте следующие две строки:

    files = arcpy.ListFiles()
    print(files)

    Первая из этих строк создает новую переменную с именем files и устанавливает ее равной результату вызова функции ListFiles. За функциями следует список параметров, заключенных в круглые скобки. В данном случае функция ListFiles() не требует никаких входных параметров, поэтому скобки пусты.

    Вторая строка выводит список.

    Перечисление и вывод списка файлов.

    Код должен быть следующим:

    import arcpy
    mypath = "C:/Lessons/PythonDesc"
    arcpy.env.workspace = mypath
    files = arcpy.ListFiles()
    print(files)

  7. Сохраните и запустите скрипт.

    Список данных Первые результаты функции ListFiles

    Это список файлов в папке PythonDesc. Списки Python заключаются в квадратные скобки.

    Функция ListFiles возвращает файлы в текущей рабочей области. Это означает, что если рабочая область не была задана с помощью arcpy.env.workspace, результатом будет пустой список, и скрипт напечатает None.

    Функция не имеет обязательных параметров и автоматически использует текущую рабочую область. Перечисленные файлы очень похожи на те, которые отображаются в проводнике. Есть одно исключение. База геоданных — это папка в проводнике, но она включена в результат ListFiles(). В результате DC.gdb отображается здесь как файл, хотя технически это папка, содержащая файлы.

    Вы ограничиваете поиск, чтобы возвращать только определенные типы файлов.

  8. Отредактируйте строку files = arcpy.ListFiles(), чтобы добавить в круглые скобки "*.csv".

    files = arcpy.ListFiles("*.csv")

    Функция ListFiles может принимать необязательный параметр, называемый wildcard, который позволяет указать строку, которую должны содержать результаты поиска. Звездочка представляет ноль или большее количество неопределенных символов, поэтому этот поиск по подстановочным знакам вернет любое имя файла, которое включает расширение .csv.

  9. Сохраните и запустите скрипт.

    Скрипт выводит список соответствующих результатов. В данном случае это список с одним элементом.

    ['bike_racks.csv']

    Данный способ работает для любого количества файлов и позволяет получить все файлы одного типа в виде списка и выполнить одну и ту же задачу для каждого файла.

    Также вы можете перечислить другие типы файлов, такие как .xlsx, .dbf и т. д., или сопоставить другие части строки имени. Например, использование подстановочной строки "*bike*" возвращает список всех имен файлов, которые включают bike: ['bike_racks.csv', 'bike_routes.dbf', 'bike_routes.prj', 'bike_routes.sbn', 'bike_routes.sbx', 'bike_routes.shp', 'bike_routes.shx']

  10. Измените строку mypath = "C:/Lessons/PythonDesc", чтобы включить DC.gdb

    mypath = "C:/Lessons/PythonDesc/DC.gdb"

  11. Удалить параметр "*.csv" из функции ListFiles.

    files = arcpy.ListFiles()

  12. Сохраните и запустите скрипт.

    Появится список результатов.

    Это те же файлы, которые можно увидеть в папке DC.gdb с помощью Проводника. Функция ListFiles() не удобна для изучения содержимого базы геоданных, поскольку наборы данных не соответствуют отдельным файлам. Но есть функция перечисления классов пространственных объектов.

Получите список классов пространственных объектов в рабочей области

Классы пространственных объектов являются одними из наиболее часто используемых типов наборов данных ГИС. Функция ListFeatureClasses() возвращает список классов пространственных объектов в текущей рабочей области.

  1. Отредактируйте строку mypath =, чтобы удалить /DC.gdb из пути.

    mypath = "C:/Lessons/PythonDesc"

    Останется путь к базовой папке с данными этого руководства.

  2. Отредактируйте строку files = arcpy.ListFiles() для использования функции ListFeatureClasses.

    files = arcpy.ListFeatureClasses()

    Код должен быть следующим:

    import arcpy
    mypath = "C:/Lessons/PythonDesc"
    arcpy.env.workspace = mypath
    files = arcpy.ListFeatureClasses()
    print(files)

  3. Сохраните и запустите скрипт.

    Скрипт печатает список с двумя классами пространственных объектов.

    ['bike_routes.shp', 'watersheds.shp']

    В данном случае классы объектов являются шейп-файлами. Иногда это может быть причиной путаницы. Термин «класс объектов» используется для описания однородной совокупности объектов, каждый из которых имеет одинаковое пространственное представление (например, точки, линии или полигоны) и общий набор атрибутов. Двумя наиболее распространенными типами классов пространственных объектов в ArcGIS Pro являются шейп-файлы и классы пространственных объектов базы геоданных.

    Функция ListFeatureClasses() работает как для шейп-файлов, так и для классов пространственных объектов базы геоданных, но для данной рабочей области она возвращает только один из них. Если рабочая область представляет собой папку, функция выводит список шейп-файлов. Если рабочей областью является база геоданных, функция выводит список классов пространственных объектов базы геоданных.

  4. Отредактируйте строку mypath =, чтобы добавить к пути /DC.gdb.

    mypath = "C:/Lessons/PythonDesc/DC.gdb"

    Это путь к файловой базе геоданных.

    Вывести список классов пространственных объектов в базе геоданных.

  5. Сохраните и запустите скрипт.

    Скрипт печатает список из трех классов пространственных объектов.

    ['neighborhoods', 'boundary', 'public_schools']

    Список не включает классы пространственных объектов внутри набора классов Transportation, потому что это другая рабочая область.

    Вы можете использовать символ для фильтрации результатов из ListFeatureClasses(). Например, вы можете получить все классы объектов, которые начинаются с определенной буквы. Функция также позволяет применять фильтр по типу объекта. Синтаксис функции ListFeatureClasses() следующий:

    ListFeatureClasses ({wild_card}, {feature_type}, {feature_dataset})

    Параметр функции feature_type позволяет ограничить результат в зависимости от типа класса пространственных объектов.

  6. Отредактируйте строку files = arcpy.ListFeatureClasses(), чтобы использовать два параметра ("", "POINT").

    files = arcpy.ListFeatureClasses("", "POINT")

    Первый параметр, wild_card, не используется, но поскольку параметры имеют предписанный порядок, этот параметр необходимо пропустить. Пустая строка "" действует как заполнитель, указывающий, что параметр не используется. Вы также можете использовать ключевое слово Python None.

    Вы также можете указать параметры по имени, и в таком случае нет необходимости придерживаться исходного порядка. Два допустимых способа записи строки:

    files = arcpy.ListFeatureClasses(None, "POINT")

    files = arcpy.ListFeatureClasses(feature_type="POINT")

    Вы также можете использовать знак решетки ("#"), чтобы пропустить параметр инструмента. Однако это не работает для неинструментальных функций ArcPy.

    По большей части Python чувствителен к регистру, но строки, используемые в функциях ArcPy, обычно к регистру не чувствительны. В результате вы можете использовать в параметре "Point" или "point".

    Третий параметр, который может принимать функция (feature_dataset), не используется и может быть полностью опущен, так как он находится в конце последовательности параметров.

  7. Сохраните и запустите скрипт.

    Скрипт печатает один точечный класс пространственных объектов в рабочей области.

    ['public_schools']

Вывести список таблиц и наборов данных

Вы перечислили файлы и классы объектов. Далее вы перечислите таблицы и наборы данных объектов.

  1. Отредактируйте строку mypath =, чтобы удалить /DC.gdb из пути.

    mypath = "C:/Lessons/PythonDesc"

    Останется путь к базовой папке с данными этого руководства.

  2. Отредактируйте строку files = arcpy.ListFeatureClasses(feature_type="POINT"), чтобы она стала ListTables().

    files = arcpy.ListTables()

    Код должен быть следующим:

    import arcpy
    mypath = "C:/Lessons/PythonDesc"
    arcpy.env.workspace = mypath
    files = arcpy.ListTables()
    print(files)

    Вывод списка таблиц в папке.

  3. Сохраните и запустите скрипт.

    Скрипт печатает список из двух таблиц в рабочей области.

    ['gardens.dbf', 'bike_racks.csv']

  4. Отредактируйте строку mypath =, чтобы добавить к пути /DC.gdb.

    mypath = "C:/Lessons/PythonDesc/DC.gdb"

    Она задает путь к базе геоданных.

    import arcpy
    mypath = "C:/Lessons/PythonDesc/DC.gdb"
    arcpy.env.workspace = mypath
    files = arcpy.ListTables()
    print(files)

  5. Сохраните и запустите скрипт.

    Скрипт печатает список с единственной таблицей в базе геоданных.

    ['car_share_locations']

  6. Отредактируйте строку files = arcpy.ListTables(), чтобы она стала ListDatasets().

    files = arcpy.ListDatasets()

    import arcpy
    mypath = "C:/Lessons/PythonDesc/DC.gdb"
    arcpy.env.workspace = mypath
    files = arcpy.ListDatasets()
    print(files)

  7. Сохраните и запустите скрипт.

    Скрипт печатает список с одним набором данных объектов в базе геоданных.

    ['Transportation']

  8. Отредактируйте строку mypath =, чтобы добавить к пути /Transportation.

    mypath = "C:/Lessons/PythonDesc/DC.gdb/Transportation"

    Это задает путь к набору классов объектов Transportation.

    import arcpy
    mypath = "C:/Lessons/PythonDesc/DC.gdb/Transportation"
    arcpy.env.workspace = mypath
    files = arcpy.ListDatasets()
    print(files)

  9. Сохраните и запустите скрипт.

    Скрипт печатает список с одним набором сетевых данных в наборе классов Transportation.

    ['traffic']

    Функция ListDatasets()работает с различными элементами данных. Включая наборы классов объектов, геометрические сети, сети, наборы данных участков, каталоги растров, топологию и некоторые другие.

Теперь, когда вы увидели, как использовать функции списка для инвентаризации данных, вы будете использовать полученный список для описания каждого элемента списка.

Итерация по списку

Создание списка данных обычно является первым шагом более сложного рабочего процесса. В большинстве случаев вам необходимо выполнить определенную задачу для каждого набора данных. Вы будете использовать цикл Python for для итерации по списку.

Вы начнете новый скрипт.

  1. Нажмите Файл и затем Сохранить как.
  2. Назовите новый файл iterate_data.py.
  3. Отредактируйте строку mypath =, чтобы удалить /Transportation из пути.

    mypath = "C:/Lessons/PythonDesc/DC.gdb"

  4. Отредактируйте строку files = arcpy.ListDatasets() для использования функции ListFeatureClasses.

    files = arcpy.ListFeatureClasses()

  5. Вместо строки print(files) введите for file in files: и нажмите клавишу Enter.

    Двоеточие в конце строки указывает на начало блока кода. Цикл for перебирает элементы в списке, и код с отступом в блоке кода выполняется для каждого элемента. Когда вы нажимаете Enter после строки кода, заканчивающейся двоеточием, следующая строка кода автоматически получает отступ.

    В каждом цикле временной переменной file присваивается одно из имен из списка файлов в переменной files.

  6. В новой строке с отступом добавьте следующее:

    desc = arcpy.da.Describe(file)

    Функция da.Describe() возвращает словарь со свойствами классов пространственных объектов. Эта строка кода будет выполняться для каждого класса пространственных объектов в списке классов пространственных объектов.

  7. Нажмите Enter и добавьте следующее:

    print(desc["baseName"])

    Эта строка должна иметь отступ в четыре пробела, чтобы соответствовать предыдущей строке. Это часть блока кода цикла for и будет выполняться для каждого класса пространственных объектов из списка.

    Эта строка извлекает и печатает значение, хранящееся в словаре desc, с помощью ключа baseName.

    Полный код выглядит следующим образом:

    import arcpy
    mypath = "C:/Lessons/PythonDesc/DC.gdb"
    arcpy.env.workspace = mypath
    files = arcpy.ListFeatureClasses()
    for file in files:
        desc = arcpy.da.Describe(file)
        print(desc["baseName"])

    Распечатайте описания.

  8. Сохраните и запустите скрипт.

    Скрипт печатает имена трех классов пространственных объектов в трех новых строках.

    neighborhoods
    boundary
    public_schools

    Вы измените код, чтобы сделать результаты более информативными.

  9. Отредактируйте строку print(desc["baseName"]), чтобы она стала name = desc["baseName"].

    Вместо того, чтобы печатать имя, эта строка сохраняет его в переменной name.

    Строка по-прежнему должна иметь отступ, чтобы соответствовать предыдущей строке в кодовом блоке, и чтобы она выполнялась для каждого круга цикла.

  10. Добавьте следующие три строки:

        data = desc["dataType"]
        shape = desc["shapeType"]
        print(f"{name} is a {data} with {shape} geometry")

    Этот код сохраняет значения тип данных и геометрия в переменных data и shape.

    Последняя строка создает и печатает форматированную строку с подставленным в нее содержимым трех переменных.

  11. Сохраните и запустите скрипт.

    Скрипт печатает три форматированные строки:

    neighborhoods is a FeatureClass with Polygon geometry
    boundary is a FeatureClass with Polygon geometry
    public_schools is a FeatureClass with Point geometry

Вы создали список классов пространственных объектов базы геоданных, итерировали этот список и распечатали информацию о каждом классе. Далее вы добавите код для отслеживания количества классов пространственных объектов каждого типа.

Отслеживание количества классов пространственных объектов по типу

Вы можете проверить свойства каждого класса пространственных объектов и использовать условную логику, чтобы определить, что происходит. В этом разделе вы будете использовать выражения if для подсчета классов пространственных объектов по типу геометрии.

  1. Вставьте новую строку перед строкой for file in files:.
  2. Добавьте следующие три строки перед циклом for:

    count_point = 0
    count_line = 0
    count_poly = 0

    Эти строки присваивают трем новым переменным нулевые значения. Вы будете использовать эти переменные для отслеживания количества классов объектов.

    Они обнуляются перед циклом for, чтобы в цикле for вы могли наращивать их в зависимости от типа класса пространственных объектов. Если вы определили их и установили их равными нулю внутри цикла for, каждый раз при выполнении цикла вы теряли данные из предыдущего цикла.

  3. Внутри цикла for удалите последние четыре строки.

    Установите счетчики и обрежьте строки в цикле for.

  4. Внутри цикла for после desc = arcpy.da.Describe(file) добавьте следующие строки:

    if desc["shapeType"] == "Point":
        count_point += 1

    Приращения счетчика для точек

    Строка if должна иметь тот же отступ, что и строка desc.

    Строка if проверяет, равно ли значение в словаре desc, хранящемся в ключе shapeType, строке Point.

    В Python двойной знак равенства == используется для проверки на равенство, а одинарный знак равенства используется для присвоения значений переменным.

    За строкой следует двоеточие, а следующая строка имеет отступ, поскольку это новый блок кода.

    Если выражение ложно, ничего не происходит. Если выражение является истиной, выполняется блок кода, следующий за выражением if.

    Блок кода добавляет единицу к значению, хранящемуся в переменной count_point. Когда цикл выполняется, он проверяет, является ли каждый элемент из списка классов пространственных объектов классом пространственных объектов Point, и, если это так, он добавляет единицу. Когда цикл завершится, переменная counter будет содержать количество классов пространственных объектов Point.

    Вы добавите еще два оператора if для проверки других типов геометрии.

  5. В конце последней строки кода нажмите Enter.

    Новая строка выравнивается с существующим отступом в текущем блоке кода. Однако вы хотите, чтобы следующий выражение if было выровнено с тем же отступом, что и предыдущее выражение if.

  6. Нажмите клавишу Backspace.

    Это регулирует отступ, чтобы выровнять новую строку с предыдущим выражением if.

  7. Добавьте следующие строки кода:

    if desc["shapeType"] == "Polyline":
        count_line += 1
    if desc["shapeType"] == "Polygon":
        count_poly += 1

    Три выражения if выровнены.

    Вы можете настроить отступ, используя клавишу Backspace для удаления отступа, или добавив четыре пробела для добавления отступа.

    Теперь каждый элемента в списке файлов будет описан, словарь результатов описания будет храниться в переменной desc, а данные, хранящиеся в ключе shapeType, будут проверяться на соответствие строкам Point, Polyline или Polygon. При совпадении к переменной счетчика для этой геометрии добавляется единица.

    Теперь вы добавите несколько строк для печати информации.

  8. В конце скрипта добавьте строку кода и нажмите Backspace, чтобы убрать все отступы.
  9. Добавьте следующие строки кода:

    print(f"Count of Point feature classes: {count_point}")
    print(f"Count of Polyline feature classes: {count_line}")
    print(f"Count of Polygon feature classes: {count_poly}")

    Завершенный скрипт для подсчета геометрий и печати результатов

    Поскольку последние три строки не имеют отступа, они не являются частью блока кода цикла for и запускаются только после завершения цикла и записи количества каждого типа геометрии.

  10. Сохраните и запустите скрипт.

    Скрипт печатает следующие три строки:

    Count of Point feature classes: 1
    Count of Polyline feature classes: 0
    Count of Polygon feature classes: 2

    Здесь показан один из способов использования Python для обработки данных. Сначала получите список данных, а затем используйте эту информацию, чтобы что-то сделать с этими данными. В этом примере подсчитываются классы пространственных объектов, но аналогичный скрипт можно использовать и для других задач, таких как копирование всех классов полигональных объектов или проверка атрибутов всех классов точечных объектов.

Вы напечатали количество классов пространственных объектов трех типов геометрии. Далее вы увидите более компактный способ сделать то же самое.

Получить количество с помощью фильтра типа объектов

Другой способ получить количество классов объектов в рабочей области — использовать функцию ListFeatureClasses() с фильтром по типу объектов.

  1. Нажмите Файл и затем Сохранить как.
  2. Назовите новый файл filter_by_type.py.
  3. Выберите строки между первыми тремя и последними тремя строками скрипта, нажмите Формат и нажмите Закомментировать область.

    Средняя часть скрипта закомментирована.

  4. Добавьте новую строку после закомментированного раздела, но перед строками print.
  5. Добавьте следующие строки кода:

    count_point = len(arcpy.ListFeatureClasses(feature_type="POINT"))
    count_line = len(arcpy.ListFeatureClasses(feature_type="POLYLINE"))
    count_poly = len(arcpy.ListFeatureClasses(feature_type="POLYGON"))

    Добавлены строки для подсчета с использованием фильтра feature_type

    Эти три строки задают переменные count_point, count_line и count_polyпо-новому.

    Вместо того, чтобы устанавливать их равными нулю и увеличивать их значения, каждая строка здесь использует функцию ListFeatureClasses() с дополнительным параметром feature_type. Эта функция создает список классов пространственных объектов, соответствующих параметру фильтра. Функция len определяет длину итогового списка, который представляет собой количество классов пространственных объектов этого типа.

  6. Сохраните и запустите скрипт.

    Скрипт печатает следующие три строки:

    Count of Point feature classes: 1
    Count of Polyline feature classes: 0
    Count of Polygon feature classes: 2

    Это кодовое решение, за исключением закомментированных строк, короче, чем предыдущий способ, который использует da.Describe() для определения типа геометрии. Однако da.Describe() позволяет проверять свойства, отличные от типа геометрии, такие как количество полей, пространственный экстент и система координат.

  7. Закройте скрипт и окно IDLE Shell.

Вы изучили два способа получения количества классов пространственных объектов разных типов и вывода этой информации в IDLE Shell. Далее вы увидите пример использования обоих этих способов в скрипте, который перечисляет и описывает содержимое рабочей области и записывает результаты в текстовый файл.

Запись информации о перечне элементов в текстовый файл

Хотя печать в интерактивном окне обеспечивает немедленную обратную связь, иногда может быть полезнее записать результаты в текстовый файл. Готовый скрипт для этого находится в папке PythonDesc.

  1. В File Explorer перейдите в папку PythonDesc, в которую вы извлекли данные.
  2. Щелкните правой кнопкой мыши write_inventory.py и выберите Редактировать в IDLE (ArcGIS Pro).

    Вы просмотрите скрипт, при необходимости измените путь и запустите его, чтобы увидеть, как он работает. Скрипт включает комментарии, а также пустые строки для удобства чтения, но они не влияют на работу кода.

    Скрипт начинается с комментариев, которые включают автора, дату и цель. Рекомендуется добавлять подобные примечания к скриптам, чтобы сообщить о цели скрипта и времени его создания. Если вы опубликуете скрипт, эта информация поможет другим понять назначение скрипта и даст им знать, к кому обращаться, если у них возникнут вопросы.

    Первые строки кода, запускаемые в скрипте, импортируют модули arcpy и os.

    import arcpy
    import os

    Модуль os предоставляет доступ к функциям операционной системы через Python.

    В следующем разделе задаются некоторые переменные для путей и рабочей области.

    #Variables for paths and workspace
    root = "C:/Lessons/PythonDesc"
    gdb = "DC.gdb"
    textfile = "inventory.txt"
    arcpy.env.workspace = os.path.join (root, gdb)
    output = os.path.join(root, textfile)

    Раздел начинается с комментария, определяющего, что делает эта часть кода. Это еще одна рекомендация для написания кода Python.

  3. Если вы извлекли PythonDesc в местоположение, отличное от C:/Lessons/PythonDesc, отредактируйте путь в строке root = "C:/Lessons/PythonDesc", чтобы он указывал на местоположение папки на вашем компьютере.

    Независимо от корневой папки, имя файловой базы геоданных и имя текстового файла могут оставаться теми же, как и строка кода, задающая файл arcpy.env.workspace. Используя переменную для пути к корневой папке, вам нужно обновить ее только в одном месте скрипта. Функция os.path.join() используется для создания полных путей из переменной root и переменных gdb и textfile.

    Далее создается новый пустой текстовый файл с помощью функции open() и указанием режима записи с помощью "w". Если файл с таким именем уже существует, он будет перезаписан.

    #Create new textfile to write results                  
    f = open(output, "w")

    В следующем разделе скрипта используется функция ListFeatureClasses() для получения списков трех типов геометрии.

    #Create list of feature classes by geometry type
    points = arcpy.ListFeatureClasses("", "POINT")
    lines = arcpy.ListFeatureClasses("", "POLYLINE")
    polygons = arcpy.ListFeatureClasses("", "POLYGON")

    Следующий раздел скрипта записывает контекстную информацию в текстовый файл, используя форматированные строки. \n в конце каждой из этих строк добавляет escape-символ, который кодирует новую строку, поэтому информация будет представлена ​​в виде трех отдельных строк в текстовом файле.

    f.write(f"Workspace of interest: {arcpy.env.workspace}\n")
    f.write(f"This workspace contains the following feature classes:\n")
    f.write(f"Count of Point feature classes: {len(points)}\n")

    Третья из этих строк использует len(points) для вставки длины списка точечных классов, количества классов точечных объектов в рабочей области.

    Следующая строка содержит выражение if, проверяющий наличие элементов в списке классов точечных объектов. Если точечных классов нет, ничего не происходит до следующей строки f.write. Если классы точечных объектов есть, запускается блок кода после строки, и скрипт записывает новую форматированную строку в текстовый файл.

    if len(points) != 0:
        f.write(f"The names of the Point feature classes are:\n")
        for point in points:
            desc = arcpy.da.Describe(point)
            f.write(f'\t{desc["baseName"]}\n')
    f.write(f"Count of Polyline feature classes: {len(lines)}\n")

    Далее цикл for обрабатывает каждый из классов точечных объектов в списке.

    Внутри цикла переменная desc содержит словарь описания класса пространственных объектов arcpy.da.Describe.

    В следующей строке записывается форматированная строка с именем класса пространственных объектов, извлеченная из словаря с помощью ключа baseName. Строка имеет отступ на одну длину табуляции с помощью escape-символа \t, затем добавляется новая строка с \n. Затем цикл повторяется для всех других классов точечных объектов. Когда классов больше нет, строка f.write запускает и добавляет в текстовый файл текст, описывающий количество классов линейных объектов, и начинает новую строку с \n.

    Остальная часть этого раздела описывает классы линейных и полигональных объектов таким же образом.

    
    if len(lines) != 0:
        f.write(f"The names of the Polyline feature classes are:\n")
        for line in lines:
            desc = arcpy.da.Describe(line)
            f.write(f'\t{desc["baseName"]}\n')
    f.write(f"Count of Polygon feature classes: {len(polygons)}\n")
    if len(polygons) != 0:
        f.write(f"The names of the Polygon feature classes are:\n")
        for polygon in polygons:
            desc = arcpy.da.Describe(polygon)
            f.write(f'\t{desc["baseName"]}\n')

    Когда цикл обработки классов полигональных объектов завершается, следующая строка закрывает текстовый файл.

    f.close()

    Последний раздел использует функцию os модуля startfile для открытия текстового файла отчета.

    #Open the resulting output file
    os.startfile(output)

  4. Сохраните и запустите скрипт.

    Текстовый файл открывается в Блокноте.

    Текстовый файл с результатами открывается в Блокноте.

    Результаты записываются в текстовый файл с использованием метода write(). Символ новой строки \n используется для обеспечения правильного форматирования каждого результата на новой строке. Символ табуляции \t используется для улучшения читаемости за счет отступа имен классов пространственных объектов. Для этих специальных символов используется обратная косая черта.

    Вместо записи в текстовый файл вы можете распечатать результаты в интерактивном окне, заменив все экземпляры f.write на print. Если вы хотите запустить скрипт в ArcGIS Pro как инструмент-скрипт, вы можете записать информацию в сообщения инструмента геообработки, заменив f.write на arcpy.AddMessage.

Просмотр

  • Код Python можно использовать для описания свойств наборов данных ГИС, таких как тип данных, расширение файла и геометрия.
  • ArcPy включает несколько функций для создания списков наборов данных. Доступны специальные функции для создания списков файлов, наборов данных, таблиц и классов пространственных объектов.
  • Перечисляя и описывая наборы данных с помощью кода Python, вы можете создать подробный перечень наборов данных ГИС в рабочей области. Затем вы сможете обрабатывать каждый набор данных по-своему в зависимости от его характеристик.
  • Код Python может использоваться для записи информации в текстовые файлы. Это полезно для создания отчетов и ведения журналов ошибок.

Вас также могут заинтересовать книги Python Scripting for ArcGIS Pro и Advanced Python Scripting for ArcGIS Pro автора Dr. Paul A. Zandbergen, опубликованные в Esri Press.