Создание пользовательских типов растров в Python
Типы растров можно настраивать и реализовывать на Python в зависимости от типа растровых данных, которые вы хотите добавить. Типы растров можно сравнить с набором функций, которые распознают формат структуры метаданных, связанной с вашими данными. Тип растра также может анализировать метаданные для получения такой информации, как пути к файлам данных, пространственная привязка и метаданные (имя датчика, высота Солнца, азимут солнца, расстояние до Солнца, дата приобретения, параметры яркости и отражения).
В дополнение к анализу и чтению информации о метаданных из файла метаданных, тип растра также определяет шаблоны обработки, применимые к типу считываемых данных. Шаблоны обработки могут объединять различные фрагменты информации из исходных данных для создания выходных данных, которые являются более значимыми и удобными для отображения и дальнейшего анализа. Большинство типов растров, основанных на данных сенсора, определяют мультиспектральный как один из своих шаблонов обработки. Многие другие шаблоны могут быть определены на основе типа данных, доступных для продукта. Например, тип растра Landsat 8 определяет различные шаблоны, такие как мультиспектральный, панхроматический, панхроматическое слияние, растительность, перистые облака и снег/лед.
Чтобы узнать больше о типах растров ArcGIS, реализованных на Python, см. Github Raster Types.
Свойства растрового типа
Тип растра создается путем определения одного или нескольких следующих свойств из его исходных данных:
Свойства канала — такие как имя канала, минимальная и максимальная длина волны и поверхностная плотность потока солнечного излучения
Шаблоны обработки — шаблоны функции растра, содержащие входные данные, функции и значения или переменные
Дополнительные поля — которые добавляются в набор данных мозаики
Вспомогательные входные данные — дополнительная информация, требуемая типом растра для полного описания источника данных, например, ЦМР, которая должна быть применена к исходному набору данных для ортотрансформации изображения
Реализация пользовательского растрового типа
Сведения о реализации типа растра в модуле Python описаны ниже. Тип растра — это слой, который облегчает взаимодействие с приложением по различным аспектам данных. Растровые типы также являются основой для добавления растров в набор данных мозаики с помощью инструмента Добавить растры в набор данных мозаики.
Среда ArcGIS идентифицирует типы растров с помощью хорошо известного шаблона-фабрики. Фабрика растровых типов содержит коллекцию типов растров, где коллекция может быть организована на основе определенных критериев, или это может быть просто контейнер, содержащий все типы растров.
Существует три компонента типа растра, которые реализованы на Python:
Crawler_API (дополнительно)
Как это работает?
Архитектура реализации типа растра на Python — это интуитивно понятный процесс. ArcGIS предоставляет адаптер растровых типов, который взаимодействует с системой ArcGIS и модулем Python для реализации типа растра. Адаптер загружает модуль Python и ищет RasterTypeFactory, чтобы идентифицировать участвующие типы растров внутри этого модуля. RasterTypeFactory должен содержать по крайней мере одну открытую функцию, getRasterTypesInfo, которая возвращает информацию обо всех типах растров внутри фабрики. Функция getRasterTypesInfo возвращает словарь RasterTypeDefinitions. Затем адаптер извлекает информацию о RasterTypes и обрабатывает типы растров на основе Python так же, как и любые другие типы растров, содержащиеся в ArcGIS. Затем среда ArcGIS взаимодействует с типом растра на основе Python, используя Builder API и Crawler API.
После реализации вашего растрового типа с помощью Python, разместите модуль Python в папке [InstallDirectory]\Resources\Raster\Types.
Среда типов растров в ArcGIS выберет все файлы *.py из этого местоположения и проверит, содержат ли они допустимые типы растров. Если допустимые растровые типы найдены, они будут добавлены к списку поддерживаемых растровых типов в инструменте Добавить растры в набор данных мозаики.
Чтобы узнать больше о том, как реализовать тип растра в модуле Python, см. Anatomy of Python Raster Type.