Формат ASCIIGRID с примерами: различия между версиями
(→GRASS) |
Нет описания правки |
||
Строка 8: | Строка 8: | ||
Хранение данных в этом формате удобно, прежде всего, возможностью быстрого визуального анализа содержимого: много-мало данных, какие значения, есть ли nodata и т.д. Разумеется, в нём не рекомендуется хранить большие растры. | Хранение данных в этом формате удобно, прежде всего, возможностью быстрого визуального анализа содержимого: много-мало данных, какие значения, есть ли nodata и т.д. Разумеется, в нём не рекомендуется хранить большие растры. | ||
=== Заголовок === | |||
Структура файла в общем виде такова: | Структура файла в общем виде такова: | ||
<code>ncols</code> - количество колонок (целочисленное);<br /> | <code>ncols</code> - количество колонок (целочисленное);<br /> |
Версия от 08:22, 28 января 2012
ARC/INFO ASCII GRID (чаще просто ASCII GRID) --- формат представления растровых данных, исторически использовался как обменный формат в ГИС ARC/INFO (ASCII-файлы создавались командой GRIDASCII). В настоящее время его основная часть поддерживается (кроме ArcGIS) всеми основными ГИС, в том числе, большинством открытых/свободных (GRASS, QGIS, SAGA и т.д.). Многие из открытых ГИС используют драйвер GDAL, позволяющий как чтение, так и запись в <ASCII GRID>.
Файл в формате <ASCII GRID> представляет собой обычный текстовый файл, в котором содержимое разделяется на две части: 1) заголовок, где записывается общая информация о растре, его размеры, географическая привязка и т.д.; 2) секция собственно данных.
Хранение данных в этом формате удобно, прежде всего, возможностью быстрого визуального анализа содержимого: много-мало данных, какие значения, есть ли nodata и т.д. Разумеется, в нём не рекомендуется хранить большие растры.
Заголовок
Структура файла в общем виде такова:
ncols
- количество колонок (целочисленное);
nrows
- количество рядов (целочисленное);
xllcorner
- х-координата левого нижнего угла, долгота (десятичные градусы DD.D(D), DD:MM:SS не поддерживается) или смещение на восток (метры) (целочисленное или с плавающей точкой)
yllcorner
- y-координата левого нижнего угла, широта или смещение на север
cellsize
- линейный размер квадратной ячейки (целочисленное или с плавающей точкой)
nodata_value
- значение "нет данных", этот параметр не обязателен, он нужен для того, чтобы программное обеспечение автоматически делало все ячейки с этим значением прозрачными (целочисленное или с плавающей точкой). Часто используемое значение -9999, нецифровые значения, например "NA" использовать нельзя
Данные
Данные описываются просто как строка значений, разделенных пробелами. Разделение на строки не имеет значения (т.е. все данные могут быть в одной строке, а могут имитировать табличную структуру).
Примеры
Все примеры можно копировать и вставлять в текстовые файлы с расширением *.asc, и, независимо от кодировки, они должны работать. Чтобы получить такие же иллюстрации в QGIS, нужно: 1. добавить растр, 2. зайти в свойства\Стиль и изменить "Цветовая карта" на "Псевдоцвета", 3. зайти в "Свойства" --> "Прозрачность" и удалить прозрачный пиксел со значением -9999, а также заменить в значении no data -9999 на 0.
Стандартный заголовок
Это же изображение в табличном виде:
-9999 | -9999 | -2080 | -1909 | -9999 | -601 | -9999 | -1362 |
-510 | -387 | -350 | -182 | -9999 | -9999 | -9999 | 27 |
13 | -92 | -9999 | -33 | 54 | 28 | -182 | -750 |
59 | -165 | 18 | 167 | -182 | -9999 | -608 | 666 |
-62 | -9999 | -805 | -9999 | -9999 | -9999 | -9999 | -497 |
-9999 | -9999 | 332 | 1240 | -9999 | -9999 | -9999 | -9999 |
И непосредственно в формате <ASCII Grid>:
ncols 8 nrows 6 xllcorner -40.5 yllcorner 25.25 cellsize 10 NODATA_value -9999 -9999 -9999 -2080 -1909 -9999 -601 -9999 -1362 -510 -387 350 -182 -9999 -9999 -9999 27 13 -92 -9999 -33 54 28 -182 -750 59 -165 18 167 -182 -9999 -608 666 -62 -9999 -805 -9999 -9999 -9999 -9999 -497 -9999 -9999 332 1240 -9999 -9999 -9999 -9999
Неквадратная ячейка
В примере приведенном выше, ячейка растра квадратная (т.е. высота равна широте). Если необходима прямоугольная ячейка, где высота не равна широте, вместо параметра cellsize можно использовать DX и DY, например:
ncols 8 nrows 6 xllcorner -40.5 yllcorner 25.25 dx 11.6 dy 5.025 NODATA_value -9999 -9999 -9999 -2080 -1909 -9999 -601 -9999 -1362 -510 -387 350 -182 -9999 -9999 -9999 27 13 -92 -9999 -33 54 28 -182 -750 59 -165 18 167 -182 -9999 -608 666 -62 -9999 -805 -9999 -9999 -9999 -9999 -497 -9999 -9999 332 1240 -9999 -9999 -9999 -9999
Файлы <ASCII Grid> с параметрами DX и DY вместо CELLSIZE не поддерживаются многими GIS (в т.ч. ArcGIS), но поддерживаются, например, QGIS/GRASS/SAGA за счёт использования GDAL.
Вот как будет выглядеть файл выше, где cellsize заменен на DX, DY:
Привязка по центру ячейки, а не углу
Альтернативой привязки по углу, т.е. использования xllcorner
и yllcorner
является привязка по центру ячейки, в этом случае нужно использовать xllcenter
и yllcenter
. Результатом, при неизменных координатах будет сдвиг растра на половину ячейки вниз и влево (по диагонали).
ncols 8 nrows 6 xllcenter -40.5 yllcenter 25.25 cellsize 10 NODATA_value -9999 -9999 -9999 -2080 -1909 -9999 -601 -9999 -1362 -510 -387 350 -182 -9999 -9999 -9999 27 13 -92 -9999 -33 54 28 -182 -750 59 -165 18 167 -182 -9999 -608 666 -62 -9999 -805 -9999 -9999 -9999 -9999 -497 -9999 -9999 332 1240 -9999 -9999 -9999 -9999
Если взять один и тот же растр и заменить xllcenter,yllcenter на xllcorner,yllcorner, а сверху наложить сетку границ пикселей с первого растра, то это будет выглядеть так:
Практика
Таким образом, чтобы создать растр размером m*n не используя никаких инструментов кроме текстового редактора и табличного процессора, нужно сделать следующее.
- Создать таблицу нужного размера в табличном процессоре (OpenOffice Calc, MS Excel и т.д.) или любом редакторе. Скопировать и вставить в текстовый документ. Заменить табуляции на пробелы.
- Прописать заголовок файла в описанном выше формате. Еще один пример для матрицы 360*180, представляющий массив с разрешением 1 градус на весь мир:
ncols 360 nrows 180 xllcorner -180.000000000000 yllcorner -90.000000000000 cellsize 1.000000000000 nodata_value 0 12 321 1 12 3 4 1 23 4 1 234 1234 1 2 3 4 2 1 2 3 ...
- Задать расширение текстового файла на asc (или поменять его).
- Полученный файл можно открыть в QGIS и экспортировать в любой другой растровый формат или работать прямо с ним.
Поддержка в разных ГИС
GRASS
Все вышеприведенные варианты импортируются корректно.
В ГИС GRASS для импорта файлов в формате <ASCII Grid> рекомендуется использовать модуль r.in.gdal, для экспорта в этот формат --- модуль r.out.gdal. Кроме этого, есть также несколько устаревшие модули r.in.arc и r.out.arc.
QGIS
Все вышеприведенные варианты открываются корректно.
QGIS использует GDAL для работы с растровыми форматами. Все ПО использующее эту библиотеку абстракции (см. GRASS выше) не будет иметь проблем с примерами выше.