Использование модуля 3D Analyst для Arcview GIS

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


Руководство к пользованию модулем 3D Analyst, дополненное примерами, будет полезно пользователям начинающим свое общение с 3D моделированием в ГИС

Запуск ArcView 3D Analyst

3D Analyst это приложение ArcView, а не самостоятельные программы, прежде чем запустить 3D Analyst, необходимо запустить ArcView. Далее нажать File\Extensions - и и в списке доступных расширений (Available Extensions) поставить галочку напротив 3D Analyst и SpatialAnalyst.

3danalyst01.gif

Добавление темы

Чтобы добавить тему необходимо нажать View\Add Theme...

3danalyst02.gif 3danalyst03.gif

В диалоге Add Theme необходимо указать директорию, где находится нужная тема(слой) и указать тип данных (Data Source Types).

Нам нужно открыть слой, в атрибутивном содержании которого содержится информация о высотах, для того чтобы по данной информации построить TIN. Слой может быть как point (точечный), так и line (линейный) .

Построение TIN

Для построения TIN необходимо выделить слой, по атрибутивной информации которого собираемся строить TIN, и на главной панели инструментов нажимаем Surface\Create Tin from features.

3danalyst04.gif

В диалоговом окне указываем в поле Height source (источник информации о высотах) название колонки с информацией о высотах и в поле Value field (поле со значениями) тоже название колонки с информацией о высотах. Нажимаем OK.

Добавим аналогичным способом в проект еще несколько слоев.

Построение 3d сцены

Для построения 3d сцены необходимо нажать на главной панели вида View\3D Scene

3danalyst05.gif

Указываем в падающем списке в способе добавления как Themes.

После нажатия появится Ваша 3d сцена в перспективном отображении.

3danalyst06.gif

Но из-за небольших перепадов высот "трехмерность" видно плохо, для того чтобы увеличить "рельефность" изображения необходимо изменить "коэффициент вертикального масштабирования". Для этого необходимо выбрать 3D Scene\Properties.

Появится диалоговое окно свойств 3d сцены.

3danalyst07.gif

На рисунке цифрами обозначены:
1. Name (Имя сцены)
2. Creator (Автор сцены)
3. Creation date (Дата создания)
4. MapUnits (Единицы измерения)
5. 2D Projection (Проекция сцены)
6. Vertical exaggeration factor (коэффициент вертикального масштабирования). Нажав кнопку Calculate(рассчитать) можно предоставить выбор этого коэффициента компьютеру.
7. Background color (Цвет фона)
8. Sun azimuth (Угол положения солнца)
9. Sun altitude (Высота солнца на горизонтом)
Характеристики(8,9) будут влиять на освещенность и направление падения теней в Вашей сцене.
10. Comments (Комментарии)

Нажав кнопку (6) Calculate (Рассчитать) - коэффициент будет рассчитан автоматически. Также изменим Background color (Цвет фона) - на белый. Apply и OK.

3danalyst08.gif

Как видно остальные слои оказались как бы под TIN, но в тоже время TIN стал более рельефным. (для уменьшения рельефности снова войдите в свойства 3D сцены и измените вертикальный коэффициент). Далее необходимо выровнять другие слои относительно TIN. Для этого необходимо выделить нужную тему, выбрать Theme\3D properties

3danalyst09.gif

3danalyst10.gif

