Растровые типы могут настраиваться и применяться в Python в соответствии с типом растровых данных, которые вы хотите добавить. Растровые типы можно сравнить с набором функций, которые распознают формат структуры метаданных, связанных с вашими данными. Растровый тип также может обрабатывать метаданные, чтобы получать такие сведения, как пути к файлам данных, сведения о пространственной привязке и собственно метаданные (название сенсора, высота солнца, азимут солнца, расстояние до него, дата сбора данных, параметры отражения и излучения).
Кроме обработки и считывания метаданных из файла, растровый тип также задает шаблоны обработки, которые могут применяться к считываемому типу данных. Шаблоны обработки могут объединять различные фрагменты информации из источников для создания более значимых выходных данных, которые лучше подходят для отображения и последующего анализа. Большинство растровых типов, основанных на данных сенсоров, используют шаблон Мультиспектральный в качестве одного из рабочих. В зависимости от типов данных, доступных для продукта, можно задать множество других шаблонов. Например, растровый тип Landsat 8 задает различные шаблоны, такие как Мультиспектральный, Панхроматический, Панхроматическое слияние, Растительность, Перистые облака и Снег/Лед.
Дополнительные сведения о растровых типах ArcGIS, имеющихся в Python, см. в разделе Растровые типы Github.
Свойства растрового типа
Растровый тип создается с помощью задания одного или нескольких следующих свойств из исходных данных:
- Свойства канала – имя канала, минимальная и максимальная длины волн, поверхностная плотность потока солнечного излучения
- Шаблон обработки – шаблоны растровых функций, содержащие входные данные, функции и значения переменных
- Дополнительные поля – добавляются в набор данных мозаики
- Дополнительные входные данные – дополнительные сведения, необходимые для растрового типа для полного описания источника данных, например, ЦМР, которая должна быть применена к исходному набору данных для ортотрансформации изображения
Реализация пользовательского растрового типа
Подробности реализации растрового типа в модуле Python описаны ниже. Растровый тип является слоем, который обеспечивает взаимодействие с приложением по различным аспектам данных. Растровые типы также являются основой для добавления растров в набор данных мозаики с помощью инструмента Добавить растры в набор данных мозаики.
Среда ArcGIS определяет растровый тип с помощью общеизвестного шаблона-фабрики. Фабрика растровых типов содержит коллекцию растровых типов, которая может быть организована по определенному критерию, или это может быть контейнер, содержащий все растровые типы.
Имеется три компонента растрового типа, реализованные в Python:
- RasterTypeFactory API
- Builder API
- 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, см. в разделе Анатомия растрового типа Python.