Формат Esri Grid
Формат GRID - это формат хранения растровых данных, разработанный Esri. Существует два типа гридов: целочисленный и с плавающей точкой. Целочисленный грид используется для отображения дискретных объектов, а с плавающей точкой - для отображения непрерывных данных.
Более подробно о дискретных и непрерывных данных
Атрибуты целочисленного грида хранятся в таблице значений атрибутов (VAT). Таблица VAT содержит одну запись для каждого уникального значения в грид. Запись хранит уникальное значение (VALUE - целое число, представляющее отдельный класс или группу ячеек) и количество ячеек (COUNT) в гриде, имеющее это значение. Например, если 50 ячеек имеют значение 1, означающее лес, то в таблице VAT для каждой из этих 50 ячеек будет указано VALUE = 1 и COUNT = 50.
Более подробно об атрибутивных таблицах наборов растровых данных
Гриды с плавающей точкой не имеют таблицы VAT, т.к. ячейки грида могут принимать любое значение из разрешенного диапазона. Ячейки этого типа нельзя распределить по отдельным категориям. Значение ячейки само по себе является атрибутом, описывающим её положение. Например, в гриде, отображающем данные высот над уровнем моря в метрах, ячейка со значением 10,1662 обозначает точку, расположенную на высоте примерно 10 метров над уровнем моря.
Диапазон значений, который может использоваться ячейками грида, составляет:
- Грида с плавающей точкой может хранить значения от -3.4 x 1038 до 3.4 x 1038.
- Целочисленные гриды могут хранить значения от -2147483648 до 2147483647 (-231 до 231-1).
В целочисленном гриде это значение используется только переменной VALUE. Целочисленный грид может иметь дополнительные поля INFO в таблице VAT, диапазон значений которых зависит от определения поля.
Система координат грида такая же, как и у других географических данных. Строки и столбцы параллельны осям x и y системы координат. Т.к. все ячейки грида имеют одинаковый размер, расположение ячейки, а также площадь, покрываемая ячейкой, определяются её положением среди строк и столбцов. Поэтому, система координат грида определяется размером ячейки, числом строк и столбцов и координатами x,y верхнего левого угла. Гриды также несут дополнительную информацию, например систему координат.
Как со многими форматами, в названии грида не следует использовать пробелы или другие специальные символы. Многоканальный грид не может иметь больше 9 символов в имени файла, а одноканальный набор растровых данных не может иметь больше 13 символов.
Структура данных GRID
Гриды строятся на основании полистной структуры растровых данных, в которой основной единицей хранения данных является прямоугольный блок ячеек. Блоки хранятся на жёстком диске в сжатом виде в файле переменной длины, который называется лист. Каждый блок хранится как одна запись переменной длины.
Размер листа грида зависит от числа строк и столбцов на момент его создания. Верхняя граница размера листа устанавливается приложением и, на данный момент, составляет 4000000 x 4000000 ячеек. В результате, большая часть гридов для приложений ГИС сохраняется в одном листе. Пространственные данные грида автоматически разбиваются на несколько листов, если размер грида в момент создания превышает верхний лимит размера листа.
Блочное хранение гридов поддерживает как последовательный, так и случайный пространственный доступ к большим наборам растровых данных. Блочная структура не несёт ограничений на совместный анализ гридов. Листы и блоки различных гридов не обязательно должны совмещаться на карте для проведения совместного анализа. Листовая и блочная структура грида полностью скрыта от пользователя, который всегда работает с гридом так, как если бы он был цельным растром, состоящем из одинаковых квадратных ячеек.
В качестве схемы сжатия гриды используют кодирование по длинам серий, которое на уровне блоков является адаптивным. Каждый блок тестируется для определения глубины (числа бит на ячейку) блока и выбора наиболее эффективной технологии хранения (по ячейкам или по длинам серий). Блок хранится в том формате, который требует меньше дискового пространства. Схема адаптивного сжатия является оптимальной, т.к. позволяет эффективно обрабатывать как однородные категорийные, так и гетерогенные непрерывные данные, при одновременной поддержке совместного анализа этих двух типов данных. Операции над одиночными ячейками одного слоя, например, переклассификация данных, проводятся непосредственно над данными, без декомпрессии. Операции над ячейками нескольких сжатых слоёв определяют пересечения серий данных из разных слоёв и обрабатывают пересекающиеся участки. Операции над соседними ячейками одного слоя и над одиночными ячейками нескольких слоёв, в которых перемешаны сжатые и несжатые данные, преобразуют серии в ячейки и выполняют традиционную поячеечную обработку.
Структура листов-блоков грида является прозрачной для любой программы, которая обращается к пространственным данным в гриде. Программы, работающие с гридами, получают доступ к пространственным данным с помощью прямоугольного окна, заданного в единицах карты.
Хранение данных GRID
Грид хранится в рабочей области ArcInfo. Такой грид, как покрытие, хранится в отдельной папке, вместе со связанными таблицами и файлами, которые содержат относящуюся к гриду информацию. В папке целочисленного грида (которую создаёт ArcInfo Workstation), располагаются следующие таблицы и файлы: таблица BND, которая содержит границы грида; файл HDR, содержащий описательную информацию, например, разрешение ячейки и коэффициент блокирования; таблицу STA, в которой хранится статистика для грида; таблица VAT, в которой находятся атрибутивные данные, связанные с зонами грида; файл журнала (LOG), в который записываются все действия, производимые с гридом; и файл листа w001001.adf (q0x1y1), в котором хранятся данные ячеек, вместе с сопутствующим индексным файлом w001001x.adf (q0x1y1x), содержащим индексы блоков листа, и файлом журнала (LOG). Если при создании грида использовались операторы ArcGIS, некоторые из этих файлов могут отсутствовать, например LOG-файл.
Если грид изменяется, значения и другая информация, содержащаяся в этих файлах, немедленно обновляются. Информация, содержащаяся в таблице INFO, описывает данный грид, и доступна для пользователя.
Таблица BND
Файл BND содержит границы грида. Границы представлены прямоугольником, охватывающем ячейки грида; он хранится в координатах карты. Все границы грида хранятся в формате двойной точности.
Минимальное значение в таблице BND - координата левого нижнего угла левой нижней ячейки грида. Максимальное значение в этом файле – значение координаты правого верхнего угла правой верхней ячейки.
Файл HDR
Файл HDR является бинарным. Информация, хранящаяся в этом файле, содержит размер ячейки, тип грида (целочисленный или с плавающей точкой), метод сжатия, коэффициент блокирования и данные о листах.
Таблица STA
Таблица STA - такая же, как и INFO, но содержит статистические данные о гриде. Минимум, максимум, среднее и стандартное отклонение грида хранятся в виде значений с плавающей точкой. Изменять эти значения вручную не следует.
Т.к. NoData означает неизвестное значение, NoData не используется при вычислении статистики в таблице STA.
Если вы создаёте двухуровневый грид (содержащий только значения 0 и 1), среднее значение будет равно 0, а стандартное отклонение -1. Значение стандартного отклонения -1 означает, что статистика для грида вычислена не была.
Значение стандартного отклонения -2 означает, что грид содержит только ячейки NoData.
Таблица VAT
Таблица VAT содержит атрибуты, связанные с зонами грида. Только целочисленные гриды имеют таблицу VAT. Каждая таблица VAT имеет как минимум два элемента, VALUE и COUNT. Элемент VALUE содержит целочисленные значения, использующиеся для различения характеристик различных месторасположений в гриде. Все ячейки, имеющие одинаковое значение, имеют одинаковые характеристики и, поэтому, относятся к одной зоне. COUNT показывает число ячеек, содержащихся в зоне.
В таблицу VAT можно добавить и другие элементы. При этом элементы VALUE и COUNT не должны изменяться, а таблица должна быть отсортирована по элементу VALUE. Никогда не добавляйте новые элементы перед добавлением VALUE или COUNT.
Ячейки, содержащие NoData, в таблице VAT не представлены.
Пример таблицы VAT:
Record VALUE COUNT 1 0 628872 2 1 265043 3 2 151150 4 3 3185652 5 4 79983 6 5 4782 7 6 74334 8 7 8877 9 8 1817 10 9 491 11 10 858 12 11 8770 13 12 28789 14 13 72539 15 14 3686 16 15 3932 17 16 13227 18 17 1890 19 18 1305 20 19 427286 21 20 6695
Файлы листов
Файлы w001001.adf (q0x1y1) и w001001x.adf (q0x1y1x) содержат данные и индекс первого, или базового, листа грида. Максимальный размер листа очень велик, и большинство гридов помещаются в один лист. Если используются дополнительные листы, они автоматически нумеруются относительно пространственной привязки к первому листу. Листы существуют в виде бинарных файлов переменной длины. В предыдущих версиях (до ARC/INFO 7.x), эти файлы назывались q0x1y1 и q0x1y1x.Их можно использовать и в текущей версии.
Файл журнала (LOG)
Файл LOG - это файл формата ASCII, который содержит информацию о создании грида и изменениях в нём. LOG отслеживает все действия, выполняемые над гридом, но сохраняет информацию не обо всех действиях. Т.к. все функции Grid приводят к появлению нового грида, только команды Grid, такие как RENAME и COPY, которые могут изменить существующий грид, записываются в файл LOG. Файл LOG можно открыть, как и любой другой ASCII файл, любым текстовым редактором.
Ограничения хранения
Имя грида должно соответствовать следующим условиям:
- Использование пробелов не допускается.
- Имя не может начинаться с цифры.
- Длина не может превышать 13 знаков (для многоканального - 9 знаков).
Существует ограничение на количество файлов, которые могут храниться в папке INFO как для покрытий, так и для гридов. Допускается всего около 10000 файлов. Поэтому, количество гридов, которые можно сохранить в рабочей области, ограничено. Например, ниже приведен список теоретического максимального количества наборов данных грид, которые можно сохранить в одной папке рабочей области:
- Менее 5000 гридов с плавающей точкой, или
- Менее 3333 целочисленных гридов с VAT (менее 5000 без VAT), или
- Менее 10000 стеков грид
Эти цифры являются теоретическим максимумом. Если у вас имеется процесс, который создает промежуточные гриды (и, следовательно, файлы в папке INFO) эти цифры должны быть уменьшены. Кроме того, если вы сохраняете файлы различных типов, гриды и покрытия, вы сможете сохранить меньше файлов.
Это количество соответствует числу файлов в папке грида, в которых хранится информация в папке INFO. Это ограничение равно 10000 (9999), но это не общее количество файлов в папке INFO, а количество файлов, которые ссылаются на файлы в папке INFO. Для каждого грида, в папке создается два файла, указывающих на файлы в папке INFO: файл BND (границы) и таблица STA (статистика) (9999/2≈5000). Если грид имеет VAT, он также ссылается на файлы в папке INFO, поэтому, это число снова сокращается (9999/3≈3333). Стек гридов имеет только один файл, ссылающийся на папку INFO (9999/1≈9999).
В несколько строк
Стек состоит из упорядоченного набора перекрывающихся в пространстве гридов (слоёв), который обрабатывается многофакторным анализом как единое целое. Кластерный анализ, классификация и важнейший компонент анализа – все они работают со слоями в стэке.
Стек имеет следующие характеристики:
- Набор слоёв, каждый из которых соответствует гриду
- Экстент карты или BND
- Размер ячейки
- Тип данных
- Проекция
Каждый слой стека имеет индекс, указывающий его положение в стеке. Гриды, входящие в стек, должны быть в одной рабочей области.
Границы входных слоёв могут совпадать полностью, частично или не совпадать совсем, но только области совпадающих слоёв будут рассматриваться как стек. В стеке BND содержится информация о пересечениях границ его слоев. В перекрывающихся областях производится мультивариантный анализ. Если входные слои не перекрываются, стек пуст и вычисление не производится.
Размер ячейки стека, по умолчанию, выбирается согласно слою с самыми крупными ячейками.
В стеке вы можете комбинировать любое количество типов данных (как дискретных, так и непрерывных) входных гридов. Однако, перед использованием мультивариантных методов, следует выяснить, какие именно данные используются, категорийные или непрерывные, а также диапазон, или относительный диапазон значений. В некоторых видах анализа, тип входных данных стека определяет тип выходных данных.
Проекция входных гридов также хранится в стеке. Т.к. стек обрабатывается как единое целое, все гриды, входящие в него, должны иметь одну проекцию. Проекция позволяет убедиться, что информация каждого грида в стеке относится к одной и той же географической области.
Хранение стека грида
Стек хранится в структуре папок, так же, как грид или покрытие. В папке стека находятся два файла: внешняя таблица INFO STK и файл ASCII PRJ. Гриды, образующие стек, не хранятся в нём. Они остаются обычными гридами в рабочей области. Это означает, что гриды могут использоваться в нескольких стеках. В таблице STK содержаться названия гридов, входящих в стек и соответствующие им индексы:
GRID: LIST JER135.STK Record INDEX GRID 1 1 jer1 2 2 jer3 3 3 jer5
INDEX обозначает положение грида в стеке, а GRID содержит имена входящих в него гридов. Пространственные данные входных гридов не дублируются в стеке. В результате, стек всегда содержит последнюю версию входных гридов. Файл STK доступен так же, как и любой другой INFO файл. Вы можете добавлять в него описания, например, дату сбора данных, но не используйте INFO для изменения значений пункта INDEX или имен в пункте GRID. Все подобные манипуляции должны выполняться с помощью разнообразных команд управления стеком, доступных в Grid.
В файле PRJ, если он присутствует, хранится проекция стека:
Projection STATEPLANE Zone 4701 Datum NAD27 Zunits NO Units FEET Spheroid CLARKE1866 Xshift 0.0000000000 Yshift 0.0000000000 Parameters
Если проекция любого из входящих в стек гридов неизвестна, файл PRJ создан не будет.
Имя стека не должно содержать пробелов, не может начинаться с цифры и не должно быть длиннее 9 знаков.
NoData в GRID
Каждая ячейка в гриде имеет присвоенное ей значение; однако, ячейкам, не имеющих значений, можно присвоить NoData. NoData и 0 (ноль) не эквивалентны; 0 - это валидное значение. По этой причине, ячейки с NoData не могут использоваться при вычислении статистики в таблице STA грида.