В диалоге свойств 3d сцены цифрами обозначены:
1. Theme (Название темы)
2. Assign base heights by (Назначить базовую высоту относительно:) нужно выбрать один из вариантов:
3. Value or expression (Значение или выражение) Нажав кнопку 3danalyst11.gif, можно задавать данное значение исходя из атрибутивной информации или расчетов над ней.
4. Surface (Поверхность) По умолчанию будет стоять последний TIN, который Вы построили
5. Existing 3d shapes (существующий 3d shapes) - будет активна только если Вы уже строили TIN из 3d шейп-файла либона теме из которой строили TIN.
6. Z factor (Величина на сколько будет поднят слой по координате Z)
7. Offset heights by value or expression. Изменить высоту по значению или выражению. Нажав кнопку 3danalyst11.gif, можно задавать определеное числовое значение исходя из атрибутивной информации или расчетов над ней.
8. Extrude features by value or expression (выдавливание по значению или выражению). Нажав кнопку 3danalyst11.gif, можно задавать данное значение исходя из атрибутивной информации или расчетов над ней.
9. Advanced (дополнительные свойства 3d темы)
10. Show shading for features (показывать тени для объектов темы)
3danalyst12.gif
Дополнительные свойства темы:
1) Draw theme when interacting (перерисовывать тему всегда). Тема на время навигации будет становится видимой в статичном же режиме будет скрыта.
Use simplifed version if theme refresh exceeds (использовать упрощенную версию темы если обновление превышает 1 секунду).
2) Draw theme when not interacting (прорисовывать тему когда она находится в активном режиме). Тема на время навигации будет становится невидимой.
3) Percent transparent (прозрачность)

Необходимо выбрать пункт (4) нажать Apply и OK. Тогда для выбранного слоя абсолютным нулем будет считаться Ваш TIN и слой займет "нужное" местоположение. Проделайте данную операцию со всеми слоями которые есть в Вашем проекте.

Увеличим прозрачность TIN. Пример показан на скриншоте.

3danalyst13.gif

Добавление данных в TIN

Предположим что имеется еще один слой - горизонтали, также как и слой Visoti, содержащий информацию о высотах. Для того, чтобы добавить его в TIN необходимо выделить тему, которую нужно добавить (в нашем случае это горизонтали), далее на главной панели выбрать Surface\Add features to TIN

Добавление слоев в ArcView 3D Analyst

Следующим шагом будет добавление темы в проект. Для этого необходимо нажать на 3D Scene\Add Theme

3danalyst14.gif 3danalyst15.gif

В появившемся меню Add Theme необходимо указать директорию и тип открываемых данных (Data Source Types). В выпадающем списке возможен выбор следующих типов данных

  • Feature Data Source (векторный слой)
  • Image Data Source (растровое изображение)
  • Grid Data Source (грид)
  • Tin Data Source (TIN)

Добавление в проект растровых данных

Для добавления растра в проект необходимо на главной панели нажать 3D Scene\Add Theme и в и типе открываемых данных указать Image Data Source. Растровые данные должны быть предварительно географически привязаны к другим данным используемым в построении 3D сцены.

Далее открытый растр необходимо выровнять по высоте относительно TIN. Для этого необходимо выделить растр и выбрать Theme\3D properties. Высота растровому слою должна быть назначена по соответствующему TIN'у.

3danalyst16.gif

На скриншоте можно увидеть результат добавления растра после всех преобразований.

3danalyst17.gif

Следует обратить внимание, что в результате добавления темы некоторые нижележащие темы, могут перекрываться и отображаться не полностью. Для исправления этого недостатка выделите слой, который отображается не полностью, войдите в свойства сцены Theme\3D properties...

3danalyst18.gif

... и увеличьте величину обозначенную на рисунке цифрой 1, изменяйте тысячные или десятитысячные, но не в коем случае не целые или десятые.


Поднятие объектов

Поднятие может пригодиться для отображения объемных объектов или построения трехмерных диаграмм. На скриншоте Вы видите "поднятое" изображение домов г.Тюмень.

Для поднятия необходим слой, который собираетесь поднять (на пример слой Buildings) и желательна какая-либо дополнительная атрибутивная информация, например поле содержащие данные по количеству этажей в доме.

3danalyst19.gif

Для поднятия необходимо:

1. Выделить тему, которую собираетесь поднять и далее выбрать Theme\3D properties.

2. В появившемся диалоговом окне 3D Свойств темы (3D Theme Properties) необходимо назначить базовую высоту TIN, для этого надо поставить переключатель поля Assign base heights by относительно Surface

3. В поле Extrude features by value or expression Поднятие графических объектов по значению или выражению). Укажем число 5

4. В поле Extrude by (выдавливать относительно)

