Визуализация рельефа в Arcview GIS

Материал из GIS-Lab
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/3dviz.html


Данная заметка не претендует на исчерпывающее объяснений теории цифровых моделей рельефа, а преследует цель проиллюстрировать начинающему пользователю подход, который можно использовать для их получения с помощью Arcview 3.x

Придание карте, подготавливаемой к публикации в печати или Internet, рельефного вида весьма повышает ее привлекательность. ArcView GIS при наличии подключаемых модулей Spatial Analyst и 3D Analyst имеет неплохие возможности для создания подобных карт.

Создание базового слоя который будет представлять рельеф (GRID)

Для придания изображению видимого объема необходимо наличие слоя, представляющего непрерывное поле значений высот. Если работа с этим слоем идет в Arcview\ArcInfo то этот слой скорее всего будет представлен специальным форматом GRID. GRID можно рассматривать как одноканальный растровый слой, каждому пикселу которого, присвоено определенное значение, в нашем случае - высота над уровнем моря.

Для создания GRID необходимо иметь shape-файл, отражающий рельеф, в большинстве случаев это линейный слой горизонталей, в числе атрибутов которого есть поле высоты. Непосредственно по горизонталям GRID можно построить средствами ArcInfo или Erdas, в ArcView 3x ситуация несколько сложнее, так как GRID здесь можно построить только по точечной теме.

Для начала нужно получить базой GRID, на основе которого будут получаться другие слои, которые придадут нашему рельефу объем. Ниже описывается 2 способа построения основного GRID'a в ArcView.

Способ более сложный, но более точный

Линейную тему необходимо превратить в точечную (точки ставятся в узлах линий). Активизируем тему рельефа в горизонталях и запускаем скрипт. После запуска будет предложено выбрать место сохранения и имя создаваемой точечной темы, а также какое из полей атрибутивной таблицы будет выведено - естественно, выбираете поле в котором записано значение высоты соответствующей изолинии. Итогом действия этого скрипта будет точечная тема с массой атрибутивных полей в таблице, из которых нам нужно только одно, а именно поле высоты, которое сохранило имя, бывшее в атрибутивной таблице исходной темы. Остальные поля можно смело удалить из таблицы.

3dviz-01.gif

Небольшое примечание. Для повышения точности построения можно также конвертировать в точечный слой гидрографические темы, имеющие параметр высоты уреза над ур.моря, а затем сшиваю с помощью Geoprocessing Wizard точечные слои, построенные на основе горизонталей и гидрографии с точечным слоем отметок высот (пунктов триангуляции и т д.) и другими слоями объекты которых имеют такую характеристику как высота над уровнем моря - то есть все эти темы сливаются в один слой, по которому расчитывается GRID.

Подгружаем модуль Spatial Analyst (File\Extensions). В строке меню появится 2 новых пункта - "Analisys" и "Surface" Делаем активной созданную только что точечную тему и выбираем Surface\Interpolate Grid. В появившемся диалоговом окне (рис.2) нужно выбрать область построения GRID и задать размер ячейки GRID в единицах вида (чаще всего - в метрах).

3dviz-02.gif

Поля Rows и Columns установятся сами после установки размера ячейки. Жмем ОК, появляется второе диалоговое окно.

3dviz-03.gif

Здесь нужно обратить особое внимание на поле Z value - проверьте, что это действительно поле, соответствующее высоте (если вы, конечно, не удалили все прочие поля). Методы интерполяции вам вполне подойдут те, что стоят по умолчанию (обычно используется метод IDW). Что же касается поля Barriers, то в принципе оно предназначено, чтобы при построении GRID учитывалась и линейная тема горизонталей как границ между классами значений высот, но использование этой возможности сильно добавляет вычислений процессору.

Примечание. ArcView не спрашивает, куда сохранять полученный GRID - тему, а отправляет ее в системный директорию определенную переменной TEMP. Имеет смысл ее скопировать его потом в нужное место (обратите внимание - GRID это не файл, а каталог) или выполнить Theme\Convert to grid, где и указать для созданной темы ПМЖ.

3dviz-04.gif

Более простой способ

