Импорт данных SRTM с помощью Arcview Spatial Analyst

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/srtm-sa.html


В данной статье описывается импорт данных SRTM с помощью пакета Arcview 3.x и модуля Spatial Analyst

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

Эта статья нужна вам только если вы работаете с данными SRTM представленными фрагментами 1x1 градус в формате HGT. Если вы работаете с мозаиками 5x5 градусов - они уже готовы к работе.

Подготовка данных для импорта в формат GRID

Название каждой матрицы рельефа соответствует координатам ее левого нижнего угла.

Например: n45e136 /45 гр. с.ш., 136 гр.в.д

Для начала работы необходимо:

а) Определить, какие именно матрицы вам нужны, это можно сделать наложив обычную сетку через 1 градус и определив название матрицы (см. выше). Легко найти нужный лист можно использовав покрытие grid1dg, которое представляет собой готовую сетку через 1 градус, в атрибутивной таблице которой, в поле Tilename каждой градусной ячейке приписано имя соответствующей матрицы

б) Разархивировать нужный файл и изменить его расширение с HGT на BIL

в) Создать новый текстовый файл, с именем таким же как имя файла BIL, и с расширением HDR (файл заголовка). Например: n45e136.bil и n45e136.hdr. Содержание файла HDR постоянно для любой матрицы рельефа.

Примечание 1: если файл hdr редактируется в notepad, необходимо иметь в виду, что по-умолчанию ему будет присвоено расширение txt, для того чтобы этого избежать, необходимо при сохранении файла задать ему имя таким образом: "n45e136.hdr" и "n45e136.blw" (включая кавычки). Если этого не сделать, notepad присвоит файлам имена: n45e136.hdr.txt и n45e136.blw.txt соответственно и попытке загрузить bil в Arcview будет выдаваться сообщение об ошибке: Unable to read standard header.

Примечание 2: если файл hdr редактируется в notepad, необходимо при сохранении убедиться, что Encoding (кодировка) установлена в значение ANSI, при установке Unicode, bil файл будет загружен в Arcview, но просмотреть его будет нельзя. При попытке сохранить данные как GRID будет выдаваться ошибка: NXXeXXX.bil could not be converted to a grid....

Содержание текстового файла HDR должно быть следующим:

BYTEORDER M
LAYOUT BIL
NROWS 1201
NCOLS 1201
NBANDS 1
NBITS 16
BANDROWBYTES 2402
TOTALROWBYTES 2402
BANDGAPBYTES 0

г) Создать новый текстовый файл, с именем таким же как имя файла BIL, и с расширением BLW (файл привязки). Например: n45e136.bil и n45e136.blw. Содержание текстового файла BLW должно быть следующим:

0.000833333333333
0
0
-0.000833333333333
136
46

Приведенные выше строки можно просто скопировать и вставить в созданный BLW файл, изменить значение нужно в двух последних строках (координаты X и Y вернего левого угла). Как упоминалось выше, эти данные можно взять из названия, однако следует помнить, что название файла является координатами левого нижнего угла, а записывать нужно координаты левого верхнего. Таким образом, параметр ULYMAP будет отличаться от цифры в названии файла на единицу в сторону увеличения (см. название файла и содержание HDR файла, параметр ULYMAP).

Согласно документации:

For example, the coordinates of the lower-left corner of tile N40W118 are 40 degrees north latitude and 118 degrees west longitude. To be more exact, these coordinates refer to the geometric center of the lower left pixel

Так как в Arcview координаты пиксела определяются также вычисляются не по его верхнему левому углу, а по центральной точке, то изменять координаты путем прибавления\вычитания половины пиксела - не нужно. Размер одного пиксела составляет 0.000833333333333 градусов по ширине и высоте.

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

Импорт и обработка данных

Перед конвертацией данных, нужно включить расширение Spatial Analyst и загрузить получившийся BIL файл в Arcview (View/Add Theme, SourceTypes - >> Image Data Source).

Srtm-sa1.gif

Конвертация в формат GRID

Активировать загруженную матрицу и выбрать Theme\Convert to Grid из меню Вида. Далее нужно выбрать имя под которым будет сохранена матрица рельефа в формате GRID. По умолчанию Spatial Analyst предлагает сохранить новый GRID под именем Nwgrd1.

Srtm-sa0.gif

Восстановление отрицательных значений

Осуществляется с помощью пункта меню Analysis\Map Calculator модуля Spatial Analyst. Допустим название конвертированной в GRID матрицы Nwgrd1, тогда выражение, необходимое, чтобы восстановить нормальные значения будет иметь вид:

([Nwgrd1] >= 32768).con([Nwgrd1] - 65536, [Nwgrd1])


Srtm-sa2.jpg

После ввода выражения нужно нажать кнопку Evaluate, входной GRID будет пересчитан, в содержание Вида будет добавлен новый, по умолчанию его название будет Map Calculation 1.

Установка значения NODATA.

Осуществляется с помощью команды SETNULL, так же в окне Map Calculator.

([Map Calculation 1] <= -32768).setnull ([Map Calculation 1])

Результатом операции будет новый GRID с правильными значениями высот и именем Map Calculation 2

Мозаицирование

Если у вас несколько матриц, которые необходимо склеить в единое поле, то сделать это можно с помощью того же инструмента Map Calculator (Analysis\Map Calculator).

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

[grid1].mosaic({[grid2],[grid3]})
Srtm-sa3.jpg

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

Srtm-sa4.gif

Сохранение результата

Получившуюся матрицу рельефа можно сохранить под нормальным, нужным вам названием с помощью Theme\Save Data Set...

Если количества матриц рельефа достаточно велико и есть доступ к Arcinfo Workstation, то лучше воспользоваться генератором sml-файлов, который создаст специальный командный файл, выполнив который в Arcinfo, вы получите сразу импортированную, подготовленную и склеенную в единое покрытие матрицу рельефа. Подробнее здесь.