· None (ничего)
· Adding to min z value (добавление к минимальным значениям z)
· Adding to max z values (добавление к максимальным значениям z)
· Adding to base height (добавление к базовой высоте(TIN))
· Using as absolute (использовать как абсолютные)

Попробуйте использовать Adding to base height

3danalyst20.gif 3danalyst21.gif

5. С помощью кнопки 3danalyst11.gif можно указать выражение для поднятия, получив таким образом дома различной вышины, или трехмерную диаграмму некоего изменяющегося явления.

Графические возможности в описанной программе невелики, но при желании можно кое-что придумать.

алее будет рассмотрен пример построения линии электропередач.

Для начала нарисуем столбы. Для этого создадим новый слой (POINT) который так и назовем "stolb", создадим еще два слоя имеющих тип (LINE) ("line", "lineenergi"). Слой "stolb" будет имитировать столбы ЛЭП, слой "line" будет имитировать перекладины, на которых крепятся провода, и слой "lineenergi" будет имитировать сами провода.

В слое "stolb" поставим произвольно точки которые будут имитировать столбы и увеличим их толщину и изменим цвет, в слое "line" нарисуем перекладины прямо поверх слоя "stolb" увеличим их толщину и изменим цвет, в слое "lineenergi" нарисуем две параллельные линии которые будут имитировать ЛЭП.

Сделаем слой "stolb" активным и войдем в его 3d свойства Theme\3D properties. В качестве базовой высоты укажем наш TIN (surface), и увеличим значение Extrude features by value or expression (поднятие графики по значению или выражению) на нужную величену (какую именно - зависит от того, какой вертикальный коэффициент вы установили- экспериментируйте).

Сделаем слое "lineenergi" активным и войдем в его 3d свойства Theme\3D properties. В качестве базовой высоты укажем наш TIN (surface), увеличим величину Offset heights by value or expression (вертикальный сдвиг по значению или выражению) (на какую именно величену - зависит от того какой вертикальный коэффициент вы установили- экспериментируйте)

Сделаем слое "line" активным и войдем в его 3d свойства Theme\3D properties. В качестве базовой высоты укажем наш TIN (surface), увеличим величину Offset heights by value or expression(вертикальный сдвиг по значению или выражению) (на какую именно величену - зависит от того какой вертикальный коэффициент вы установили, но это высота должна быть меньше чем Вы ставили на слое "lineenergi" - экспериментируйте).

3danalyst22.gif