Подгружаем модули Spatial Analyst и 3D Analyst (File\Extensions). Активизируем слой горизонталей и выбираем Surface\Create TIN from Features. Появится диалоговое окно, где нужно обратить внимание на поле Height Source - должно быть задано поле, содержащее значение высот. Жмем ОК, получаем модель рельефа TIN (рис. 6) (о сущности этой модели - в другой заметке, здесь она нам требуется только как промежуточный этап). Активизируем TIN, выбираем Theme\Convert to grid. Будет предложено задать имя и место сохранения GRID, а потом выбрать размер ячейки и область построения. Результат - тот же, что и при первом способе.

3dviz-05.gif

Рельеф представленный моделью данных TIN

Создание карт теневого рельефа

Исходные данные мы подготовили, начинается художественное творчество. Для начала "перекрашиваем" GRID в цвета, соответствующие общепринятым нормам отмывки рельефа. Дважды щелкаем мышью по GRID в содержании вида, вызываем редактор легенды. В списке "Color ramps" выбираем "Terrain Elevation" (3 варианта) - если у вас есть в GRID морские глубины (отрицательные высоты), или "Land Cover" (2 варианта) - если их нет. Можно также поменять классификацию (по умолчанию выставляется 9 классов), ввести вручную значения высот, чтобы они шли не абы как, а с правильным интервалом (0-50, 50-100 и т.д. ). Лучше всего один раз поработать и создать наиболее приемлемую для ваших целей шкалу и сохранить ее как файл .avl, а далее применять ее всегда. Уже красивее…

3dviz-07.jpg

Теперь нам нужно оттенить рельеф, добавить ему теней. Делаем тему базового рельефа активной и выбираем Surface\Compute Hilshade. В диалоговом окне предлагают указать азимут на источник освещения, от которого будут зависеть направления теней (azimuth) и высоту солнца (altitude) над горизонтом.

3dviz-08.gif

Результат c настройками по умолчанию, тема с названием Hilshade of GRID… Легенда ее - градиентный цветовой переход от черного к белому, можно ее не трогать. Тема сама по себе довольно информативна, но мы ее будем использовать как дополнительную к базовому слою, для получения не просто теневого рельефа, а еще и раскрашенного по цветам.

3dviz-09.jpg

Создание карт теневого рельефа раскрашенных по высотам

Возвращаемся к теме базового рельефа. Вызываем редактор легенды, нажимаем "Advanced". В качестве Brightness Theme указываем только что созданную тему теневого рельефа. Минимальное значение яркости делаем меньше (10-20-30 - экспериментируйте !!!), максимальное указываем 100, для большего контраста. Нажимаем ОК, затем Apply. Результат - карта с оттененным рельефом раскрашенным по высотной зональности.

3dviz-11.jpg

Примечание. Подбор нижнего значения яркости нужно осуществлять с учетом соотношение горных и равнинных территорий. Сильное оттенение гор (низкие значения минимума) приводит к выравниванию цветов на низменности.

Иногда бывает необходимо наложить на рельеф монотонные полигональные объекты (на нашем примере - заповедные территории), но в то же время сохранить рельефность поверхности под ними. Задача решается следующим образом. Делаем активной полигональную тему и выбираем Theme - Convert to grid. В появившемся окне указываем, куда и с каким именем сохранить тему, затем выбираем область анализа (конвертации) и размер ячейки, последний выставьте тот же, что и у базового рельефа. Далее будет предложено выбрать поле из атрибутивной таблицы, которое будет присоединено к GRID - теме. Лучше всего заранее создать в таблице исходной векторной темы поле, в котором будут нужные значения (например, код ООПТ - заповедник, заказник и т.д), тогда присоединяем это поле. Далее будет еще раз предложено присоединить эти атрибуты к GRID - теме, ответьте "Yes" Результат - GRID - тема с легендой, в которой присутствуют значения согласно ранее выбранным атрибутивным полям и значение "No Data", которое надо "обесцветить" при помощи стандартных средств редактора легенды Редактировать цвета прочих классов легенды лучше после "оттенения" рельефа, так как они серьезно при этом поменяются.

Чтобы "оттенить" рельеф, делаем то же, что ранее - редактор легенды - "Advanced" - выбор темы с теневым рельефом, но уже не для базового рельефа, а для полученного GRID для дополнительных объектов.

3dviz-12.jpg