Aнализ поверхностей (запрос информации по построенной поверхности в заданной точке

Вы можете определить местоположение, уклон, высоту любой темы используя построенную раннее поверхность.

Для получения информации о местоположении, уклоне и другой информации в указанной точке добавьте грид или TIN как тему в View или 3D View, включите ее отображение, сделайте ее активной и выберите инструмент Идентифицировать 3danalyst23.gif.

Переместите курсор в поле Вида и щелкните левой кнопкой мыши. Из появившегося окна Identifity Results (результат идентификации) вы можете получить следующую информацию:

3danalyst24.gif
1. Название темы
2. Координаты X и Y
3. Координата Z (высота)
4. Уклон
5. Экспозиция склона Значения экспозиции указываются в градусах в градусах, причем 0.0 соответствует север; 90.0 - востоку, 180.0 - югу; 270 западу
6. Значение точки
7. Лицевое значение

Анализ поверхностей (создание новых тем уклона)

Создание новых тем уклона. Surface\Derive Slope (Поверхность\Получение уклона)

Уклон - одна из основных характеристик поверхности. Зоны с небольшими уклонами обычно считаются удобными местами для строительства, с высокими уклонами обычно связаны места, подверженные эрозии и оползням. В результирующей теме значения уклона будут представлены в градусах.

Чтобы создать карту уклонов:

3danalyst25.gif

1. Добавьте грид или TIN как тему в Вид.

2. Щелкните на легенде темы, чтобы сделать ее активной.

3. Из меню Поверхность выберите пункт Вычислить уклон. Если исходной темой был TIN, вам придется по запросу задать параметры расчета.

Анализ поверхностей (нахождение экспозиций склона)

Экспозиция указывает направление склонов поверхности относительно стран света. Она обычно используется в качестве показателя освещенности склонов. По нему можно определить места, получающие достаточное количество солнечной энергии, или значительную часть времени находящиеся в тени. Эти критерии важны, например, при строительстве, выборе мест для горных курортов, в сельском хозяйстве для выбора полей, на которых целесообразно выращивать сельскохозяйственные культуры с разными требованиями к освещенности. Значения экспозиции в результирующей теме даются в градусах, причем 0.0 соответствует север; 90.0 - востоку, 180.0 - югу и т.д.

Чтобы создать карту экспозиции:

3danalyst26.gif

1. Добавьте грид или TIN как тему в Вид.

2. Щелкните на легенде темы, чтобы сделать ее активной.

3. Из меню Поверхность выберите Вычислить экспозицию.

4. Если исходной является тема TIN, последует запрос на определение параметров расчета.

Анализ поверхностей (построение изолиний)

Карты с изолиниями часто используются для представления поверхностей. Это давний и достаточно удобный для практики способ представления данных, люди к нему привыкли. Применяйте его вместе с картой цветовой отмывки рельефа, когда Вы демонстрируете данные о поверхности широкой аудитории.

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

В грид-теме эта функция не соединяет центры ячеек, она интерполирует линии между ними. Иногда линия может проходить и через центр. Такая интерполяция создает более плавные линии и более точное представление поверхности.

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

Чтобы создать карту изолиний:

3danalyst27.gif

1. Добавьте грид или TIN как тему в Вид.

2. Щелкните на легенде темы, чтобы сделать ее активной.

3. Из меню Поверхность выберите Построить изолинии.

4. Задайте шаг изолиний и базовую изолинию. Нажмите ОК.

Создание 3D объектов

Для многих прикладных задач дополнительные преимущества может дать использование объектов, имеющих высотную компоненту. В этом случае Вы сможете воспроизводить более точную картину реального мира, поскольку, как многим известно, Земля не плоская. 3D объекты хранят координаты х,-у и z по всем точкам, которые определяют данный объект. Наличие высотной компоненты позволяет использовать эти объекты в качестве исходных данных для создания моделей поверхности, которые также могут создаваться как результат применения некоторых функций анализа поверхности. Кроме того, их можно рассматривать в перспективном изображении.

Вы можете создать 3D точки, линии и полигоны как преобразуя имеющуюся тему 2D объектов в 3D вид, так и цифруя объекты "на лету" помощью инструментов интерполяции (таких как инструменты создания 3D точки, 3D линии и др.).

При преобразовании темы выбранные Вами объекты будут записаны в новый набор данных. Если выбранных объектов нет, будут использованы все объекты. Значения высоты могут быть взяты из темы поверхности, по заданной константе, или числовому атрибуту преобразуемой темы.

Если имеется атрибут или поверхность, имеющие информацию о высоте для объектов, Вам не нужно создавать 3D формы (объекты) для перспективного показа. В процессе отображения 3D среды 2D объекты могут быть временно "на лету" преобразованы в 3D форму. С другой стороны, если Вас интересуют только объекты без поверхности, или же Вам требуется высокая производительность работы, есть смысл сразу создавать 3D объекты, поскольку для их преобразования "на лету "всегда требуется некоторое время.

Для преобразования 2D данных в 3D форму:

3danalyst28.gif

1. Добавьте объектную тему в Вид и активизируйте ее щелчком на ее легенде в Таблице содержания.

2. В меню Тема выберите Преобразовать в 3D шейп-файл.

3. На запрос Получить значение Z из выберите Поверхность, Атрибут или Константа.

4. Если Вы в качестве источника данных о высоте задали Поверхность, то далее необходимо указать соответствующий грид или TIN из текущего списка в вашем Виде. Если в Виде нет гридов или тем в формате TIN, будет выведено окно просмотра файлов, в котором выберите или задайте имя файла с нужной темой, Если Вы в качестве источника исходных данных задали Атрибут, выберите его из списка числовых полей для вашей темы. Если в качестве источника данных задана константа, введите значение.

5. Задайте имя для результирующей темы и нажмите ОК

Для интерактивного создания 3D объектов:

3danalyst29.gif

1. Добавьте грид или TIN как тему в Вид.

2. Активизируйте легенду грид или TIN темы в таблице содержания, щелкнув на ней. В меню станут доступными инструменты создания (интерполяции) объектов.

3. Включите показ грид или TIN темы, либо другой темы, которая позволит сориентироваться, где цифровать объекты.

4. Выберите один из инструментов создания объектов.

5. С помощью курсора задайте один или несколько объектов.

Если открыта редактируемая 3D тема, эти объекты будет добавлены к ней. Если нет, они будут добавлены в ваш Вид как графика.

Анализ поверхностей (построение продольных профилей)

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

Чтобы рассчитать продольный профиль:

  1. В Виде выберите 3D линию, по которой Вы хотите получить профиль. Исходными данными могут быть либо объектная тема, либо графика. Если линии берутся из темы, сначала убедитесь что она активна.
  2. Откройте новую компоновку.
  3. Выберите инструмент Профиль.
  4. С помощью курсора задайте на странице компоновки область для чертежа профиля.
  5. В диалоговом окне Свойства профиль выберите Вид, содержащий линии, по которым Вы хотите получить профили.
  6. При необходимости измените подписи к осям и вертикальный масштаб, затем нажмите ОК.

Анализ поверхностей (Анализ видимости)

Возможность выявление участков и объектов на поверхности, видимых и невидимых из одного или нескольких пунктов, полезна во многих прикладных задачах, от оценки стоимости недвижимости до выявления мест для дислокации войсковых подразделений и оптимального расположения башен радиорелейных передатчиков-ретрансляторов.

Инструмент Линия взгляда , позволяет определить, будет ли виден данный пункт (цель) из точки, где находится наблюдатель. Если цель не видна, вам будут выданы координаты первого заслоняющего ее препятствия. Будут также показаны видимые и невидимые участки вдоль линии взгляда.

Для создания линии взгляда.

  1. Добавьте грид или TIN тему в Вид и сделайте ее активной.
  2. Выберите инструмент Линия взгляда из меню инструментов Анализа.
  3. Задайте высоту цели и наблюдателя над поверхностью в виде сдвига (offset) на соответствующее число единиц измерения по вертикали. Обычно точка наблюдения поднимается над поверхностью, то есть задается отличный от нуля сдвиг, поскольку при задании нулевого (0.0) сдвига видимость из точки наблюдения, как правило, будет сильно ограничена.
  4. Поместите курсор в точку наблюдателя, нажмите левую кнопку мыши, не отпуская ее, переместите курсор в точку цели, затем отпустите кнопку.

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

Зоны видимости

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

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

SPOT: высота точки.
OFFSETA: сдвиг, добавляемый к высоте точки.
OFFSETB: сдвиг по высоте, добавляемый к значениям ячеек цели на поверхности.
AZIMUTH1: первый горизонтальный угол, задающий зону обзора (viewfield).
AZIMUTH2: второй горизонтальный угол, задающий зону обзора.
VERT1: вертикальный угол, задающий нижнюю границу зоны обзора.
VERT2: вертикальный угол, задающий верхнюю границу зоны обзора.

Для вычисления зон видимости

  1. Добавьте грид или TIN тему в ваш Вид.
  2. Добавьте точечную или линейную тему, в которой будут задаваться точки наблюдения.
  3. Активизируйте обе темы.
  4. В меню Поверхность выберите пункт Вычислить зоны видимости.
  5. Нажмите ОК.

Результатом будет грид с атрибутами видимости для каждой ячейки. Если Вам надо определить, сколько наблюдателей могут увидеть какую-то точку, примените инструмент Идентифицировать для этого грида. Вы получите соответствующее значение в поле с именем Visible-code.