УДК 91(075.8)

 

 

Третьяков В.Ю., Селезнев Д.Е.

Применение геоинформационных систем в геоэкологических исследованиях. Часть 1.:  Учебно-методическое пособие. – СПб.: Изд-во  РГГМУ, 2008. –  113 с.

ISBN

 

 

           Рецензенты: Г.К. Осипов, д-р геогр. наук (НИО-3 ЗАО «Институт

                                                    телекоммуникаций»),

                                                    В.В. Растоскуев, д-р геогр. наук (СПбГУ)

                                                                                                        

 

Печатается по решению

Ученого совета Российского государственного гидрометеорологического университета

 

 

 

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

Предназначено для студентов, обучающихся по специальностям «Геоэкология», «Природопользование» направления «Экология и природополь­зование».

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                      

                         

 

 

 

 

 

 

 

                                                  © В.Ю. Третьяков, Д.Е. Селезнев, 2008

                                     © Российский государственный

ISBN                                                                      гидрометеорологический университет, 2008


Введение

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

Пособие написано в соответствии с программой дисциплины «Геоинформационные системы» (Третьяков, 2007). Оно нацелено на практическую деятельность. В нём, разумеется, кратко рассматриваются самые необходимые положения теории геоинформационных систем, однако авторы стремились не дублировать материал, представленный в опубликованных ранее пособиях: «Методические указания по дисциплине «Геоинформационные системы» (Третьяков, 2001) и «Геоинформационные системы (ГИС): методическое пособие» (Третьяков, 2005). Читатель может почерпнуть в них более подробные разъяснения терминологии и положений теории геоинформационных систем. Эти пособия размещены на сайте В.Ю. Третьякова по адресу www.v-yu-tretyakov.narod.ru и могут скачиваться без ограничений. В пособии подробно изложена методика практической работы в среде ГИС ArcView 3.2, которая предназначена для локальной работы на отдельном компьютере. Поэтому данное пособие является первой частью учебно-методического пособия, посвященного использованию программных продуктов фирмы ESRI (Environmental systems research institute – «Институт исследований систем окружающей среды») в сфере геоэкологии и природопользования. Подготавливаемая к печати вторая часть пособия посвящена использованию программного пакета ArcGIS, который предоставляет широкие возможности работы с информацией, распределённой в глобальных компьютерных сетях. Поэтому в данном пособии не рассматриваются три последние темы программы дисциплины «Геоинформационные системы», посвященные работе в среде ArcGIS.

Пособие позволяет сделать в работе с ГИС ArcView 3.2 первые шаги, однако шаги достаточно уверенные для применения полученных навыков при оформлении курсовых, бакалаврских выпускных и дипломных работ. В пособии обобщен опыт преподавания курса ГИС и проведения практических занятий на факультете экологии и физики природной среды РГГМУ и факультете географии и геоэкологии СПбГУ.  Оно может служить как руководством для выполнения практических занятий в компьютерном классе, так и самоучителем для изучения ArcView 3.2. Задания составлены таким образом, что все необходимые данные находятся в папке ESRI того диска компьютера, на котором установлена ГИС ArcView 3.2. В начале каждой темы пособия приводится разъяснение рассматриваемых вопросов, а после изложения задания – подробные указания по его выполнению. Если задания однотипны, то в последующих заданиях разъясняется только их специфика по отношению к предыдущему заданию. Начиная со 2-ой темы пособия, в большинстве случаев даются общие указания для групп заданий. Если какой-то вопрос подробно рассмотрен, например, в указаниях к первой теме пособия, то в последующих темах этот вопрос не освещается: предполагается последовательная проработка тем и заданий пособия. Поэтому при возникновении вопроса сначала следует внимательно прочитать пособие с самого начала – Вы обязательно отыщете ответ на Ваш вопрос. Помните, что многие последующие задания включают в себя элементы предыдущих заданий. Поэтому выполнение последующих заданий фактически включает в себя повторение уже проработанных тем.

При работе в компьютерном классе перед началом занятий необходимо создать на сетевом диске папку каждой группы, в которой каждый студент создает свою папку для хранения своих работ, а внутри неё – папки для результатов отдельных практических занятий, например: «Задание 1», «Задание 2» и т.п. Во избежание потери информации не следует сохранять информацию вне личных папок и изменять что-либо в чужих папках.

Очевидно, что специалист по направлениям геоэкологии и природопользования должен уметь представлять результаты исследований с помощью картографических материалов. Тема 1 пособия знакомит читателя с возможностями создания и редактирования электронных карт, их легенд, построения запросов по семантическим характеристикам, т.е. использования ГИС в качестве информационно-справочной системы. Объекты окружающей среды характеризуются большим количеством параметров. Вторая тема пособия «Работа с семантическими характеристиками» даёт навыки определения или расчёта новых показателей по значениям существующих, статистических характеристик, а также выполнения картометрических операций. Для оценки экологического состояния городских территорий полезны навыки геокодирования (тема 3) – локализации объектов по их почтовым адресам. Одно из преимуществ электронных карт по сравнению с бумажными заключается в широчайших возможностях создания новых пространственных объектов на основе уже существующих с наследованием семантики «родительских» объектов. Этому направлению использования ГИС посвящены темы 4 и 5 пособия: выполнению пространственных операций и созданию буферных зон (например, водоохранных). При выполнении геоэкологических исследований часто бывает необходимо поместить на карте точки отбора проб, измерений и тому подобных мест выполнения полевых исследований. Этому посвящена шестая тема пособия, предоставляющая методику нанесения на электронные карты точечных объектов по их координатам. Также часто для визуализации или анализа экологической информации требуется выполнить связывание или соединение реляционных таблиц (тема 7). Типовая задача геоэкологических исследований – пространственная интерполяция результатов полевых исследований и анализ полученных пространственных полей. Этим вопросам посвящены темы 8 и 9, предоставляющие методики создания гридов – прямоугольных матриц числовых значений и их пространственного анализа. При экологических исследованиях линейных объектов и сетей: рек, дорог, трубопроводов, линий электропередач часто возникает необходимость локализации объектов по расстоянию до них от начала или определённого места какого-либо линейного объекта. Методика подобной локализации рассматривается в теме 10. Для лучшего представления результатов геоэкологических исследований бывает полезным применение диаграмм – навыки их создания в среде ГИС можно получить в результате проработки темы 11. В ГИС возможно внедрение мультимедийных элементов, что полезно для представления данных исследований и при использовании ГИС в качестве учебно-информационных компьютерных систем (тема 12). Очень часто при исследованиях в областях геоэкологии и природопользования возникает необходимость географической привязки растрового слоя: отсканированного изображения бумажной карты или спутникового снимка. В теме 13 пособия подробно рассматривается методика привязки отсканированных изображений топографических карт. Темы 14 и 15 посвящены выполнению картометрических операций и созданию векторных объектов с помощью компьютерных программ на языке Avenue. В теме 16 рассматриваются возможности пользовательской настройки интерфейса ГИС ArcView 3.2.

 

Тема 1. Знакомство с ГИС ArcView 3.2.

В данной ГИС пользователь всегда работает в рамках какого-либо проекта. Как только пользователь запускает ГИС, в памяти компьютера образуется объект – приложение, по отношению к которому все последующие объекты будут дочерними. Среди них в первую очередь следует упомянуть графический интерфейс пользователя и проект. ГИС при запуске по умолчанию спрашивает пользователя: следует ли открыть существующий проект и создать новый? Проект представляет собой объектно-ориентированную базу данных, в которой хранится внешний вид окон, легенды, характеристики проектов электронных карт, применяемые программы и ссылки на файлы с данными. Проект записывается в файл с расширением apr. Характерная студенческая ошибка – переписать только файл проекта на другой компьютер и затем удивляться: «Почему проект не работает?». Проект можно сравнить с деканатом: в нем хранятся данные по всем студентам, однако  сами студенты там не присутствуют постоянно.

Знакомство с ГИС ArcView 3.2 лучше всего начать с просмотра существующих проектов, в которых следует рассмотреть типы документов: виды, таблицы, диаграммы, компоновки, редакторы скриптов. Существующие проекты можно сохранять под другими именами. Электронные карты в ГИС ArcView 3.2 называются Видами. В проекте может быть программно неограниченное количество Видов. Любой Вид имеет следующие свойства: картографическую проекцию, единицы карты и единицы расстояния. Единицы карты – это те единицы, в которых рассчитываются координаты географических объектов на плоскости карты, единицы длины – это те единицы, которые используются для измерения расстояний на карте при помощи специального инструмента интерфейса. Пользователь имеет право изменять проекции Видов в том случае, если координаты объектов в файлах записаны в градусах широты и долготы. Если в Виде единицами карты также являются градусы, то Вид является неспроецированным, к нему не применена никакая картографическая проекция. Формально считается, что Вид в данном случае имеет картографическую проекцию, в которой везде градус широты равен градусу долготы. Поэтому географические полюса здесь не точки, а линии по длине равные экватору. В любом другом случае, если Вид имеет какую-либо картографическую проекцию, то он является спроецированным. В ГИС ArcView 3.2 применяются два способа хранения координат пространственных объектов: в географических координатах и декартовых координатах проекции данного Вида (единицы карты).

Слои электронной карты (Вида) в ГИС ArcView 3.2 имеют название тем. Возможны три вида тем: векторные, растровые и гриды. Последние представляют собой двумерные матрицы, в каждой ячейке которых храниться единственное числовое значение. Источниками векторных тем могут служить шейпфайлы ArcView и покрытия ArcInfo. Необходимо отметить, что в литературе по ГИС допускаются два варианта написания термина «шейпфайл»: слитно и через дефис («шейп-файл»). Вероятно, более правомерно слитное написание, поскольку именно так пишется этот термин в англоязычной литературе по ГИС: «shapefile». Также возможет импорт пространственных данных внешних форматов, например, файлов систем автоматизированного проектирования (САПР), т.е. электронных чертежей, например, файлов, созданных в системе AutoCAD. Темы могут быть активными и пассивными, видимыми и невидимыми. Все команды, подаваемые пользователем компьютеру с помощью интерфейса, относятся только к активной теме. Если же в Виде несколько активных тем, то команда будет относиться только к той из них, которая в легенде Вида расположена выше остальных. Источник темы (слоя) и название темы – разные вещи, хотя по умолчанию названием вновь добавленной в Вид темы служит название являющегося источником пространственных данных файла. Однако затем пользователь может изменить название темы в её «Свойствах», при этом допустимо использование кириллицы.

Специфический для ArcView формат хранения информации, имеющей пространственную привязку – это шейпфайлы. Три составные части шейпфайла – отдельные файлы с расширениями shp, shx, dbf. В файлах *.shp хранятся координаты и форма объектов, в *.dbf – семантические характеристики пространственных объектов. Файлы *.shx обеспечивают взаимосвязь между файлами *.shp и *.dbf. Для поиска сущности (объекта) в реляционной таблице файла формата dBASE (расширение *.dbf) не важно его положение в таблице, однако каждая запись (строка) таблицы, относящаяся к определённому объекту, расположена в совершенно определённом месте этого файла и имеет вполне определённый номер. В файле с расширением «shx» содержится последовательный список расстояний в единицах памяти (байтах) от начала файла с расширением «shp» до начал областей памяти этого файла, содержащих координаты пространственных объектов. Благодаря этому ГИС разыскивает в файле с расширением «shp» области пространственных характеристик, относящиеся к конкретным записям (объектам) реляционной таблицы файла с расширением «dbf».

Для каждого векторного слоя (темы) в памяти компьютера создается особый объект: виртуальная таблица атрибутов FTAB (Feature table) – именно через нее осуществляется обработка данных. Векторные данные можно копировать с помощью опции «Преобразовать в шейпфайл» ниспадающего меню «Тема». Для большинства предложенных в этом пособии заданий используются данные, входящие в стандартную ГИС ArcView. Все действия следует производить исключительно с созданными копиями исходных шейпфайлов.

Ниже приводится список типов практических занятий, направленных на выработку элементарных навыков работы в среде ГИС ArcView 3.2.

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

            Редактирование пространственных объектов темы. Слияние объектов и расчленение единого объекта на отдельные объекты, изменение конфигурации линейных и площадных объектов путем «перетаскивания и добавления вертексов».

            Создание запросов с помощью их «Построителя (Конструктора)». Выбор объектов при его помощи, а также «вручную с помощью курсора» в Виде и таблице. Основные кнопки Панели Инструментов: увеличение и уменьшение масштаба, экстент всех тем Вида, экстент активной темы, экстент выбранного объекта активной темы. Подписывание объектов. Копирование шейпфайлов. Копирование выделенных объектов в новый шейпфайл.

            Редактирование легенды активной темы (слоя). Различные способы изображения точечных, линейных и площадных объектов. Типы легенд: отдельный символ, цветовая шкала, уникальное значение, плотность точек, локализованная диаграмма. Типы заливок и штриховок площадных объектов. Упражнения: создать легенды карт США, представляющие особенности полового, национального, возрастного, социального состава населения, наиболее информативно отражающие выбранные характеристики. Сохранить в файле легенд формата *.avl.

К зачету: уметь разработать легенду карты, отражающую экологические характеристики объектов, например, содержание какого-либо ингредиента в среде, класс экологического состояния и т.п.

            Создание диаграмм. В качестве источника данных можно использовать атрибутивную таблицу слоя штатов США states.shp. Серии данных и группы данных.

К зачету: уметь создать диаграмму по содержащимся в реляционной таблице данным.

            Создание компоновки (макета страницы). Добавление в макет карт (видов), таблиц, графиков (диаграмм), растровых изображений. Редактирование легенды и надписей. Создание масштабной линейки и стрелки указателя на север (розы ветров). Подключение модулей «Конструктор легенды» и «Координатные сетки». Два способа создания легенд в компоновке: с помощью кнопки «Рамки легенды» Панели Инструментов и модуля «Конструктор легенды». В первом случае любые изменения Вида немедленно отражаются в легенде Компоновки, т.е. существует динамическая связь между Видом и Компоновкой, во втором – легенда остается прежней, несмотря на любые изменения Вида. Экспорт изображения компоновки во внешние форматы изображений и дальнейшая вставка изображений в файлы формата Microsoft Word.

К зачету: уметь создать компоновку и экспортировать изображение в качестве иллюстрации в текстовой файл.

Задание № 1.1

  1. Работа с картой Европы. Источник данных – в папке C:\ESRI\ESRIDATA\EUROPE. Все изменения производить с копиями, а не с оригиналами шейпфайлов. Из карты Европы сделать карту зарубежной Европы.
  2. Найти на карте зарубежной Европы города с численностью населения более 1 млн. человек и записать их названия в файл формата Word.
  3. Измерить расстояние между восточной частью Исландии и Стамбулом, записать его в тот же файл Word, что и названия городов.
  4. Создать легенду карты, где уникальным цветом будет показана каждая страна Европы. Сохранить легенду в файле *.avl.
  5. Создать Компоновку и сохранить ее в виде рисунка, импортированного в новый файл формата Word.

Указания к выполнению задания

Запустить программный пакет ArcView 3.2. В диалоговом окне, которое предлагает открыть проект «с Новым видом», «Как новый проект» или «Открыть уже существующий проект», выбрать последний пункт. В правой части появившегося диалогового окна перейдите в папку ESRI, находящуюся на диске «c» или «d», войдите в папку ESRIDATA. В левой части окна появятся названия проектов. Среди них выберите проект «europe.apr». Перед Вами появится Вид «Europe» – электронная карта Европы. Далее последовательно делаете активными темы (слои Вида) одним щелчком левой кнопки мыши в области названия темы. Когда очередная тема сделана активной, в пункте меню «Тема» на Панели Инструментов выберите опцию «Преобразовать в шейп-файл». Когда компьютер предложит Вам место для сохранения нового шейпфайла, выберите Вашу личную папку и вложенную в неё папку «Задание 1». Старайтесь, чтобы названия создаваемых шейпфайлов отражали их содержание.

Когда вы преобразуете все 4 темы (слоя) Вида Europe, проект следует закрыть и открыть Новый проект. Для этого нужно выбрать пункт меню «Файл» на Панели Инструментов, а в нём – опцию «Новый проект». Перед Вами появится пустое окно нового Вида. На Панели Инструментов в верхнем ряду выберите вторую кнопку слева (добавить тему).  На ней изображен символ «+». В правой части появившегося диалогового окна выберите Вашу папку, а в ней все имеющиеся шейпфайлы. Для этого на клавиатуре нажмите на кнопку «Shift» и нажатием левой кнопки манипулятора «мышь» отметьте все имеющиеся в диалоговом окне шейпфайлы. Теперь выберите в пункте меню «Файл» подпункт «Сохранить проект» и сохраните его в Вашей папке. Сделайте  видимыми все темы (слои) Вашего проекта, поставив галочку в квадратике перед названием каждой темы в списке тем Вида. Теперь сделайте активной тему полигональных объектов - стран Европы, далее в пункте меню «Тема» выберите опцию «Начать редактирование». Затем на Панели Инструментов выберите кнопку с изображением черной стрелочки (вторая в нижнем ряду кнопок). После этого наведите курсор мыши на территорию России и нажмите кнопку Delete. Таким образом, мы убрали очертания России с карты Европы. Аналогичным образом поступите с оставшимися на территории России реками, городами и урбанизированными территориями. Итак, из карты Европы мы сделали карту Зарубежной Европы. Все изменения без колебаний сохраняйте, ведь это всего лишь копии исходных шейпфайлов.

Сделайте активной тему городов Зарубежной Европы. Далее мы построим запрос, для чего выберем кнопку Построителя Запросов на Панели Инструментов (кнопка с изображением молотка и вопросительного знака). В левой части появившегося диалогового окна выбираем поле «Pop_class», в расположенной внизу области запроса должно быть создано логическое условие отбора. Для этого в центральной части диалогового окна выбираем кнопку «=». Затем в правой части диалогового окна выбираем необходимый нам класс городов, в данном случае «от миллиона до пяти миллионов» (“1,000,000 to 5,000,000”). В области запроса должно появиться следующее условие: ([Pop_class] = “1,000,000 to 5,000,000”). Нажимаем кнопку «Новая выборка». На карте и в таблице объектов темы эти города будут выделены жёлтым цветом. Но существуют города, численность населения которых более пяти миллионов человек и их выносят в отдельный класс, соответственно мы опять конструируем запрос к теме городов, но в этот раз выбираем тип «более пяти миллионов» (“5,000,000 and greater”) и нажимаем кнопку «Добавить к выборке». Теперь все искомые города выделены. При преобразовании тему городов в новый шейпфайл в него будут записаны только отобранные города, записи (строки) которых выделены в таблице. Можно посмотреть на список выделенных городов в таблице исходной темы. Для этого в верхнем ряду Панели Инструментов нажмите кнопку «Открыть таблицу темы» - на ней изображены лист с загнутым верхним правым уголком и таблица. На экране появится атрибутивная таблица темы. Затем в верхнем ряду Панели Инструментов нажмите кнопку с изображением двух жирных горизонтальных полос и направленной вверх жирной стрелки, которая перемещает выбранные строки в начало таблицы. Эта кнопка расположена правее кнопки Построителя Запросов. Теперь список всех выбранных городов находится вверху таблицы. Чтобы записать этот список в отдельный файл, в окне ArcView выберите ниспадающее меню «Файл», а в нём выберите опцию «Экспорт». Возможные форматы для экспорта: таблиц баз данных dBASE, INFO – семантических таблиц покрытий ARCINFO и текстовых файлов с разделителями. Поскольку мы хотим записать список городов-миллионеров в файл формата Word, то выбираем последний вариант, хотя при помощи Microsoft Excel возможен импорт в формат Word и из таблиц баз данных dBASE.

Измерение расстояний при помощи имеющейся на Панели Инструментов позволяет получить лишь приближенные результаты. Необходимо помнить, что в ArcView 3.2 все картометрические операции выполняются не на поверхности сферы или эллипсоида, а на поверхности проекции карты. Если, например, используется проекция Меркатора, то измерения будут производиться между точками плоскости развернутого цилиндра, которым мысленно обернут Земной шар. Для поиска кратчайшего расстояния следует применять гномоническую проекцию, на которой ортодромии – линии кратчайших расстояний, получаемые пересечением сферы плоскостью, проходящей через две точки на поверхности сферы и центр сферы, изображаются прямыми линиями. Поэтому измените проекцию Вида на гномоническую. Для этого: в окне ArcView активизируйте ниспадающее меню «Вид», а в нём – опцию «Свойства». В появившемся диалоговом окне «Свойства Вида» нажмите кнопку «Проекция». В диалоговом окне «Свойства проекции» включите переключатель «Определяется пользователем». В ниспадающем списке проекций выберите «Гномоническая». Гномоническая проекция представляет собой плоскость, касающуюся сферы в одной точке. Поверхность сферы проецируется на плоскость проекции лучами, исходящими из центра сферы. Параметры «Главный меридиан» и «Широта полюса истинных координат» определяют координаты точки касания плоскостью проекции сферы. Например, для представления на карте всего Северного полушария точку касания следует поместить на Северный полюс (широта – 90). При этом с удалением от точки касания быстро растут искажения масштаба. В данном случае не изменяйте эти параметры - ArcView  по умолчанию использует в качестве точки касания центр Вида. Далее в Свойствах Вида следует задать ещё два параметра – Единицы карты и Единицы длины. В единицах карты строится система координат Вида. Координаты курсора в этих единицах отображаются в окне ArcView правее масштаба. Единицы длины никак не связаны с единицами карты. В единицах длины представляются результаты измерений. Задайте в качестве единиц карты метры, а единиц длины – километры.

Чтобы измерить расстояние, нажмите в нижнем ряду Панели Инструментов кнопку с изображениями линейки, двух стрелочек и вопросительного знака («Измерить»). Далее подведите курсор к восточной оконечности острова Исландия и щелкните левой кнопкой манипулятора «мышь». Затем передвиньте курсор к Стамбулу. На карте появится изображение измеряемой линии, а внизу окна ArcView – её длина. Если щёлкнуть левой кнопкой манипулятора «мышь» один раз – на измеряемой линии будет зафиксирован сегмент (отрезок прямой). Измеряемая линия может иметь много сегментов. Внизу экрана представляется общая длина всей измеренной линии и длина текущего сегмента. Если дважды нажать на левую кнопку «мыши», то данное измерение расстояний будет закончено. В файл Word с перечнем городов-миллионников запишите измеренное расстояние.

Сделайте активной тему стран Европы. В списке тем Вида наведите курсор на название этой темы и дважды нажмите на левую кнопку манипулятор «мышь». Перед Вами появится диалоговое окно «Редактора легенды». Далее выберите тип легенды «Уникальное значение», а в качестве поля значений - «Name». Затем нажмите кнопку «Применить». Если цветовое решение Вам не нравится, то можете попробовать применить разные «Цветовые схемы» или назначить каждому объекту (стране) своё обозначение. Для этого в окне «Редактора легенды» наводим курсор на Символ страны и дважды нажимаем левую кнопку манипулятора мышь. Появляется диалоговое окно «Палитры штриховок». С его помощью выбираем тип заливки – сплошная, штриховка, точки, узоры. Для выбора цвета нажимаем кнопку с изображением малярной кисти и спектра - «Палитру цветов». Когда подходящая легенда будет сформирована, в окне «Редактора легенды» нажмите кнопку  «Сохранить», в качестве места сохранения легенды (файла формата “*.avl”) выберите Вашу папку, а файл легенды назовите так, чтобы было ясно, для отображения чего данная легенда применяется. После этого закройте «Редактор легенды».

Для сохранения карты во внешнем файле в ниспадающем меню «Файл» окна ArcView активизируйте опцию «Экспорт». В появившемся диалоговом окне выберите тип файла и назначьте его размещение и имя. Можно посоветовать два формата для экспорта: векторный формат Placeable WMF и растровый JPEG. Первый лучше сохраняет качество при изменении масштаба изображения, однако возможны ошибки при печати символов точечных объектов. Данный способ экспорта позволяет сохранить карту без легенды, масштаба, координатной сетки и т.д. Для сохранения во внешнем файле изображения полноценной карты следует создать «Компоновку» - страницу, подготовленную для печати. На компоновке может быть размещено несколько карт с легендами, помещены надписи, любые растровые изображения, таблицы и текстовые блоки. Использование компоновок особенно эффективно для создания файлов презентаций.

Компоновку можно создать двумя путями. Наиболее просто – при помощи имеющегося шаблона. В этом случае при открытом окне «Вида» в окне ArcView активизировать ниспадающее меню «Вид», в нем нажать опцию «Компоновка» и выбрать шаблон Компоновки. Далее появится изображение страницы, которую можно выводить на печать или сохранять во внешний файл. Теперь в пункте меню «Файл» выберите подпункт «Экспорт». Второй путь – творческое создание компоновки «с нуля». В окне проекта сделать активным тип документов «Компоновки» и нажать кнопку «Новый». В окне проекта появится новая пустая компоновка с названием “Layout1”. Это название можно изменить. Для этого следует закрыть окно этой компоновки, если оно открыто, в окне ArcView активизировать ниспадающее меню «Проект», в нем выбрать опцию «Переименовать Layout1» и ввести новое имя компоновки. Откройте окно компоновки. В ниспадающем меню «Компоновка» окна ArcView выбрать опцию «Параметры страницы». В появившемся диалоговом окне задать ориентацию компоновки (книжная или альбомная) и её размеры. Номинально нет ограничений на линейные размеры страницы. Поэтому, если планируется печать плакатов для представления данных на научной конференции, защите работы и т.п., то следует установить в качестве размеров компоновки размеры будущего плаката. Изображение компоновки в этом случае следует сохранить во внешний файл, а затем это изображение импортировать в документ CorelDRAW. Этот пакет редактирования графических файлов позволяет при печати разбивать изображение на отдельные куски, соответствующие листам принтера. Изображение печатается на отдельных листах, например, формата А4, которые останется только аккуратно склеить.

Вот перед Вами пустая компоновка. В нижнем ряду Панели Инструментов крайняя справа кнопка вызывает ниспадающий набор опций для редактирования компоновки. По умолчанию активной является самая верхняя кнопка набора - Создание рамки Вида на Компоновке. Если навести курсор на нижний правый угол этой кнопки и нажать на левую кнопку «мыши», то «выпадет» весь набор кнопок редактирования. При помощи манипулятора «мышь» можно сделать активной любую из кнопок набора. Для размещения на компоновке Вида при активной верхней кнопке набора следует принажатой левой кнопке «мыши» выделить курсором (его форма – крестик) область на компоновке для размещения изображения из Вида. После этого на переднем плане появится диалоговое окно «Свойства рамки Вида», в списке «Вид» которого следует выбрать Вид проекта, который будет добавлен в данную рамку. Включенная опция «Динамическая связь» означает, что любые изменения в Виде будут отражаться и на Компоновке. Отключение этой опции приведет к тому, что на Компоновке будет зафиксировано состояние Вида в момент импорта. При помощи диалогового окна «Свойства рамки Вида» также устанавливается масштаб карты на Компоновке. Вторая сверху кнопка набора редактирования Компоновки – «Рамка легенды». Её применение аналогично Рамке Вида -  на Компоновке выделяется область для помещения легенды, затем в диалоговом окне «Свойства рамки легенды» нужно выбрать Вид, из которого берется легенда. В рамку на Компоновке будут помещены названия и символы (легенды) всех видимых слоев Вида. Несомненным достоинством этой опции является возможность её динамической связи с Видом – все изменения в легендах тем Вида будут немедленно отображаться  в Рамке легенды компоновки. По умолчанию за название темы берется название файла источника. Для лучшей информативности карты названия тем следует переименовать, используя опцию «Свойства» ниспадающего меню «Тема», которое помещается в верхней части окна ArcView при открытом окне Вида. В появившемся диалоговом окне «Свойства темы» в текстовое поле «Имя темы» следует ввести название слоя, отражающее представляемые объекты или поверхности, например: «Экологическое состояние водоёмов» и т.п.

Однако использование «Рамки легенды» ограничивает возможности редактирования. На компоновке будут показаны легенды всех видимых слоев карты, что нужно далеко не всегда. Гораздо больше возможностей предоставляет модуль «Конструктор легенды». Для включения этого модуля необходимо открыть ниспадающее меню «Файл» окна ArcView и активизировать опцию «Модули». Во всплывшем диалоговом окне в перечне доступных модулей следует навести поочередно курсор на квадратики перед модулями «Координатные сетки» и «Конструктор легенды» и нажать левую клавишу «мыши». В квадратиках появятся «птички» и эти модули станут доступны. Кроме того, при открытом окне компоновки на Панели Инструментов появятся новые кнопки: в верхнем ряду крайняя справа, сине-голубая со схематичным изображением координатной сетки на Земном шаре – она вызывает диалоговое окно «Мастер координатной сетки» и крайняя справа в нижнем ряду кнопок, на ней схематично изображена легенда. После включения этой кнопки внутри окон Компоновки и Вида изображение курсора приобретает вид маленькой окружности с точкой в центре. Следует переместить курсор приблизительно в область будущей легенды на Компоновке и нажать левую клавишу «мыши» - на переднем плане появится диалоговое окно «Настройка легенды». Нажмите кнопку «Далее» - Вам будет предложено выбрать Вид проекта, из легенды которого Вы будете конструировать данную легенду на Компоновке и выбрать слои, символика которых должна быть отражена в легенде. Из общего списка слоев Вида отображаемые в легенде компоновки темы записываются в список слоев легенды Компоновки при помощи клавиши с изображением «>>». И наоборот, при помощи клавиши с изображением «<<» Вы можете удалять слои из списка слоев легенды Компоновки. Заметим, что порядок слоев в легенде Компоновки может отличаться от порядка слоев в легенде Вида. Пользователь задает также число столбцов в легенде Компоновки. Очевидно, что модуль Конструктор Легенды предоставляет пользователю больше возможностей редактирования, чем инструмент Рамка Легенды, однако сконструированная с его помощью легенда статична: изменения в Виде на ней никоим образом не отражаются, приходится убирать с Компоновки старую легенду и создавать новую. На втором шаге конструирования легенды предлагается ввести название легенды. Это совершенно не обязательно, можно в текстовом окне названия оставить пустое место. На третьем шаге устанавливаются параметры рамки легенды, далее – форма представления символов. На последнем, пятом шаге конструирования устанавливаются расстояния между элементами легенды. Затем следует нажать клавиши «Просмотр» и «Готово». Для перемещения легенды компоновки следует нажать крайнюю слева клавишу в нижнем ряду Панели Инструментов с изображением жирной чёрной стрелки. Теперь легенду компоновки можно перемещать и изменять её размеры. При перемещении компоновки курсор «мыши» на легенде приобретает вид крестика из 4-х стрелок: с нажатой левой клавишей «мыши» легенду можно передвигать. Если же навести курсор на один из чёрных квадратиков за рамкой легенды, то курсор приобретёт вид чёрной стрелки. В этом случае можно изменять размеры легенды.

Естественно, что карта без сетки координат и масштаба на самом деле картой не является: это рисунок, схема, но не карта. Поэтому на созданную карту следует поместить координатную сетку. «Мастер координатной сетки» может быть включен двумя способами. Первый – нажатием на крайнюю правую кнопку в верхнем ряду с изображением Земного шара и координатной сетки. Второй способ – активизировать ниспадающее меню «Компоновка» окна ArcView, а в нём – опцию «Добавить координатную сетку». В обоих случаях на переднем плане появится диалоговое окно «Мастер координатной сетки». На первой странице этого Мастера нужно выбрать Вид, для которого нужно создать сетку координат, поскольку на Компоновке может быть больше одной Рамки Вида. По умолчанию включены две опции: «Создать градусную сетку» и «Создать километровую сетку». Не следует на одной карте создавать обе эти сетки. Если создается карта относительно небольшого участка, который можно рассматривать как плоский, например: нижнее течение реки Охты, Васильевский остров, остров Валаам, район пос. Ильичево или даже весь Санкт-Петербург, то следует нанести на карту километровую сетку. Если же район исследований настолько обширен, что необходимо учитывать шарообразность Земли, то необходимо поместить градусную сетку. Последовательно общаясь с Мастером, пользователь задает параметры сетки: интервалы по широте и долготе или в декартовой системе километровой сетки и вид линий или перекрестий сетки. По рамке сетки выполняется автоматическое надписывание значений линий сетки.

Третья сверху кнопка ниспадающего набора Рамок – Рамка масштабной линейки. Для карт Земли, полушарий или континентов нет особой необходимости представлять масштаб – очевидно, что заявленный масштаб на самом деле соблюдается на каком-либо меридиане, параллели или двух параллелях или вообще только в окрестностях одной точки. Однако на крупномасштабных картах совершенно необходимо представление масштаба. Инструмент Рамка масштабной линейки работает аналогично Рамке легенды: пользователь определяет на Компоновке область для помещения масштабной линейки, единицы расстояний и стиль представления.

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

Пятая сверху кнопка ниспадающего набора Рамок – Рамка диаграммы. Она позволяет помещать на Компоновке созданные в данном проекте Диаграммы. Её использование особенно эффективно при создании демонстрационных материалов.

Шестая сверху кнопка ниспадающего набора Рамок – Рамка таблицы. Она позволяет поместить на Компоновке изображение таблицы данного проекта, которая представлена в списке таблиц. Этот инструмент также эффективен для создания демонстрационных материалов.

Последняя, седьмая сверху кнопка ниспадающего набора Рамок – Рамка рисунка. Она позволяет поместить на Компоновке изображения, хранящиеся в графических файлах. Эта возможность также пригодна для подготовки демонстрационных материалов: например, рядом с картой района работ представить фотографии типичных ландшафтов, объектов исследований, применённого оборудования и приборов и т.д.

Компоновку, также можно сохранить во внешнем файле при помощи опции «Экспорт» ниспадающего меню «Файл» окна ArcView. Затем можно в текстовом редакторе Microsoft Word открыть документ Word, выбрать пункт меню «Вставка», в нем опцию «Рисунок»,  подпункт «Из файла» и выбрать тот файл, в котором Вы сохранили изображение Компоновки. Теперь в текстовой документ (например, Вашу курсовую, бакалаврскую или дипломную работу, а, возможно, и диссертацию) в качестве рисунка вставлено изображение Компоновки. Остается только в редакторе Word создать подрисуночную подпись.

Задание № 1.2

  1. Работа с картой Северной Америки. Все изменения вносим в копии, а не в исходные файлы.
  2. Найти на территории Северной Америки территориальные единицы с численностью населения менее 200 тыс. человек и записать их названия в файл Word.
  3. Измерить расстояние от оконечности полуострова Юкатан до оконечности полуострова Калифорния и записать это расстояние в тот же файл Word, что и названия штатов.
  4. Показать на территории Северной Америки плотность населения по штатам США и Мексики и провинциям Канады. Сохранить легенду в файле *.avl.
  5. Сменить равнопромежуточною коническую проекцию карты на равновеликую цилиндрическую.
  6. Создать компоновку и сохранить ее в виде рисунка, импортированного в отдельный файл Word.

Указания к выполнению задания

Задание аналогично заданию № 1, поэтому здесь приводятся разъяснения, касающиеся только специфики данного задания. 

В папке esridata отрыть проект namerica.apr. Перед Вами появится карта Северной Америки. Последовательно делаете активными темы (слои карты) одним щелчком левой кнопки мыши в области названия темы и преобразуйте их в шейпфайлы. Когда вы преобразуете все 15 тем (сделаете копии их источников), проект закрыть и открыть Новый проект. Добавьте в Новый Вид созданные Вами шейпфайлы.

Сделайте активной тему штатов США.  Задайте к ней запрос с выделением штатов, население которых меньше 200 тыс. человек. Сохраните результат запроса во внешнем файле. Выполните аналогичные запросы для провинций Канады и штатов Мексики. Результаты всех трех запросов сохраните в файле формата Word.

Сделайте активной тему штатов США. Вызовите «Редактор легенды». Выберите тип легенды «Цветовая шкала», а в качестве поля классификации поле «Pop1990». Сохраните легенду. После этого нажмите кнопку «Применить» и закройте «Редактор легенды». После этого сделайте активной тему штатов Мексики. Снова вызовите «Редактор легенды» и загрузите только что сохраненную легенду штатов США. Аналогичную процедуру выполните и для канадских провинций.

Для смены проекции в пункте меню «Вид» выберите опцию «Свойства», в появившемся диалоговом окне нажмите кнопку «Проекция». Не забудьте, что большинство возможных проекций находится в списке «Определяется пользователем».

Задание № 1.3

  1. Работа с картой США. Все изменения вносим в копии, а не в исходные файлы. Добавить к карте США, слой, содержащий штаты Мексики.
  2. Найти на территории США и Мексики штаты с численностью населения менее 100 тыс. человек и занести их названия в файл Word.
  3. Измерить расстояние от оконечности полуострова Юкатан до оконечности полуострова Флорида и записать это расстояние в тот же файл Word, что и названия штатов.
  4. Показать для штатов Мексики при помощи цветной легенды долю городского населения  от общей численности населения, а для штатов США отношение численности негров к численности испаноязычных латиноамериканцев. Сохранить легенды в файлах формата *.avl.
  5. Сменить равнопромежуточною коническую проекцию карты на равновеликую цилиндрическую.
  6. Создать компоновку и сохранить ее в виде изображения, импортированного в файл Word.

Указания к выполнению задания

В папке esridata отрыть проект usa.apr. Перед Вами появится карта Соединенных Штатов. Затем добавьте в Вид файл state.shp из каталога mexico. Преобразуйте все 8 тем проекта в шейпфайлы, которые сделать источниками слоев Нового проекта. Сделайте активной тему штатов США. Задайте к ней запрос с выделением штатов, население которых меньше 100 тыс. человек. Аналогичный запрос выполните для штатов Мексики.

Для визуализации доли городского населения Мексики сделайте активной тему штатов Мексики. В «Редакторе легенды» выбрать тип легенды «Цветовая шкала», в качестве поля классификации - поле «P_urban90», а в качестве поля нормализации - поле «Процент от общего». Далее сохраните легенду и примените её. Для визуализации отношения негров к латиноамериканцам сделать активной тему штатов США. В «Редакторе легенды» выбрать  тип легенды «Цветовая шкала», в качестве поля классификации - поле «Black», а в качестве поля нормализации - поле «Hispanic». Сохраните и примените эту легенду.

Задание № 1.4

  1. Работа с картой США. Все изменения вносим в копии, а не в исходные файлы. Добавить к карте США, слой штатов Мексики.
  2. Найти на территории США и Мексики штаты с численностью населения менее 300 тыс. человек и занести их названия в файл Word.
  3. Измерить расстояние от оконечности полуострова Юкатан до оконечности полуострова Флорида и записать это расстояние в тот же файл Word, что и названия штатов.
  4. Показать для штатов Мексики при помощи цветной легенды процент городского населения от общей численности населения, а для штатов США локализованными диаграммами соотношение возрастных групп населения. Сохранить легенды в файлах формата *.avl.
  5. Сменить равнопромежуточною коническую проекцию карты на равновеликую цилиндрическую.
  6. Создать компоновку и сохранить ее в виде изображения, импортированного в отдельный от предыдущего файл Word

Указания к выполнению задания

В папке esridata отрыть проект usa.apr. Преобразуйте все темы проекта в шейпфайлы, которые сделать источниками слоев Нового проекта.

Для визуализации соотношений возрастных групп населения штатов США сделайте эту тему активной. В «Редакторе легенды» выберите тип легенды «Локализованная диаграмма», после этого в левой части появившегося диалогового окна выберите поля соответствующие различным возрастным группам («age_under_5», «age_5_17», «age_18_49», «age_50_64», «age_65_up»). Их можно выбрать все вместе с помощью манипулятора мыши при нажатой клавише «Shift» на клавиатуре. Затем нажать ставшую активной кнопку «Добавить». В результате выбранные поля будут перенесены в правую результирующую часть диалогового окна. Отредактировать цвет возрастных групп и сохранить легенду. После этого применить легенду и закрыть «Редактор легенды». После этого сделайте активной тему штатов Мексики. В «Редакторе легенды» выбрать тип легенды «Цветовая шкала», в качестве поля классификации - поле «P_urban90», а в качестве поля нормализации - поле «Процент от общего». Далее сохраните легенду.

Задание № 1.5

1. Работа с картой Мира. Все изменения вносить в копии, а не в исходные файлы. Удалите с карты Антарктиду, где нет постоянного населения.

2. Найти страны с численностью населения более 200 млн. человек и занести их названия в файл Word.

3. Измерить расстояние от острова Гренландия до острова Тасмания и записать это расстояние в тот же файл Word, что и названия штатов.

4. Отразить численность населения государств Мира при помощи цветной легенды. Сохранить легенду в файле формата *.avl.

5. Сменить проекцию Меркатора на Поперечную Меркатора.

6. Создать компоновку и сохранить ее в виде рисунка, импортированного в файл Word.

Указания к выполнению задания

В папке esridata отрыть проект world.apr. Преобразуйте все темы проекта в шейпфайлы, которые следует сделать источниками слоев Нового проекта. Сделайте активной тему Countries (’98), затем в пункте меню «Тема» выберите опцию «Начать редактирование». На Панели Инструментов выберите кнопку с изображением черной стрелочки (вторая слева в нижнем ряду кнопок). После этого отметьте Антарктиды на карте Мира и нажмите кнопку Delete. Антарктида исчезнет с карты Мира.

Постройте запрос по значениям поля «Pop_cntry», большим 200 млн. человек. В результате будут выделены страны с такой численностью населения. Для отражения численности населения стран Мира в диалоговом окне «Редактора легенды» выбрать тип легенды «Цветовая шкала», в качестве поля классификации - «Pop_cntry». Отредактируйте, сохраните и примените легенду.

 

Тема 2. Работа с семантическими характеристиками

            Специфика ГИС заключается в возможности обработки как пространственной, так и семантической информации. ГИС ArcView 3.2 может использоваться как информационно-справочная система: для этого при открытом окне Вида следует сделать активной крайнюю слева кнопку в нижнем ряду Панели инструментов (всплывающая подсказка при наведении курсора – «Идентифицировать», сообщение внизу окна ArcView – «Выводит информацию об объекте», на кнопке изображён символ “i”). После этого курсор на электронной карте принимает форму перекрестья с маленьким символом “i”. Если навести курсор на интересующий пространственный объект карты (не забудьте сделать активным содержащий его слой!) и нажать левую кнопку манипулятора «мышь», то на экране появится окно «Информация об объекте». В этом окне представлены два списка: в левом – название слоя и идентификатор объекта, правом – список значений всех полей объекта. Этот инструмент используется при оперативной работе с картой, когда нужно посмотреть характеристики определенного пространственного объекта.

            Атрибутивные таблицы векторных слоёв можно редактировать. Для этого следует открыть таблицу активной темы нажатием соответствующей кнопки в верхнем ряду кнопок Панели Инструментов. На этой кнопке изображена таблица, на соседней кнопке справа – изображение бинокля, выше кнопки – ниспадающее меню «Редактировать», всплывающая подсказка при наведении курсора – «Открыть таблицу темы», сообщение внизу окна ArcView – «Открывает таблицы активных тем». Другой способ открытия таблицы, единственно возможный для добавленных в проект или созданных в нём таблиц: в окне проекта сделать активным тип документов «Таблицы», выбрать в списке справа нужную таблицу и нажать кнопку «Открыть». Разумеется, таким образом можно открывать и атрибутивные таблицы тех тем, которые ранее уже открывались в Видах вышеупомянутым способом. Далее в ниспадающем меню «Таблицы» окна ArcView включить опцию «Начать редактирование». Если необходимы изменения структуры таблицы, добавление новых записей, то следует в ниспадающем меню «Редактировать» выбрать соответствующие опции: «Добавить поле», «Добавить запись», «Удалить поле». Если требуется изменить уже существующие значения, или заполнить новую запись, то нужно нажать кнопку «Редактировать» в нижнем ряду кнопок Панели Инструментов, при этом внизу окна ArcView появляется подсказка «Изменяет значения ячеек». На кнопке изображены символы “I” и стрелки, это средняя из трёх кнопок нижнего ряда. Теперь можно наводить курсор на любое значение любого семантического поля таблицы и редактировать его. Разумеется, невозможно редактировать значения поля “Shape”. Если редактируется много значений или вводятся новые данные, то периодически следует включать опцию «Сохранить изменения» ниспадающего меню «Таблица». По окончании редактирования нажать опцию «Прекратить редактирование» и ответить «Да» на вопрос «Сохранить изменения?»

            Зачастую требуется получить основные статистические характеристики значений какого-либо числового поля для совокупности выбранных объектов или всех объектов слоя. Для этого можно воспользоваться опциями ниспадающего меню «Поле». Опция «Статистика» выводит на экран окно с результатами статистической обработки числовых значений выбранного поля, хранящихся в выбранных записях, или во всех записях таблицы, если ни одна запись не выбрана. На экран выводится следующая информация: сумма всех значений, количество обработанных значений, среднее, максимальное и минимальное значения, диапазон изменения значений, т.е. разница между максимальным и минимальным значениями, величина дисперсии и стандартного отклонения (среднее квадратичное отклонение). 

            Также бывает необходимо сделать подсчет статистических характеристик числовых параметров для групп объектов, содержащихся в общей таблице, например, населенных пунктов по регионам, проб воды по речным бассейнам, водоемам и акваториям, значений, почвенных проб для ландшафтных и почвенных таксонов и т.п. В этом случае следует открыть анализируемую таблицу, выделить поле, по значениям которого необходимо выполнить группировку объектов, а затем либо нажать на Панели Инструментов кнопку с изображением символа «Σ» (всплывающая подсказка – «Статистики», подсказка внизу окна ArcView – «Создает сводную таблицу, резюмированную по активному полю»), либо в ниспадающем меню «Поле» выбрать опцию «Резюме». В обоих случаях на экране появится диалоговое окно «Создание таблицы». В этом окне нужно определить место размещения создаваемого табличного файла формата dBASE, создать список анализируемых числовых полей и рассчитываемых по ним характеристик (среднее, сумма, минимальное и максимальное значения, стандартное отклонение, дисперсия, первое и последнее значение,  количество объектов в группе). В созданной таблице по умолчанию будет присутствовать поле Count – количество объектов в группе и остальные заказанные поля с подсчитанными результатами. Наименования полей определяются следующим образом: слева к названию исходного поля, по значениям которого выполнялись расчеты, добавляется идентификатор определенной характеристики: Ave - среднее, Sum - сумма, Min - минимум, Max - максимум, StdDev - стандартное отклонение, Var - дисперсия, First - первое и Last - последнее значение, Count – счёт (количество объектов в группе). Между идентификатором и названием проанализированного поля ставится символ «_».

            С помощью опций «Сортировать по возрастанию» и «Сортировать по убыванию» меню «Поле» или соответствующих кнопок Панели Инструментов, на которых изображены удлиняющиеся или убывающие сверху вниз строчки (подсказки: «Сортировать по возрастанию» и «Сортировать по убыванию») выполняется сортировка таблицы по значениям выбранного числового поля.  Данные процедуры очень полезны в геоэкологических исследованиях для ранжирования объектов по степени содержания загрязняющих веществ.

            Очень полезной является возможность расчёта и определения значений полей. Например, по значениям загрязняющих веществ рассчитать индексы загрязнения воды, почв, атмосферы и т.д. Для этого следует рассчитать отношения концентраций к величинам ПДК, определить загрязняющие вещества, у которых эти отношения максимальны. Естественно, сначала нужно создать новое поле, значения которого будут вычисляться. Для этого открыть таблицу, в ниспадающем меню «Таблица» выбрать опцию «Начать редактирование», далее с помощью опции «Добавить поле» ниспадающего меню «Редактировать» создать в таблице новое поле. Затем следует выбрать в таблице это вновь созданное поле, наведя курсор на его название и нажав левую клавишу манипулятора «мышь». Имена полей, доступных для вычислительных операций представляются нормальным шрифтом, остальных - курсивом. Затем следует вызвать диалоговое окно «Калькулятор поля». Это можно выполнить двумя способами: при помощи опции «Вычислить» ниспадающего меню «Поле» или нажатием кнопки «Вычислить» в нижнем ряду Панели Инструментов, правее кнопки с изображением символа «Σ». На кнопке «Вычислить» (подсказка внизу окна ArcView – «Вычисляет значения поля») помещено изображение калькулятора.

В нижней части появившегося диалогового окна «Калькулятор поля» имеется пустой блок, в котором нужно сформировать выражение для расчета значений поля. Над этим блоком в квадратных скобках представлено название поля, значения которого будут рассчитываться, и знак «=». В блоке прокрутки «Поля» представлены все поля таблицы. Блок переключателей «Тип» содержит 3 возможности: «Число», «Символ» и «Дата». По умолчанию выбран вариант «Число» - выполнение операций с числовыми значениями. Разумеется, при геоэкологических исследованиях чаще всего будет востребован именно этот вариант, хотя не исключается использование и остальных возможностей. Выбор варианта «Символ» необходим при соединении двух строк, если нужно в новом поле отразить принадлежность площадного объекта двум таксонам. Например, нужно соединить названия ландшафтных и почвенных таксонов. Оператор «++» сцепляет две строки и вставляет одиночный пробел между ними.

В блоке прокрутки «Запросы» содержатся все возможные операции для конструирования выражения расчета. Чтобы поместить название поля или запроса (операции) в блок выражения, нужно навести курсор на имя поля или запроса и дважды нажать на левую кнопку манипулятора «мышь». Другой способ – просто сформировать выражение «вручную» при помощи клавиатуры. При этом следует не забывать, что имена полей должны стоять в квадратных скобках.

            После формирования выражения расчёта нажать кнопку «ОК». Расчёты будут выполнены. Значения одного и того же поля можно пересчитывать неоднократно.

            Выражение для вычисления, которое вводит пользователь - фактически является выражением на алгоритмическом языке Avenue. Поэтому при его создании необходимо следовать правилам этого алгоритмического языка. В самой простой форме выражение может быть числом, строкой символов, датой или логическим значением. Эта возможность может быть полезна в том случае, если требуется заполнить какое-либо поле таблицы большим количеством одинаковых значений. Введите это значение в поле ввода диалогового окна и нажмите кнопку «ОК»: оно будет введено во все записи редактируемого поля. Вам останется только изменить значения в тех записях, где они должны отличаться.

            Вообще выражение может состоять из любой комбинации имен полей, заключенных в квадратные скобки, и запросов Avenue, которые можно применять к данному типу поля. Возможность включения запросов Avenue в выражение расчета значений полей таблицы обеспечивает высокую гибкость составления выражений. Для преобразования символьных значений в числовые используется запрос «AsNumber», обратного - «AsString».

Тексты созданных программ Avenue также можно использовать в выражениях вычисления. Для этого следует набрать текст типа av.run(“Название скрипта”).

            Если таблица является таблицей атрибутов векторной темы, то в ней присутствует поле «Shape». В случае линейной или полигональной темы есть возможность расчёта площади и периметра полигональных объектов, длины линейных объектов. При этом надо помнить, что значения будут рассчитаны в тех же единицах, что и исходные данные слоя. Это означает, что, если координаты пространственных объектов хранятся в градусах широты и долготы, то даже, если проекция Вида отличается от географической и единицы карты не являются градусами, то всё равно площадь объектов будет рассчитана в квадратных градусах, а периметр полигонов и длина линейных объектов – в градусах. Разумеется, результаты подобных расчетов не имеют смысла нигде, за исключением, пожалуй, приэкваториальных областей, где градус долготы приблизительно равен градусу долготы. Выход из этой ситуации: определять картометрические характеристики только спроецированных объектов, т.е. объектов, координаты которых записаны в файловых структурах в декартовой системе координат определённой картографической проекции. Если же координаты пространственных объектов хранятся в градусах, а проекция Вида отличается от географической, то следует записать объекты в новую файловую структуру с координатами в единицах карты данного Вида. Для этого следует при открытом окне Вида и активной теме (слое), картометрические характеристики объектов которого необходимо получить, в ниспадающем меню «Тема» окна ArcView выбрать опцию «Преобразовать в шейпфайл». В появившемся диалоговом окне «Преобразовать (Имя преобразовываемой Темы)» определить название и размещение создаваемого шейпфайла. Затем появится информационное сообщение «Преобразовать», в котором задается вопрос: «ArcView обнаружил, что этот Вид спроектирован. Хотите сохранить новый шейп-файл в единицах проекции?» Ответ по умолчанию – «Нет», т.е. запись координат в градусах широты и долготы. Нам же следует нажать кнопку «Да». Произойдет запись координат объектов в новый шейпфайл в единицах карты. На экране появится информационное сообщение: «Поскольку Вид спроектирован, данные проекции не будут добавлены к Виду. Вид был сохранён на диске». Это не совсем верный перевод англоязычного сообщения, суть которого заключается в следующем: проекция данного Вида отлична от географической, единицы карты Вида – не градусы, а линейные единицы (метры, километры, мили и т.д.). Однако исходные данные пространственных объектов данного Вида – градусы широты и долготы. Координаты же объектов вновь созданного шейпфайла – единицы карты данного Вида, они не могут быть добавлены в Вид, так как над ними нельзя для размещения на карте совершить преобразование градусов в единицы карты, которое выполнено для всех векторных слоев данного Вида. Поэтому следует создать новый Вид и добавить в него созданный шейпфайл. ГИС ArcView воспримет систему нового Вида как плановую, единицы карты – как неизвестные. Для определения размерности единиц карты следует установить в диалоговом окне «Свойства Вида» те же единицы карты, что и в исходном Виде. Единицы длины можно установить любыми. После этого ГИС будет правильно воспринимать координаты объектов.

Для расчета длин линейных объектов и периметров полигональных следует ввести в блок расчетов диалогового окна «Калькулятор поля» выражение [Shape].ReturnLength, а для расчета площадей полигональных объектов: [Shape].ReturnArea. Необходимо заметить, что при вычислениях картометрических характеристик многосвязных объектов возможны ошибки. Поэтому лучше предварительно превращать многосвязные объекты в односвязные. Для этого необходимо применить разработанное на языке Avenue ГИС-при-ложение. 

Задание №2.1

Работа с копией проекта esri\esridata\usa.apr.

Вывести на экран статистические характеристики значений, хранящихся в следующих полях слоя Major Cities («Главные города»: 1) Pop1990 (число жителей), 2) Households (число домохозяйств), 3) Males (число проживающих мужчин), 4) Females (женщин), 5) White (белых), 6) Black (негров), 7) Nevermarry (никогда не состоявших в браке), 8) Married (состоящих в браке), 9) Separated (расставшихся, но не оформивших развод), 10) Divorced (разведённых), 11) Widowed (вдовых).

Указания к выполнению задания

Сделайте активной тему Major Cities и откройте её таблицу атрибутов. Для выделения поля наводите на его название курсор и нажимайте левую клавишу манипулятора «мышь». Для получения статистических характеристик всех значений какого-либо поля следует выделить это поле, затем в ниспадающем меню «Поле», расположенном в верхней части окна ArcView выбрать опцию «Статистика». На экран будет выведено окно с результатами статистических расчётов. Если же в таблице есть выбранные записи то, расчёты будут выполняться только по ним с игнорированием остальных.

Задание №2.2.

Получить статистические характеристики по полям, перечисленным в задание 2.1  для штата Калифорния.

Указание к выполнению задания

При помощи конструктора запросов (кнопка с изображением молотка и вопросительного знака) выбрать только города этого штата – [State_name]=”California”.

Задание №2.3.

Создать сводную таблицу по общему количеству городского населения штатов США.

Указания квыполнению задания

Сделайте активной тему Major Cities и откройте её таблицу атрибутов. Выделите поле State_name. На Панели Инструментов нажмите кнопку со знаком «Σ», либо в ниспадающем меню «Поле» выберите опцию «Резюме». Затем в появившемся диалоговом окне «Создание таблицы» в блоке прокрутки «Поле» выберите Pop1990, а в блоке «Вид статистики» - последовательно «Среднее», «Сумма», «Минимум», «Максимум», «Станд. Отклонение». После выбора очередного вида статистической характеристики нажимайте на кнопку «Добавить». В результате в правом нижнем окне диалогового окна появится перечень полей создаваемой таблицы статистических характеристик: Ave_Pop1990, Sum_Pop1990, Min_Pop1990, Max_Pop1990, StdDev_Pop1990. Если теперь нажать кнопку «ОК», то результирующая таблица будет записана в файл формата dBASE, имя и место размещения которого определены в текстовом блоке в верхней части диалогового окна правее кнопки «Сохранить как». Разумеется, пользователь волен отредактировать этот блок и занести в него другие имя и место размещения файла, чем были предложены системой. Нажатие кнопки «Сохранить как» вызывает диалоговое окно «Сохранить», в котором пользователю предлагается выбрать место для размещения файла результата и задать его имя. В созданной таблице будут присутствовать следующие поля: State_name – поле, по значениям которого производилась группировка объектов исходной таблицы, в данном случае города группировались по их принадлежности различным штатам США; Count – оно создаётся автоматически,  в нём записывается число записей исходной таблицы, которые были объединены в группу и по значениям которых рассчитаны статистические характеристики; поля «заказанных» характеристик. Обратите внимание, что название этих полей не может содержать больше 10 символов. Поэтому в созданной таблице находится не поле Ave_Pop1990, а Ave_Pop199 и т.п. В результирующей таблице содержатся рассчитанные статистические характеристики городов различных штатов США по общему количеству жителей.

Задание №2.4.

Создать аналогичные таблицы, содержащие характеристики городского населения различных штатов США по количеству: 1) домохозяйств (поле Households), 2) мужчин (Males), 3) женщин (Females), 4) белых (White), 5) негров (Black), 6) никогда не состоявших в браке (Nevermarry), 7) состоящих в браке (Married), 8) расставшихся, но не оформивших развод (Separated), 9) разведённых (Divorced), 10) вдовых (Widowed).

 

Задание №2.5.

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

Задание №2.6.

Подсчитать и занести в таблицу следующие отношения, характеризующие штаты США (тема US States): 1) численности мужчин к численности женщин, 2) долю белых в общей численности населения, 3)  долю семейных от взрослого населения, 4) детей и молодёжи до 18 лет к пожилому населению старше 65 лет.

Задание №2.7.

Выполнить аналогичные расчёты для городов и графств США.

Указания для выполнения заданий 2.6 и 2.7.

Открыть таблицу соответствующей темы и перейти в режим редактирования: ниспадающее меню «Таблица», в нём опция «Начать редактирование». Затем открыть ниспадающее меню «Редактировать», вызвать опцию «Добавить поле». В диалоговом окне «Определение поля» задать название поля, тип – естественно, числовое, число десятичных разрядов для расчётов отношений можно задать не более 2-3-х. После создания поля следует выделить его. Затем вызвать диалоговое окно «Калькулятор поля» либо при помощи опции «Вычислить» ниспадающего меню «Поле» или нажатием кнопки «Вычислить» с изображением калькулятора в нижнем ряду Панели Инструментов, правее кнопки с изображением символа «Σ». Предположим, мы хотим определить долю семейных от взрослого населения. В этом случае в нижний блок «Калькулятора поля», расположенный ниже идентификатора «[NewField]=» (здесь NewField – имя вновь созданного поля таблицы, в которое будут записаны результаты вычислений, разумеется, в каждом конкретном случае здесь будет стоять индивидуальное имя поля) следует поместить следующее выражение:

[Maried]/([Nevermarry]+[Married]+[Separated]+[Widowed]+[Divorced]).

После формирования выражения нажать кнопку «ОК».

Задание №2.8.

Расчёты площадей и расстояний.

Высчитать площади и периметры: 1) штатов, 2) графств, 3) озёр (Major Lakes); длины: 1) рек (Major Rivers), 2) автострад (Major Highways).

Указания к выполнению задания.

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

Примечание. Этот этап нужен только для того, чтобы потом не забыть, в каких единицах записаны координаты объектов, на последующие расчёты он не влияет. Откройте атрибутивную таблицу проецированного слоя в новом Виде, перейдите в режим редактирования таблицы и добавьте в неё новое числовое поле для записи результатов расчётов, затем выделите его в таблице. Вызовите «Калькулятор поля», в блоке построения выражений создайте выражения: для расчёта площадей – [Shape].ReturnArea, для расчёта периметров полигонов и длин линейных объектов – [Shape].ReturnLength.

Задание №2.9.

Работа с копией проекта esri\esridata\namerica.apr.

Вычислить площади и периметры: 1) провинций Канады, 2) штатов Мексики; озёр: 3) Канады, 4) Мексики; длины рек: 5) Канады, 6) Мексики; дорог: 7) Канады, 8) Мексики.

Задание №2.10.

Работа с копией проекта esri\esridata\europe.apr.

Вычислить площади и периметры: 1) стран (слой Country.shp), 2) урбанизированных территорий (слой Mjurban.shp), длины рек (слой Mjrivers.shp).

 

Задание №2.11.

Работа с копией проекта esri\esridata\russia\russia.apr.

Добавьте в проект таблицы age_mar.dbf и rudem.dbf из папки esri\esridata\russia. Эти данные, по-видимому, характеризуют сельское население регионов России, точность источника не известна и они не могут использоваться при написании курсовых и дипломных работ.

1) По данным таблицы age_mar.dbf подсчитать для каждого региона России отношение числа замужних женщин к числу женатых мужчин в возрастном интервале 18-69 лет (поле Mar18_69_m – количество женатых мужчин, поле Mar18_69_f – количество замужних женщин); 2) если принять, что все мужчины и женщины в возрасте от 18 до 69 лет имеют супруга именно в этой возрастной категории, то определить для каждого региона число женщин, не являющихся единственной женой своего мужа; 3) определить долю этих женщин от общего числа замужних женщин; 4) подсчитать отношения количества женатых мужчин к количеству замужних женщин по возрастным категориям: до 18 лет, 18-19, 20-22, 23-24, 25-29, 30-34, 35-39, 40-44, 45-49, свыше 50 лет. В таблице age_mar.dbf эти данные хранятся в полях, чьё имя начинается с Age, далее в названии поля приводится возрастной интервал, на конце названия m – мужчины или f – женщины.

Задание №2.12.

В таблице rudem.dbf в поле Pop_m_95 записано количество лиц мужского пола, проживающих в данном регионе, Pop_f_95 – женского, в полях, начинающихся с «Age» - число лиц данной возрастной категории. Рассчитать для каждого региона: 1) отношение мужчин к женщинам, доли лиц данной возрастной категории от общего количества населения: 2) до 14 лет, 3) 15-24, 4) 25-44 , 5) 45-59, 6) 60-74, 7) свыше 75 лет.

Указание к выполнению заданий 2.11 и 2.12.

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

Задание №2.13.

Рассчитать в километрах длины: 1) дорог, 2) железных дорог, 3) рек; площади и периметры: 1) озёр, 2) водохранилищ, 3) административных единиц.

Задание №2.14

Работа с копией проекта esri\esridata\russia\mosobl.apr.

Рассчитать: 1) общую протяжённость в километрах железных дорог Московской области; общую протяжённость автомобильных дорог: 2) всех, 3) магистральных государственного значения, 4) прочих государственного значения, 5) областного значения, 6) прочих; общую протяжённость: 7) рек, 8) каналов; площади и периметры: 9) районов, 10) озёр, 11) водохранилищ, 12) речных плёсов (значение поля Code темы «Озера, водохранилища» равно «р»); 13) площадь населённых пунктов; суммарные площади: 14) сельскохозяйственных и селитебных земель, 15) кустарников, 16) лесов.

Задание №2.15.

Работа с копией проекта esri\esridata\russia\moscow.apr.

Внимание! Это Вид спроецированных объектов! Рассчитать: 1) площади в квадратных километрах муниципальных образований г. Москвы, суммарную протяжённость в километрах: 2) железных дорог, 3) мелких водных объектов, 4) улиц; суммарную площадь объектов слоя «Кварталы»: 5) водных объектов, 6) газонов и пустырей, 7) дачных посёлков, 8) кварталов, 9) кладбищ, 10) отчуждённых земель, 11) парков, 12) пригородов, 13) стадионов, 14) улиц.

 

Тема 3. Геокодирование

Геокодирование – это создание слоя точечных объектов на основании их почтовых адресов, содержащихся в таблице реляционной базы данных. Например, может применяться при расстановке на карте урбанизированной территории источников загрязнения, имеющих почтовые адреса: автомобильные заправки, небольшие предприятия. Пример содержится в проекте esri\av_gis30\avtutor\arcview\qstart.apr в Виде Atlanta. Референс-тема (тема сопоставления) – streets in downtown (источник – streets.shp). Возможно применение различных типов адресов тем сопоставления. Таблица, объекты которой следует геокодировать – customrs.dbf. Тема сопоставления должна иметь особую структуру таблицы атрибутов. Для применяемого в данном случае типа адресов («улицы США с почтовыми индексами») это: название улицы, номер дома слева в начале отрезка улицы, номер дома справа в начале отрезка, номера домов справа и слева в конце, почтовые индексы с обеих сторон улицы. В данном случае тема сопоставления – линейная тема, объекты которой – отрезки улиц от перекрестка до перекрестка. Объекты не могут пересекаться между собой. Но, кроме этого, необходимо создать индекс геокодирования. Для этого тему сопоставления необходимо сделать активной, на Панели Инструментов нажать «Тема», затем «Свойства», в них – «Геокодирование» и ОК. Поскольку для темы «streets in downtown» индекс геокодирования уже построен, то сделать копию данной темы и уже для новой темы создать индекс геокодирования. В Таблицы проекта добавить customrs.dbf. Затем переходим в окно Вида, на Панели Инструментов нажать кнопку «Вид» и в появившемся ниспадающем окне нажать «Геокодировать адреса», «Поиск в автоматическом режиме» и «Выполнено». В результате – новый шейпфайл точечных объектов.

Задание №3.1

Поместить на карту Атланты и определить количество: 1) складов, 2) кинотеатров, 3) станций техобслуживания, 4) кафе, 5)  ресторанов.

Указания к выполнению задания

Открыть проект esri\av_gis30\avtutor\arcview\ qstart.apr. В окне проекта сделать активным тип документов «Таблицы». Добавить в проект таблицу customrs.dbf, расположенную в папке esri\av_gis30\avtutor\arcview\ qstart. Теперь сделать активным тип документов «Виды» и открыть Вид “Atlanta”, в нем сделать активной тему (слой) «Streets in downtown». Однако для этой темы индекс геокодирования уже создан. Поэтому для уяснения процесса создания индекса геокодирования следует сделать копию источника данных этой темы при помощи опции «Преобразовать в шейп-файл» ниспадающего меню «Тема». Добавьте вновь созданный шейпфайл в качестве темы в Вид – для неё индекс геокодирования пока не создан  и сделайте её активной. Открыть ниспадающее меню «Тема», в нём выбрать опцию «Свойства».

В пункте меню «Тема» выберите подпункт «Свойства», в появившемся диалоговом окне «Свойства темы» делаем активным третью сверху опцию «Геокодирование». В появившихся текстовых блоках ничего изменять не надо. Стиль адреса оставить прежним, прежними же оставить названия числовых полей, в которых записаны номера домов слева и справа в начале и конце отрезка улицы (L_f_add, R_f_add, L_t_add, R_t_add), наименований улиц (FtName) и почтовых индексов левой и правой сторон улицы (Zipl и Zipr).

Нажать кнопку «OK», появится окно сообщения с вопросом, следует ли построить индекс геокодирования  данного типа адресов? Ответьте «Да» и индекс будет построен. Индекс геокодирования позволяет интерполировать местоположение дома по его номеру на линейном объекте, если известны номера домов в начале и конце линейного объекта. При этом линейный объект может быть криволинейным.

Теперь в ниспадающем меню «Вид» выберите опцию «Геокодировать адреса». В появившемся диалоговом окне в текстовом блоке «Тема ссылок» должно содержаться название темы, для которой только что был построен индекс геокодирования, в блоке «Поле соединения» - стоять «Отсутствует» (это означает, что для успешного геокодирования нет необходимости соединения объектной таблицы данной темы с какой-либо таблицей), в «Использование стиля адреса» - «US Streets with Zone», в блоке «Таблица адресов» - «customrs.dbf», в блоке «Поле адреса» - «Address», в блоке «Поле зоны» - «Zip», в блоке «Показать поле» - «Name». Параметр «Расстояние смещения» позволяет раздвигать точки геокодируемых адресов от осевой линии улицы. Единицы смещения задаются в «Единицах длины» свойств Вида. В блоке «Таблица псевдонимов» оставить значение «Отсутствует». Таблица псевдонимов нужна в том случае, если в геокодируемой таблице приводятся не почтовые адреса объектов, а их псевдонимы, например, не «Литейный проспект, д.4» а «Большой дом». В этом случае нужна таблица, в которой бы содержались адреса псевдонимов. В блоке «Тема с адресной привязкой» необходимо установить параметры (название и место размещения) шейпфайла точечных объектов, который будет создан. Для этого следует воспользоваться расположенной справа от текстового блока кнопкой, открывающей диалоговое окно «Имя темы геокодирования». После этого нажмите кнопку «Поиск в автоматическом режиме». Начнется процесс геокодирования. Через некоторое время появится информационное окно с сообщениями о результатах геокодирования. В данном случае 100% совпадаений. Это означает, что каждому адресу в геокодируемой таблице найдено полное соответствие  в теме ссылок: линейной теме, для которой построен индекс геокодирования. После этого следует нажать кнопку «Выполнено». В Виде появится новая точечная тема - результат процесса геокодирования. Сделайте ее видимой и активной. Посмотрите таблицу её объектов. Вы увидите, что в ней к содержимому геокодируемой таблицы добавлены поля линейной референс-темы. В поле “Av_status” везде стоит “M” – “Matched” – «сравнение выполнено». Это означает, что сравнение адреса геокодируемой таблицы и референс-темы прошло успешно, пространственный объект создан и помещен на карту. Возможно значение “U” – “Unmatched” – сравнение не удалось и объект на карту не помещен. Поле “Av_score” показывает степень совпадения адресов в обеих таблицах. Величина «100» означает полное совпадение. Поле “Av_side” содержит значения “L”– объект расположен на левой стороне улицы и “R” – на правой.

Далее с помощью конструктора запросов в соответствии с заданием выделите объекты темы, скопируйте их в новый шейпфайл и визуализируйте его в качестве темы Вида. Тип объектов записан в поле “Type”.

Задание №3.2.

Поместите на карту Москвы и определите количество: 1) баров, 2) булочных, 3) гастрономов, 4) закусочных, 5) кафе, 6) кондитерских, 7) кулинарий, 8) магазинов, 9) пиццерий, 10) ресторанов (будьте внимательны, в таблице встречается неправильное написание этого термина), 11) столовых, 12) супермаркетов.

Указания к выполнению задания

Открыть проект esri\esridata\russia\moscow.apr. В окне проекта сделать активным тип документов «Таблицы». Добавить в проект таблицу customer.dbf, расположенную в папке russia. Полем адресов в ней, естественно, является поле “Adress”. Тип объектов записан в поле “Buisness_t”. Референс-темой служит слой «Улицы». После выполнения геокодирования откройте таблицу объектов созданной точечной темы. Обратите внимание, что, несмотря на совпадения адресов в геокодируемой таблице и референс-теме значения поля “Av_score” меньше 100 – вследствие использования символов кириллицы.

 

Тема 4. Работа с модулем «Мастер пространственных операций»

С помощью модуля «Мастер пространственных операций» можно выполнять оверлейные операции: создание новых слоёв с семантическими характеристиками объектов-родителей. Когда этот модуль подключен, то в ниспадающем меню опции «Вид» окна ArcView (верхний ряд Панели Инструментов) добавляется эта опция.

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

Слияеие объекты по общему атрибуту.  Эта операция выполняет группирование объектов в одной теме на основании значения выбранного атрибута – определенного значения какого-либо семантического поля. При этом будут объединены все объекты слоя, имеющие одинаковое значение данного поля, а не только соседние. Если же необходимо объединять только соседние объекты, имеющие одинаковые значения определённого поля, то это придётся делать «вручную» или писать специальную программу (скрипт).

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

Вырезание одной темы с использованием другой. Эта операция создает новый шейпфайл посредством наложения двух тем. Одна из этих тем должна быть полигональной («тема наложения»), она будет использоваться для определения области отсечения объектов другой темы («входной темы»), т.е. «тема наложения» используется в качестве формы для вырезания. В новом шейпфайле сохраняются только те объекты из «входной темы», которые попадают в вырезаемую область. Объектами входной темы могут быть полигоны, линии или точки. Отбор точечных объектов при помощи данной операции осуществим, однако гораздо проще добиться результата при помощи опции «Выбрать темой», поскольку точки не могут находиться внутри более чем одного полигона. Объекты в новом шейпфайле будут того же типа, что и объекты входной темы. Объектная атрибутивная таблица для нового шейпфайла содержит поля, идентичные имеющимся в атрибутивной таблице входной темы. Для корректности выполнения результата тема наложения должна содержать непересекающиеся полигоны. Эта операция используется для «обрезки» полигональных и линейных слоев прямоугольным полигоном рамки карты.

Пересечение двух тем.  Эта операция создаёт геометрическое пересечение двух тем и добавляет его в Вид в качестве новой темы. Темой наложения должна быть только полигональная тема. Ее объекты осуществят отсечение объектов входной темы. Любые объекты во входной теме, которые не попадают внутрь объектов темы наложения, игнорируются. Таким образом, в результирующую тему включаются только те области, которые совпадают во входной теме и теме наложения. Объектами входной темы могут быть полигоны или линии. Объекты результирующего шейпфайла будут того же типа, что и объекты входной темы. Атрибутивная таблица результирующего шейпфайла включает атрибуты входной темы и темы наложения. Пример пересечения тем: необходимо определить ландшафтную структуру водосборных бассейнов. В этом случае темой наложения должен быть слой водосборных бассейнов, а входной темой – ландшафтов. В результирующей теме содержатся объекты – ландшафтные таксоны только в пределах исследуемых водосборных бассейнов, причём в качестве семантической характеристики они имеют признак нахождения в пределах определённого водосборного бассейна.

Объединение двух тем. Эта операция создает новую тему путём наложения двух полигональных тем. Результирующая тема содержит объединенные полигоны и атрибуты обеих тем. Полигоны входной темы разбиваются по их пересечениям с полигонами темы наложения, называемой «полигональной темой для объединения». Атрибутивная таблица объектов результирующей темы содержит атрибуты из таблиц обоих тем. Эта операция может быть полезна, например, при создании буферных зон. В результате выполнения последней операции создаётся полигональный объект, который «закрывает» своего «родителя», даже при выборе опции «только вне полигонов». Как убрать из буферной зоны пространство, относящееся к породившему его полигону. Очень просто: объединить тему буферной зоны и «родительскую» тему. По умолчанию результирующая тема имеет имя «UnionN». Выделяете в ней собственно буферную зону, затем переключаете выбор и удаляете объекты, относящиеся к «родительской» теме. В результате остаётся только сама буферная зона.

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

Когда пространственное соединение основывается на отношении «ближайший» (то есть, ни одна из двух участвующих тем не содержит полигонов, а одна из них содержит точки), ArcView добавляет в целевую таблицу поле Distance (Расстояние). Это поле, которое ArcView вычисляет автоматически, содержит для каждого объекта, представленного в целевой таблице, значение расстояния до ближайшего объекта, представленного в исходной таблице. Расстояние вычисляется в единицах измерения данного Вида.

Когда пространственное соединение основывается на отношении «является частью» (то есть, обе участвующие темы содержат линейные объекты), линейные объекты, представленные в целевой таблице, должны быть подмножеством линейных объектов, представленных в исходной таблице, чтобы удовлетворять условиям пространственного соединения. Другими словами, линии из одной темы являются частью линий в другой теме. Например, если есть река Ока в одной теме и все реки бассейна Волги в другой, то все объекты первой темы рассматриваются как “часть” объектов второй темы. Это происходит потому, что Ока является притоком Волги, и объекты, представляющие Оку, присутствуют также и во второй теме.

Задание №4.1.

Вырезать из карты Мира участок: 1) Северную Америка; 2) Центральную Америку;

3) Южную Америку; 4) Европу; 5) Африку; 6) Азию; 7) страны СНГ; 8) Австралию и Новая Зеландию; 9) Северный Ледовитый океан; 10)Антарктиду. 12) Объединить все полигоны стран Европы в один.

Указания к выполнению задания

Открыть проект world.apr. Сделать копии источников тем проекта. Закрыть проект world.apr. Создать новый проект с новым Видом, в который в качестве слоев добавить скопированные данные. Перед Вами появится карта Мира в географической проекции. Спроецируйте Вид – установите какую-либо проекцию, в которой Ваш участок изображается с минимальными искажениями.

В ниспадающем  меню «Вид» выбрать опцию «Новая тема», тип объектов – «Полигон», место сохранения новой темы рамки карты – папка Вашего задания. Сделайте заливку этой темы прозрачной с помощью «Редактора легенды». Делаете экстент области Вашего варианта при помощи кнопки в нижнем ряду с изображением лупы и плюса. Теперь эта область должна занимать весь Вид. Затем в нижнем ряду кнопок делаете активной крайнюю справа с изображением прямоугольника. Теперь с помощью курсора манипулятора «мышь» при нажатой левой кнопке (символ курсора – крестик) рисуете прямоугольный полигон, пространственно накрывающий область Вашего варианта задания – создаёте рамку карты. Сохраняете изменения в теме рамки и прекращаете редактирование.

В ниспадающем меню «Файл» окна ArcView выбираете опцию «Модули», в появившемся диалоговом окне - модуль «Пространственные операции» (ставите с помощью манипулятора «мышь» птичку в квадратике слева от названия модуля и нажимаете кнопочку «OK»). Теперь в ниспадающем меню «Вид» окна ArcView  выбираете опцию «Мастер пространственных операций», в нем - пункт «Вырезать одну тему с помощью другой». В качестве входной темы устанавливаете ту тему, которую необходимо обрезать при помощи рамки, а в качестве полигональной отсекающей темы – естественно, только что созданный Вами слой рамки. Устанавливаете имя и место размещения создаваемой темы («результирующий файл») и запускаете процесс отсечения. Заметим, что в качестве отсекающего слоя может применяться только полигональная тема, а в роли обрезаемой – как полигональная, так и линейная тема. Номинально этот процесс можно применять и к точечным слоям. Однако точка не может находиться более чем в одном полигоне. Поэтому, если необходимо выбрать точечные объекты, расположенные  внутри полигона или их группы, то более быстрым будет использование опции «Выбрать темой» ниспадающего меню «Тема» окна ArcView.

Слияние объектов одной темы может выполняться двумя способами: «вручную» и при помощи «Мастера пространственных операций». В последнем случае необходимо выбрать пространственную операцию «Слить объекты по общему атрибуту». Для этого необходимо, чтобы сливаемые объекты имели одинаковое значение какого-либо поля, например: нужно слить в один объект все низинные болота. Другой случай: у нас имеется слой полигональных объектов – административные единицы Российской Федерации начиная с районного уровня. Однако нам нужны только контуры областей и республик. Поэтому следует слить объекты по полю названий субъектов РФ – районы, относящиеся к одним регионам, будут слиты.

При слиянии «вручную» выберите в ниспадающем меню «Тема» опцию «Начать редактирование». Сделайте активной вторую слева кнопку в нижнем ряду Панели инструментов с изображением черной стрелки.  Курсор приобретет вид стрелки. При нажатой кнопке “Shift” последовательно наводите курсор на объекты, которые необходимо объединить и отмечаете их нажатием левой клавиши манипулятора «мышь». В результате выбранные объекты на карте будут отмечены восемью черными квадратиками, расположенными в углах и на серединах сторон прямоугольника, заключающего в себе данный объект. После этого в ниспадающем меню «Редактировать» окна ArcView выбираете опцию «Объединить объекты». В результате её выполнения выбранные объекты будут объединены в один. Затем в ниспадающем меню «Тема» выбираем «Прекратить редактирование» и «Сохранить изменения». Существенное различие этих двух методов состоит в том, что при автоматизированном объединении создаётся новый результирующий шейпфайл, а исходный шейпфайл остается неизменным. При «ручном» же слиянии редактируется непосредственно исходный файл, и после команды «Сохранить изменения» уже невозможно вернуться к первоначальному состоянию.

Задание №4.2.

Создать полигональные объекты морей и рассчитать их площадь в квадратных километрах и морских милях: 1) Балтийского, 2) Белого, 3) Чёрного, 4) Азовского, 5) Средиземного, 6) Красного, 7) Карибского, 8) Жёлтого, 9) Японского, 10) Охотского, 11) Берингова морей; 12) Персидского, 13) Мексиканского заливов. 

Указания к выполнению задания

Полигоны морей Балтийского, Белого, Чёрного, Азовского лучше всего создавать, работая с копией проекта esri\esridata\europe.apr, остальных - esri\esridata\world.apr. В источниках слоёв Видов этих проектов координаты объектов записаны в географических координатах, Вам же для расчётов необходимы спроецированные объекты. Используйте равновеликую коническую проекцию Альберта, для минимизации искажений в качестве параметра «широта полюса истинных координат» задавайте приблизительно среднюю широту измеряемого объекта. Как Вы, вероятно, уже знаете, выяснить эту величину проще всего в географической проекции наведением на объект курсора (географические координаты курсора показываются на правом крае Панели Инструментов). Затем создаёте новую полигональную тему с единственным полигоном. В пределах морской акватории его граница должна отмечать границу данного моря, а на суше опоясывать данное море. Затем с помощью Мастера пространственных операций производите объединение двух тем: вновь созданной и темы полигонов суши (Country.shp). Будет образован новый слой, который по умолчанию имеет имя UnionN, где N – порядковый номер. Выделите в нём полигон моря, затем переключите выбор и уничтожьте все объекты, кроме полигона моря. Границы морей проходят следующим образом: Балтийского – от мыса Скаген на севере полуострова Ютландия (Дания) к берегу Швеции; Белого – от мыса Святой Нос на Кольском полуострове (рядом с ним находится устье реки Иоканги) к северо-западной оконечности полуострова Канин Нос; Азовского – в северной, наиболее узкой части Керченского пролива, Чёрного – по северному входу в пролив Босфор; Средиземного – по восточной части Гибралтарского пролива; Красного – по Баб-эль-Мандебскому проливу, разделяющему Джибути в Африке и Йемен в Аравии; Жёлтого – от полуострова Цинданао в Китае к западному мысу на территории Северной Кореи; Японского – от Кореи через лежащие в Корейском проливе острова Цусима к японскому острову Кюсю, затем по проливу между островами Кюсю и Хонсю, далее по западной части пролива Цугару между островами Хонсю и Хоккайдо, затем по проливу Лаперуза между островами Хоккайдо и Сахалином, и, наконец, между Сахалином и материком по северной границе Татарского пролива - самому узкому месту; Охотского – по проливам между островами большой Курильской гряды; Берингова – от Камчатки к Командорским островам, затем по Алеутской гряде к Аляске (примечание: для Берингова моря используйте стереографическую проекцию с параметрами: главный меридиан – 180, широта полюса истинных координат – 60); Карибского – от полуострова Юкатан в Мексике к о.Куба, от него к о.Гаити, далее к о.Пуэрто-Рико и далее по Малым Антильским островам к берегу Венесуэлы; Мексиканского залива - между южной оконечностью полуострова Флорида (США) и о.Куба; Персидского залива – по Ормузскому проливу, разделяющему анклав Омана и Иран.

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

Задание №4.3.

Работа с копией проекта esri\esridata\russia\russia.apr.

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

Задание №4.4.

Работа с копией проекта esri\esridata\russia\moscow.apr.

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

Задание №4.5.

Работа с копией проекта esri\esridata\russia\mosobl.apr.

Определить, землями какого типа (слой «Использование земель» окружены мелкие поселения.

Указания к выполнению заданий 4.3 – 4.5.

С помощью Мастера пространственных операций слить объекты слоя «Административное деление» Вида «Российская Федерация» по общему атрибуту поля Econ_reg. Затем в Мастере пространственных операций выбираете опцию «Присвоить данные по местоположению», затем в появившемся диалоговом окне «Пространственные операции» в окне прокрутки «1) Добавить атрибуты в тему:» установить слой населённых пунктов, в окне прокрутки «2) Взять атрибуты из темы:» установить вновь созданный слой экономических районов и нажать кнопку «Finish». Все поля из слоя экономических районов будут добавлены в таблицу слоя населенных пунктов.


Задание №4.6

Проверьте, прав ли был герой В.С. Высоцкого в фильме «Опасные гастроли», утверждая, что до Парижа от Одессы ближе, чем от Санкт-Петербурга.

 

Тема 5. Выбор темой и создание буферных зон

Выбор темой применяется, когда необходимо выбрать объекты одной темы, которые пространственно находятся внутри другой темы (полностью или хотя бы частично, в последнем случае выявляемые объекты пересекают границу полигональной темы, с помощью которой выполняется отбор) или граничат с нею. Например, необходимо найти «Ляпкиных-Тяпкиных» - промышленные объекты, которые хотя бы частично расположены в пределах водоохраной зоны. В этом случае выбираются объекты, расположенные на заданном расстоянии от реки. Здесь может понадобиться также создание буферных зон.

Буферные зоны создаются вокруг каких-либо объектов. Например, они могут показывать зоны влияния объектов: водоохранная зона по берегам реки или водоема, зона влияния выбросов автотранспорта по сторонам автострады и т.п. Может создаваться в виде графики, добавляться к существующей теме или в качестве новой темы. Для решения экологических задач оптимально создание новых тем. Расстояние может задаваться, а может браться из значений поля объектов зонируемой темы. Первый случай – мы создаем границу водоохранной зону на определенном расстоянии от берега. Второй случай – автострада в зависимости от интенсивности движения на различных участках разбита на отдельные объекты с различным средним количеством выбросов выхлопных газов. На основании величин выбросов рассчитываются размеры зон вредного влияния и записываются в поле атрибутивной таблицы. Далее по этому полю строятся объекты зоны влияния автострады на окружающую среду.

Задание № 5.1.

Работа с картой Мира. Источники данных -  в папке ESRI\ESRIDATA\WORLD. Создать слой главных портовых городов Мира.

Указания к выполнению задания

Вы можете работать с копией проекта world.apr или создать свой новый проект. В первом случае Вам следует сделать копию проекта при помощи опции «Сохранить проект как…» ниспадающего меню «Файл» окна ArcView. Вам понадобятся два слоя: главных городов Мира (источник – шейпфайл  cities.shp) и Мирового океана. В папке WORLD нет источника данных для слоя Мирового океана, но зато есть источник слоя суши всего Мира - country.shp и источник слоя полигонов 30 градусов по широте и долготе – world30.shp. Вырезав из последнего сушу, получим слой Мирового океана.

Если Вы работаете с копией проекта world.apr, то смените проекцию Вида World Map с Меркаторской на Географическую, если же Вы работаете в новом проекте, то не изменяйте проекцию – Географическая проекция уже стоит по умолчанию. Включите «Мастера пространственных операций». Выберите опцию «Объединить две темы» и объедините слои суши и 30-градусных полигонов. Во вновь образованном слое выделите при помощи Построителя запросов полигоны, для которых значение поля “Cntry_name”=””, т.е. отсутствует название страны. Будут выделены полигоны, относящиеся к Мировому океану. Запишите их в новый шейпфайл и добавьте его в качестве слоя в Вид.

Сделайте активным слой городов. Если при этом он не будет виден из-за слишком мелкого масштаба карты, то это нисколько не помешает выполнению последующих операций. Включите опцию «Выбрать темой…» ниспадающего меню «Тема» окна ArcView. В верхнем списке прокрутки появившегося диалогового окна «Выбрать темой» выбрать вариант «отстоят от», в среднем списке прокрутке выберите слой Мирового океана, а в нижнем списке прокрутки оставьте нулевое значение расстояния. Нажмите кнопку «Новая выборка». Сохраните выбранные города в шейпфайл. Проведите повторную выборку, но в этом случае поставьте расстояние, отличное от 0. Сравните результаты.

 

Задание № 5.2

Работа с картой Северной Америки. Источники данных -  в папках USA и CANADA. Создать портовых городов системы Великих Американских озер.

Указания к выполнению задания

Оптимальна работа с копией проекта namerica.apr. Задание во многом аналогично предыдущему, можно создать слой Великих Американских озер из слоя Major Lakes (Canada) или (USA), т.к. эти объекты имеются в обоих слоях, а можно просто отметить их. Затем выбираете города США и Канады, расположенные на берегах озер и сохраняете их в новых шейпфайлах. Добавляете их как темы в Вид и производите слияние тем в одну. При этом Вам необходимо выбрать, из какого из двух сливаемых слоев взять структуру таблицы атрибутов (список прокрутки «Используйте поля из»).

Задание №5.3.

Создать слой прибрежных штатов США.

Задание №5.4.

Создать слой прибрежных графств (counties) США.

Задание №5.5.

Работа с копией проекта europe.apr.

Создать слой приморских городов зарубежной Европы (источник данных – cities.shp).

Указание к выполнению задания

Придется создать слой морей: сначала создать новый полигональный слой, накрывающий территорию Европы, затем действовать аналогично заданию 5.1. Европа и Азия – не континенты, а части света, их граница в разные времена проводилась по-разному. Тем не менее, в древности именно в Малой Азии находилась область с названием «Азия», которое затем было распространено на всю часть света. Современная граница проводится по проливу Дарданеллы, Мраморному морю, проливу Босфор, Чёрному морю, Керченскому проливу, Азовскому морю, нижнему течению Дона, реке Манычу, озеру Маныч-Гудило, Кумо-Маныч-ской впадине, реке Куме, Каспийскому морю, реке Эмбе и восточному склону Уральских гор. Поэтому не следует относить к Европе Закавказье и Малую Азию.

Задание №5.6

Работа с копией проекта europe.apr

Создать слой приморских урбанизированных территорий зарубежной Европы (источник данных – mjurban.shp), расположенных не далее 20 км от берега моря.

Указание к выполнению задания

Измените проекцию на равнопромежуточную азимутальную.

Задание №5.7

Создать слой придунайских городов Европы.

Задание №5.8

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

Задание №5.9

Создать слой прирейнских урбанизированных территорий Европы, расположенных не далее 20 км от реки Рейна.

Задание №5.10

Создать слой приднепровских урбанизированных территорий Европы, расположенных не далее 20 км от реки Днепра.

Задание №5.11

Работа с копией проекта ESRI\ESRIDATA\RUSSIA\russia.apr

Создать слой приморских (не далее 10 км от берега) населенных пунктов России, исключая побережье Каспийского моря. Определить количество населенных пунктов, расположенных на берегу каждого из омывающих Россию морей.

 

Указания к выполнению задания

Имеющийся в проекте слой «Океан» таковым не является. Для создания слоя морских и океанских акваторий применить алгоритм, изложенный в указаниях к заданию 5.1. Тонкость заключается в том, что долгота объектов восточной Чукотки, расположенных в западном полушарии, в файле euasdd.shp, являющемся источником пространственных данных слоя «Евразия» записана в градусах восточной долготы, больших 180. А никакие объекты слоя «Океан», расположенные в западном полушарии, не имеют долгот, записанных в градусах восточной долготы. Поэтому восточная Чукотка пространственно «выходит» за пределы слоя «Океан» и при объединении слоев «Евразия» и «Океан» не возникнет объектов морских акваторий, омывающих берега восточной Чукотки. Для исправления этого недостатка запишите слой «Океан» в новый шейпфайл, добавьте результат в качестве нового слоя, сделайте его активным. Измените проекцию Вида «Российская Федерация» на географическую. Отредактируйте копию шейпфайла «Океан»: в ниспадающем наборе кнопок редактирования полигонов (крайняя справа кнопка нижнего ряда Панели инструментов) выберите самую нижнюю – «Добавление нового полигона, примыкающего к другим полигонам» и создайте полигон, охватывающий восточную Чукотку. Сохраните результаты редактирования и выполните объединение слоя «Евразия» с отредактированной копией слоя «Океан».

Задание №5.12.

Создать слой прикаспийских населенных пунктов России.

Задание № 5.13.

Создать слой населенных пунктов России, расположенных не далее 10 км от побережья Ладожского и Онежского озёр.

Задание №5.14.

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

Задание №5.15.

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

Указание к выполнению задания

Работая со слоем «Реки» (источник – rfrivers.shp) выделите все пространственные объекты, относящиеся к реке Волге, т.е. её линейные участки и берега русловых водохранилищ. Для выделения используйте Построитель Запросов, значение поля «Name» равно «Волга», «Ахтуба», «вдхр.Волгоградское», «вдхр.Саратовское», «вдхр.Куйбышевское», «вдхр.Чебоксарское», «вдхр.Горьковское», «вдхр.Рыбинское», «вдхр.Иваньковское». Просмотрите всю Волгу от истока до устья и вручную отметьте объекты, относящиеся к Волге, но не отмеченные в результате запросов. Из берегов Рыбинского водохранилища взять только южный берег между руслами Волги. Записать выбранные объекты в новый шейпфайл и с его помощью выбрать приволжские населенные пункты.

Задание №5.16.

Создать слой населенных пунктов России, расположенных не далее 5 км от Оби.

Указание к выполнению задания

Не забудьте про Новосибирское вдхр.

Задание №5.17

Создать слой населенных пунктов России, расположенных не далее 5 км от Енисея.

Указание к выполнению задания №5.12.

Не забудьте про Красноярское и Саяно-Шушенское водохранилища и Малый Енисей (Ка-Хем).

Задание №5.18.

Создать слой населенных пунктов России, расположенных не далее 5 км от Лены.

Задание №5.19.

Создать слой населенных пунктов России, расположенных не далее 5 км от Амура.

Задание №5.20.

Работа с копией проекта ESRI\ESRIDATA\world.apr

Создать слой 200-мильной экономической зоны России в Северном Ледовитом океане. Создать также слои экономических зон других арктических государств: Норвегии, Исландии, Дании (Гренландия), Канады, США (Аляска). Если есть перекрытия экономических зон 2-х и более государств, создайте слои этих перекрытий. Создайте компоновку с результатами Вашей работы и сохраните её во внешний файл.

Указания к выполнению задания

Измените проекцию Вида на Стереографическую. Параметры: «Широта полюса истинных координат» - 90, плоскость проекции касается Земного шара на Северном полюсе, «Главный меридиан» - значение определяется соображениями наилучшего представления данных на карте. Чтобы примыкающая к России часть СЛО и Арктический бассейн были представлены в наиболее крупном масштабе, можно установить значение этого параметра равным 120. Т.к. ArcView 3.2 не в состоянии создавать полигоны с координатами в десятичных градусах, пересекающие 180-й меридиан, то необходимо записать слой Countries (’98) в шейпфайл в декартовых единицах проекции. Разумеется, работать с ним придется в новом Виде, система координат которого будет взята из преобразованного шейпфайла. В свойствах Вида проецированной декартовой системы координат задать: «Единицы карты – метры», «Единицы длины – морские мили». В слое стран при помощи Построителя Запросов выбрать территории России. Затем в ниспадающем меню «Тема» окна ArcView выбрать опцию «Создать буферные зоны». На экране появится диалоговое окно, в котором следует выбрать опцию «Создать буферные зоны для объектов темы», в списке прокрутки выбрать слой, для объектов которого будут построены буферные зоны, а также включить условие «Использовать только выбранные объекты» и нажать кнопку «Далее». В изменившемся диалоговом окне необходимо установить параметры задания буферных зон: метод – «На заданном расстоянии», единицы измерения – «Морские мили». В текстовом блоке справа от включателя  «На заданном расстоянии» поставить 200 и нажать кнопку «Далее». Выбрать ответ «Да» на вопрос «Убрать границы между буферами?» Во фрейме «Создать буферные зоны» установить переключатель в положение «Только вне полигонов». Во фрейме «Сохранить буферные зоны» установить вариант «В новой теме» и при помощи кнопки вызова диалогового окна «Новая тема» определить будущее местоположение и название создаваемого файла буферной зоны, а затем нажать кнопку «Готово». Далее с помощью опции «Объединить две темы» Мастера пространственных операций создать объединение слоев буферной зоны и суши, в которой выбрать и удалить объекты суши. Выбор объектов суши выполнить Построителем запросов по полю «Cntry_name». Сначала выбрать полигоны, не относящиеся ни к какой стране, т.е. морские акватории, затем переключить выбор в таблице атрибутов слоя (естественно, её следует открыть и сделать редактируемой!) и удалить выбранные объекты - полигоны суши. Получится многосвязный полигон, включающий в себя 200-мильные зоны в пределах всех морей России, нас же сейчас интересует только Северный Ледовитый океан. Разбить многосвязный полигон на ряд односвязных можно программным способом, однако мы сделаем сейчас это более простым способом.

Создайте новую полигональную тему, пространственно накрывающую буферные участки Балтийского, Азовского, Чёрного и Каспийского морей и выполните её объединение с темой буферной зоны. Выделите в результирующем слое полигон буферной зоны СЛО и Тихого океана, переключите выбор и удалите лишние полигоны. Разделите единый полигон на два полигона соответствующих океанов при помощи разрезания полигона. Для этого сделайте тему редактируемой и в наборе кнопок редактирования пространственных объектов Панели инструментов выберите вторую снизу.

Далее по вышеизложенному алгоритму создайте 200-мильные зоны других арктических государств и проведите их объединение с 200-мильной зоной России. Выделите полигон экономической зоны России без перекрытий и последовательно выделите перекрытия зон разных государств. Чтобы провести через полигоны перекрытий линии, находящиеся на равном расстоянии от берегов соседних государств, последовательно создайте для этих стран буферные зоны на расстояниях 190, 180, 170 и т.д. морских миль, т.е. с убыванием расстояний на 10 морских миль. Если необходимо, вблизи берегов буферные зоны следует создавать через меньшие расстояния. Пересечения границ полигонов буферных зон будут находиться на равном расстоянии от берегов соседних стран, поэтому для корректировки экономической зоны России необходимо последовательно разрезать полигон перекрытия на две части, относящиеся к России и соседнему государству. Линия разреза должна идти через пересечения границ буферных зон одинаковых расстояний. Возможно, для упрощения последующего «разрезывания» полигона пересечения не лишним будет создать слой точечных объектов и пометить ими нужные пересечения границ буферных зон. Примерная картина разделения экономических зон России и Норвегии представлена на рис.1. Соедините все полигоны экономической зоны России в один. Данный метод решения задачи не является единственным, он требует довольно много времени, но он не требует написания специального программного кода. Также следует заметить, что в реальности граница российской экономической зоны отличается от построенной в результате выполнения этого задания по двум причинам: пространственные данные генерализованы, некоторые небольшие острова отсутствуют, в ряде случаев граница экономической зоны России скорректирована в соответствии с дипломатическими соглашениями.

 

 

Рис. 1. Разбиение полигона по точкам на пересечениях границ буферных зон.

 

Задание №5.21.

Создать зоны территориальных вод России и Японии в районе Сахалина и Курильских островов. Создать экономическую 200-мильную зону Японии. Выполнить разграничение с экономической зоной России. Создать 200-мильную зону вокруг 4-х южных островов Курильской гряды, на которые Япония имеет территориальные притязания. Визуализировать размеры японских аппетитов в отношении российской экономической зоны.

Указания к выполнению задания

Открыть проект russia.apr. В слое «Евразия» выделить остров Хоккайдо и сохранить его в шейпфайл с записью координат в географической мере. В слое «Административное деление» выделить Сахалинскую область и сохранить её в шейпфайл. Создать новый проект с Видом, в который добавить созданные шейпфайлы. Установить в качестве проекции «Равновеликую коническую Альберта», единиц длины – морские мили. Создать 12-мильные зоны территориальных вод, 200-мильные экономические зоны по методике, изложенной в указаниях к 20-му заданию. Выделить 4 южные острова Курильской гряды в новый слой путём объединения с новой накрывающей их полигональной темой. Создать вокруг них 12-мильные зоны территориальных вод и 200-мильные экономические зоны.

 

 

Рис. 2. Регион Курильских островов

 

Задание №5.22.

Работа с копией проекта ESRI\ESRIDATA\RUSSIA\mosobl.apr

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

В слое «Использование земель» выделить леса. Для выяснения того, по какому значению какого поля следует выбрать тип объектов «леса», вызовите «Редактор легенды».

Запишите выделенные объекты в новый слой и добавьте его в Вид. Постройте буферные зоны шириной 5 км вокруг мелких поселений и крупных населенных пунктов. Посмотрите таблицы созданных слоев и выясните названия слоев, в которых записана ширина буферных зон. Объедините буферные зоны в один слой. Затем объедините результирующий буферный слой с созданным слоем лесов. Выделите объекты со значением типа объекта,относящимся к лесам и сохраните его в слой лесов. Пространственно он будет полностью совпадать с созданным ранее слоем лесов, однако его отличие заключается в том, что среди его семантических характеристик присутствует признак вхождения внутрь буферных зон. Этим признаком является значение 5 полей буферных расстояний – “BufferDis”. Выделите объекты по данному значению обоих полей. Сначала запрос строится по значению одного поля, затем по значению другого и вторая выборка добавляется к первой. Сохраните выбранные объекты в шейпфайл лесов, подвергаемых существенному рекреационному воздействию. Переключите выборку и сохраните объекты в шейпфайл лесов, испытывающих малую рекреационную нагрузку.

Примечание: расстояние 5 км взято для примера, «из общих рассуждений». При выполнении аналогичных научных работ необходимо выполнение полевых исследований и строгое обоснование выбранного значения ширины буферной зоны интенсивного рекреационного влияния. Также в реальном экологическом исследовании следует учитывать структуру и проходимость дорог и троп, наличие барьеров и мест их возможного преодоления (речной сети, озер, болотистых участков, строящихся участков газо- и нефтепроводов, заграждений, мостов).

Задание №5.23.

Построить буферные зоны влияния автомобильных дорог на окружающую среду.

Указания к выполнению задания

Построить буферные зоны объектов слоя «Автомобильные дороги»: для магистральных дорог государственного значения ширину буферной зоны установить равной 200 м, для прочих дорог государственного значения – 150 м, для дорог областного значения – 100 м, прочих – 50 м. Разумеется, в реальных исследованиях ширина буферной зоны определяется, как минимум, двумя факторами: средней интенсивностью движения автотранспорта и характеристиками прилегающей к дороге территории. Естественно, что густой лес или плотная городская застройка препятствуют распространению выхлопных газов от дороги. Вызвать «Редактор легенды» и определить, какие значения какого поля определяют статус автомобильной дороги. Далее последовательно выделить объекты каждого типа и построить для них буферные зоны.

Задание №5.24.

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

Указания к выполнению задания

В слое «Автомобильные дороги» выделить магистральные дороги государственного значения и создать для них 3 буфера шириной 200 м каждый.

Задание №5.25.

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

Указания к выполнению задания

В слое «Автомобильные дороги» выделить прочие дороги государственного значения и создать для них 3 буфера шириной 200 м каждый.

Задание №5.26.

Построить буферные водоохранные зоны рек, озёр и водохранилищ: для рек шириной 200, а водоёмов - 300 м.

Указания к выполнению задания

Создать буферные зоны для объектов слоев «Озера, водохранилища» и «Реки». Объединить слои буферных зон.

Задание №5.27.

Работа с копией проекта ESRI\ESRIDATA\RUSSIA\moscow.apr

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

Указания к выполнению задания

В слое «Кварталы» с помощью Конструктора Запросов выделить парки и создать для них шейпфайл буферных зон. С помощью опции «Выбрать темой» ниспадающего меню «Тема» выбрать кварталы, которые хотя бы частично «заходят» в буферные зоны парков (во всплывающем диалоговом окне выбрать условие «пересекают»).

Задание №5.28.

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

Указания к выполнению задания

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

Задание №5.29.

Создать зоны комфортного проживания, расположенные одновременно внутри буферных зон парков и станций метрополитена (см. задания 5.27, 5.28).

Указания к выполнению задания

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


 

Тема 6. Координатные темы событий.

Одним из первых шагов обработки результатов абсолютного большинства полевых геоэкологических исследований является локализация на карте мест отбора проб, выполнения измерений, определений, описаний и т.п. Несмотря на развитие методов дистанционного зондирования значения очень многих экологических показателей можно определить лишь путем непосредственного измерения на месте или химического анализа отобранных проб. По сравнению с районом исследований места измерений и отборов проб являются точечными объектами. Часто результаты натурных исследований отображаются в электронных таблицах формата Microsoft Excel. Для обработки данных в среде ГИС ArcView 3.2, следует перевести таблицу формата Microsoft Excel в формат баз данных dBASE (расширение dbf). Чтобы это было возможно, необходима специальная структура исходной таблицы Microsoft Excel, соответствующая структуре реляционных баз данных, т.е.: данные должны быть записаны по столбцам, внутри столбца не должно быть пустых ячеек, вверху столбцов, в самом первом ряду ячеек таблицы должны быть записаны будущие (после конвертации в формат dBASE) имена полей. В качестве имен полей следует применять комбинации латинских букв и арабских цифр, причем буква должна быть первой! Ни в коем случае нельзя применять в названии символы косой черты /, скобок ( ), знаков препинания (точек, запятых и т.д.), крайне нежелательно применение символов дефиса – и черты в нижнем положении _, символов кириллицы. Необходимо также определить формат ячеек с числовыми данными именно как числовой с указанием количества знаков после запятой. Игнорирование этого требования приведет к тому, что дробная часть значений будет при конвертации отброшена. Разумеется, можно сразу создавать и заполнять таблицы в среде ГИС ArcView 3.2. Для этого следует сделать активным в окне проекта тип документов «Таблицы». В появившемся диалоговом окне «Новая таблица» задать имя вновь создаваемого файла формата dBASE и место его размещения. Затем вызвать ниспадающее меню «Редактировать» в верхнем ряду Панели Инструментов окна ArcView, в нём последовательным выбором опции «Добавить поле» сформировать структуру таблицы. При этом появляется диалоговое окно «Определение поля», в котором следует устанавливать имя поля, его тип, число символов или знаков («Ширина») и число знаков после запятой («Десятичные разряды»). Разумеется, отличное от нуля значение последнего параметра может устанавливаться только для полей числового типа.

ГИС ArcView 3.2 предоставляет пользователю возможность локализации на электронной карте точечных объектов на основании добавленной в проект таблицы, содержащей их координаты. Координаты могут быть либо декартовые – результаты привязки при помощи буссольных или теодолитных ходов, а также засечек. В этом случае мы будем добавлять наши точечные объекты в так называемый спроецированный «Вид», координатами объектов которого являются координаты x и y определенной картографической проекции. В России топографические карты строятся в проекции Гаусса-Крюгера, которая в терминологии ArcView 3.2 именуется «Поперечная Меркатора».

Координатами проекции Гаусса-Крюгера являются расстояния в метрах: x - до экватора и y - до осевого меридиана 6-градусной зоны. Небольшие по протяженности участки земной поверхности (не более 15 км) можно считать плоскими и абстрагироваться от понятия географической проекции. Так, в Санкт-Петербурге применяется местная декартовая система координат 1964 года. Данная система является открытой: координаты реперов можно узнать в тресте ГРИИ и уже от этих реперов вести свои теодолитные или буссольные ходы. Государственной тайной является способ пересчета данной системы в географические координаты. Обратите внимание, что в российских геодезических системах координат направления осей отличаются от направлений ГИС ArcView 3.2: ось x направлена снизу вверх, а y – слева направо, т.е. оси как бы «поменялись местами». Поэтому в случае геодезической привязки объектов значения «x» по результатам съемки следует записать в поле Y таблицы и значения y съемки в поле X таблицы.

Другой возможный случай – географические координаты, получаемые при помощи спутниковых навигационных систем: американской GPS (“Global positioning system”) или российской ГЛОНАСС («Глобальная навигационная спутниковая система»), чьё создание на стадии завершения. Она уже позволяет получать координаты на территории России. Применение спутниковых систем обеспечивает необходимую для экологических исследований точность пространственной привязки и существенно экономит время: в этом случае нет затрат времени на расчеты теодолитных или буссольных ходов, или выполнение астрономических наблюдений и вычислений – географические координаты точек определяются сразу. Кроме того, спутниковые приемники позволяют вести запись координат точек в файлы текстового формата, что существенно облегчает автоматизацию обработки данных.

Существует несколько способов получения координат объектов, расположенных на земной поверхности. Первый из них уже упомянутые спутниковые навигационные системы. Спутниковые навигационные системы работают следующим образом: вокруг Земли по орбитам, координаты которых известны с очень высокой точностью, летают навигационные спутники. В каждый момент времени известно положение каждого спутника в трёхмерной декартовой системе координат, связанной с Землёй. Однако из-за колебаний центра тяжести Земли, вызываемых перемещениями масс в атмосфере и гидросфере, выпадением и таянием снежного покрова и т.д. орбиты спутников также испытывают колебания. Поэтому наземные станции слежения и коррекции ведут постоянный мониторинг орбит спутников и периодически посылают на спутники корректировки координат орбиты данного спутника. Каждый спутник постоянно передает сигналы, содержащие позывной данного спутника, свои координаты и время посылки сигнала. GPS-приемник получает сигнал спутника и по разнице времени посылки сигнала и его получения вычисляет расстояние до спутника, декартовы координаты которого известны. Геометрическое место точек, соответствующее известному расстоянию от спутника, представляет собой сферу. Если одновременно удаётся поймать сигнал другого спутника, то пересечение двух сфер даст окружность, на которой находится GPS-приемник. Если есть сигнал от третьего спутника, то пересечение окружности с третьей сферой даст местоположение точки GPS-приемника. Разумеется, это идеальная схема. В реальности из-за погрешностей определяется область пространства, в которой находится GPS-приемник. Чем большее количество сигналов спутников поймает GPS-приемник, тем точнее определятся его местоположение. Обычно одновременно приемник получает сигналы от 6-8 спутников. Это первый источник погрешностей, возникающий при определение координат с помощью спрутниковых навигационных систем. Однако погрешности определения возникают не только из-за непостоянства положения орбиты спутника, но и вследствие колебаний скорости сигнала в атмосфере, вызываемых изменениями характеристик атмосферы на пути прохождения сигнала.

Другой источник погрешностей связан с пространственным положением спутников. Идеальный вариант – когда «пойманных» приёмником спутников много и они равномерно рассредоточены по всему небосводу. Тогда точность определения максимальна. Наихудший вариант – спутников всего 3-4 и они «сбились в кучу» рядом друг с другом. Поэтому станции коррекции рассчитывают поправку: они получают свои координаты по GPS и сравнивают со своими точными географическими координатами. Поправка посылается в виде сигнала для GPS-приемников. Она может применяться на расстояниях вплоть до 300-500 километров от станций коррекции.

Геодезические GPS-приемники обеспечивают точность определения координат до 5 см. В этих приемниках установлена обработка сигналов только в оптимальных условиях: несколько спутников в разных частях небосвода.

На территории России станций коррекции GPS-сигналов нет, однако северо-западный регион находится в зоне действия финской станции в Лапперанте. Такая избыточная точность совершенно не нужна при проведении полевых исследований. Полевые GPS-приемники обеспечивают точность до 2 м при использовании корректирующей поправки в зоне действия станции коррекции и 10-15 м без использования поправки. Для условий северо-запада средняя точность определения координат полевыми приёмниками фирмы “Garmin” составляет 5 м. Такая точность вполне достаточна при проведении геоэкологических исследований. Не страшна даже ошибка в 10-15 м: если Вы отметите несколько точек в течение 20-30 мин, то ошибка будет одинаковой для всех точек и их относительное положение друг относительно друга будет абсолютно верно.

Однако нам не нужны трёхмерные декартовые координаты точки – необходимо определить местоположение на карте. Создание любой карты предполагает перенос точки с поверхности Земли, которая не может быть описана математически, на воображаемую поверхность сферы или эллипсоида вращения и уже оттуда – на воображаемую поверхность определённой проекции.

Чтобы получить географические координаты точки, необходимо восстановить из неё перпендикуляр на поверхность воображаемой сферы или эллипсоида вращения. Разные страны используют различные эллипсоиды, чья поверхность в пределах этих стран лучше всего совпадает с поверхностью геоида. Поэтому при использовании разных эллипсоидов будут получаться отличающиеся координаты одной точки, поскольку формы эллипсоидов отличается и их поверхности не совпадают.

В России топографические карты строятся на основании эллипсоида Красовского в системах координат Пулково-42 и Пулково-95. В геодезических GPS-приемниках имеется возможность расчета координат на основе различных эллипсоидов, однако в наиболее распространённых полевых  GPS-приемниках фирмы “Garmin” возможность расчета для эллипсоида Красовского отсутствует. По умолчанию координаты рассчитываются для общемирового эллипсоида WGS-84 (“World geodesic system”). Смещение положения точек при переходе от WGS-84 к эллипсоиду Красовского и Пулковским системам составляет в среднем для России 100-150 м. Разумеется, с такой погрешностью можно смириться, например, при создании карты загрязнения Баренцева моря, однако она совершенно недопустима при исследованиях урбанизированных и вообще существенно неоднородных территорий и акваторий.

Для решения этой проблемы имеются способы пересчета координат. Можно сделать по-другому: помещать точечные объекты на электронные карты, координаты объектов которых получены для эллипсоида WGS-84 .

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

И спутниковые системы, и материалы мониторинга морских акваторий дают координаты в градусах, минутах и секундах, или градусах и минутах с долями. Для обработки в среде ArcView 3.2 необходимы десятичные градусы, т.е. градусы с долями. Существует два способа добавления переведенных координат в ГИС ArcView 3.2 – спомощью Microsoft Excel и с помощью самого ГИС ArcView 3.2. Для этого в исходной таблице Microsoft Excel следует рассчитать в отдельных столбцах координаты в десятичных градусах. Если, к примеру, координаты по спутниковым данным записаны в градусах и минутах с долями, то десятичные градусы рассчитываются следующим образом: минуты делятся на 60 и результат прибавляется к градусам. Если координаты записаны в градусах, минутах и секундах, то секунды делятся на 60 – получаем доли минут. Добавляем их к минутам. Далее минуты делим на 60 – получаем доли градусов и добавляем их к градусам. Если долгота западная, то градусы, минуты и секунды должны быть отрицательными! Обязательно установите числовой формат ячеек, в которых записаны координаты в десятичных градусах! Далее следует сохранить таблицы в формате dBASE IV.

Так как таблица создана вне проекта, то её необходимо добавить в него. Для этого в диалоговом окне проекта выберите тип документов «Таблицы», после чего появится список всех таблиц проекта, включая открывавшиеся атрибутивные таблицы векторных тем. Нажмите кнопку «Добавить». На экране появится диалоговое окно «Добавить таблицу», позволяющее выбрать содержащий таблицу файл следующих типов: dBASE, INFO или текстовой.  Выберите созданную Вами таблицу и нажмите кнопку «OK». Таблица будет импортирована в проект.

Второй способ – создание таблицы непосредственно в ArcView. Для этого в окне проекта также выберите тип документов «Таблицы», нажмите кнопку «Новый». После этого выберите место для сохранения новой таблицы, желательно в папке разрабатываемого проекта. После нажатия кнопки «OK» перед вами появится диалоговое окно с пустым бланком новой таблицы. Далее в пункте меню «Редактировать» выберите пункт «Добавить поле». Появится диалоговое окно создания нового поля. Оно предложит Вам ввести название создаваемого нового поля. Следует помнить, что у каждой точки отбора проб при мониторинговых и экспедиционных исследованиях должны быть свое название или идентификационный номер (или символ), а лучше и то и другое. Также необходимо выбрать тип поля: «Числовое», «Символьное», «Логическое» и «Дата». Для поля типа «Числовое» необходимо определить не только общее число знаков в блоке «Ширина», но и количество знаков после запятой в блоке «Десятичные разряды». Таким образом, можно задавать как целые, так и вещественные значения. Тип поля «Символьное» используется для сохранения текстовых характеристик объектов, например, названий городов, озер, рек и т.п. При создании данного поля ArcView 3.2 предложит Вам определить наибольшее количество символов, для этого необходимо поставить соответствующее число в текстовом блоке «Ширина». Тип поля «Дата» используется для сохранения дат, например, отбора проб. Тип поля «Логическое» предполагает содержание типа ложь или истина, значения в нем могут быть трех типов: «true», «false» и «nil». Последнее значение означает, что поле не имеет данных и вносится автоматически. Итак, мы создаем три или четыре новых поля: одно для внесения в него широты, второе – долготы, третье – идентификационного номера. Возможно создание и четвертого поля для хранения названий мест наблюдения или адресов. Первые три поля имеют формат «Числовой», причем широта и долгота должны иметь количество знаков после запятой, определяемое степенью точности определения координат. А вот идентификационный номер представляет собой уникальное целое число. Разумеется, вместо идентификационного номера может использоваться идентификационный символ. Внимание! Пакет ArcView 3.2 не воспринимает русскоязычные названия полей.

После создания полей создаём записи и вносим в них данные. Для этого в пункте меню «Редактировать» необходимо выбрать пункт «Добавить запись». Результатом будет создание одной пустой строки (записи),  в которую затем заносим информацию. Записей нужно создать столько, сколько у нас точек с координатами.

Теперь, когда необходимая информация добавлена в виде таблицы в проект, её можно добавить в Вид. Для этого в диалоговом окне проекта сделайте активным тип документов «Виды», затем выберите из списка нужный Вид и откройте его. Далее в ниспадающем меню «Вид» выберите опцию «Добавить тему Событие», на экране появится соответствующее диалоговое окно. По умолчанию стоит добавление координатных тем событий: активна кнопка в верхнем левом углу с изображением точки и символов X и Y. Выберите в списке прокрутки «Таблица» созданную Вами таблицу. В списке прокрутки «X поле» выбрать поле, в котором содержатся значения  долготы, а в списке прокрутки «Y поле» – широты. Разумеется, для Видов спроецированных координат следует указывать поля со значениями координат X и Y. Теперь нажмите кнопку «OK». В Вид будет добавлена новая точечная тема, имеющая такое же название, как и исходная таблица. Когда Вы сделаете ее видимой, то на карте появятся точки, например, отбора проб в соответствии с их географическими координатами. С темой события можно производить все действия, что и точечной темой, источником которой служит шейпфайл.

Задание № 6.1.

Поместить на карте восточной части Финского залива и Невской губы сеть станций мониторинга качества воды, координаты которых приведены в табл. 1.

Табл. 1.

Станции мониторинга качества вод Финского залива и Невской губы

Станция

Широта,

градусы

Широта,

минуты

Долгота,

градусы

Долгота,

минуты

Средняя

глубина

Описание

1   

59

59

30

13

3

устье Б.Невки

2

59

58

30

13

4

Петровский фарватер 

30

59

55

30

16

8

устье Б.Невы у истока р.Екатерин-гофки

6

59

53

30

9

5

Южная Лахтинская отмель                

25

59

53

30

10

13

Морской канал у Золотых ворот

7

59

58

30

9

3

у входа в Елагинский фарватер  

    9

59

56

30

8

4

у входа в Корабельный фарватер

10

59

54

30

5

13

Морской канал  у входа в устье дамб

11

59

53

30

5

3

между поселком Стрельна и дамбой

12

59

59

30

0

4

У Лисьего Носа

13

59

58

29

59

5

бывшая свалка грунта у Лисьего Носа

39

59

56

29

57

13

Морской канал у Петродворца

14

59

55

29

56

4

фарватер у Петро-дворца

42

60

0

29

56

4

западнее Лисьего Носа

15

59

59

29

52

8

Северные ворота

16

59

58

29

48

13

Морской канал у Кронштадта

17

59

56

29

47

4

у Ломоносова

12а

60

0

30

1

1

пляж у Лисьего

Носа 

11а

59

52

30

4

1

пляж у поселка Стрельна

14а

59

53

29

55

1

пляж у Петродворца

17а

59

55

29

47

1

пляж у поселка Мартышкино

5

59

53

30

13

10

Морской торговый порт СПб

19

60

7

29

52

9

у Сестрорецка

20

60

9

29

42

10

у Зеленогорска

А

60

26

28

17

30

выход из Выборгского

залива в Финский

59

52

28

56

14

юго-западнее мыса

Устинский

59

52

28

42

27

восточнее мыса Колганпя

Продолжение табл. 1

Станции мониторинга качества вод Финского залива и Невской губы

Станция

Широта,

градусы

Широта,

минуты

Долгота,

градусы

Долгота,

минуты

Средняя

глубина

Описание

59

50

28

26

26

юго-западнее мыса Колганпя

18л

59

42

28

19

10

на форватере севернее р.Луга

ВС

60

34

28

34

10

 

ПС

60

33

28

38

10

 

З

60

40

28

39

7

фарватер  у п-ва

Лиханиеми

Д

60

41

28

41

5

фарватер у о-ва

Защитный

СЗ

60

46

28

42

5

выход из Сайменского канала в бухту Защитная

1

60

44

28

41

5

выход из бухты

Защитная

2

60

42

28

44

4

фарватер у порта Выборг

60

43

28

44

8

Выборг-Порт

21

60

6

29

44

14

севернее о.Котлин

22

60

9

29

26

11

16 км к ЮЗ от

Зеленогорска

24

60

2

29

26

21

место плавмаяка "Ленинград"

26

59

59

29

37

7

южнее о.Котлин

19а

60

9

29

56

1

пляж у Сестрорецка

20а

60

11

29

43

1

пляж у

Зеленогорска

1

60

4

29

8

27

 

2

60

5

28

43

37

к ЮЗ от мыса

Стирсудден

3

60

7

28

4

48

 

4

60

7

27

23

60

между о-вами Гогланд и Мощный

 

Указания к выполнению задания.

Создайте лист Microsoft Excel, в котором в формате базы данных запишите данные табл. 1. «В формате базы данных» означает, что все данные записываются в колонки без пропусков, в первой строке – названия полей (только латинские буквы и арабские цифры!). Поскольку ГИС ArcView 3.2 требует задания координат в десятичных градусах, вставьте столбцы широты и долготы в этих единицах. Рассчитайте соответствующие значения. Так как градус содержит 60 минут, то координата в десятичных градусах = координата в целых градусах + минуты/60. Обязательно задайте числовой формат для ячеек, в которых рассчитаны широта и долгота станций (точек взятия проб) в десятичных градусах: иначе при записи в формате dBASE дробная часть будет потеряна. Затем сохраните файл в формате dBASE IV.

Добавьте полученный файл формата dBASE (расширение – dbf) в проект ArcView 3.2. Для этого в окне проекта сделайте активным тип документов «Таблицы» и нажмите кнопку «Добавить». На экране появится диалоговое окно «Добавить таблицу». С его помощью выберите файл, содержащий созданную Вами таблицу. Тип файла по умолчанию – dBASE. Затем сделайте активным тип документов «Виды» и откройте тот, в который Вы хотите добавить точечную Тему событий. Этот Вид может быть пустым, т.е. не содержать пока ни одного слоя. Теперь добавьте в него Тему события. Для этого в окне ArcView откройте ниспадающее меню «Вид», а в нём выберите опцию «Добавить тему Событие». На экране появится диалоговое окно с соответствующим названием. Обратите внимание – в его верхнем левом углу активна кнопка с изображением точки и символов «Y» и «X». Это означает, что добавляется координатная Тема Событий, т.е. точечные объекты локализуются по их координатам. В диалоговом окне имеются три списка прокрутки: «Таблица», «X поле» и «Y поле». В первом следует выбрать файл, содержащий служащую источником координат таблицу, в других - указать названия полей таблицы, содержащих значения координат. Внимание! Поле, содержащее значения географической долготы, необходимо указывать в списке «X поле», а значения широты – в списке «Y поле».

Измените проекцию Вида на Поперечную Меркатора (Гаусса-Крюгера – эллипсоид Красовского) или Равновеликую коническую Альберта. Чтобы видеть акваторию Финского залива и Невской губы, добавьте слой esri\esridata\europe\country.shp. Создайте прямоугольный полигон рамки, охватывающей акваторию с точками мониторинга, и с помощью Мастера пространственных операций вырежьте объекты суши слоя country.shp, находящиеся внутри рамки.

 

Тема 7. Связывание и соединение таблиц

Давольно часто данные необходимые при геоэкологических исследованиях содержатся в различных таблицах, которые просто необходимо соединить в единую базу данных или базу знаний. Для этого в ГИС ArcView 3.2 предусмотрена процедура связывания таблиц. Связывание и соединение таблиц в ArcView производится также, как и у любых баз данных реляционного формата: с помощью ключевых полей. Это означает, что обе связываемые или соединяемые таблицы должны иметь по полю с одинаковыми параметрами объектов. При этом не обязательно, чтобы поля в обеих таблицах назывались одинаково, вполне допустимо, чтобы они назывались по-разному, важно только, чтобы в этих полях хранились значения одинаковых параметров объектов. Связывание таблиц означает лишь установление связи между таблицами, при этом сами таблицы проекта не изменяются. Тип связи между объектами двух таблиц может быть любым: «один к одному», «один ко многим», «многие к одному», «многие к многим». Связанные таблицы позволяют осуществлять выбор объектов в одной таблице при помощи выбора объектов в другой таблице. Например, имеется электронная карта ландшафтных таксонов или таксонов экологической устойчивости и т.п. На этой карте может быть много отдельных таксонов, относящихся, например, к «холмисто-моренным комплексам ельниками зеленомошными». Если даже это, отнюдь не самое длинное название записывать в символьное поле атрибутивной таблицы полигонального слоя, то в результате память компьютера будет использоваться явно нерационально. Эту проблему можно решить следующим образом: в атрибутивной таблице слоя ландшафтных комплексов держать поле с краткими аббревиатурами или номерами типов комплексов. Также в проекте нужно иметь таблицу с подробными названиями типов комплексов. Для возможности установления связи с таблицей атрибутов слоя ландшафтов в данной таблице должно иметься также поле с соответствующими номерами или краткими аббревиатурами типов комплексов. Именно эти поля будут ключевыми для установления связи между таблицами. Связь таблицы подробных названий комплексов с атрибутивной таблицей слоя ландшафтов будет относиться к типу «один ко многим». Наличие этой связи позволит выбрать в таблице подробных названий комплексов какой-либо определённый тип комплекса, и при этом на карте в слое ландшафтов будут автоматически выделены все, сколько бы их не было, пространственные объекты соответствующего типа ландшафтного комплекса.

Соединение таблиц приводит к тому, что поля из одной таблицы добавляются в другую. Здесь единственно возможный тип соединения – «один к одному». Например, есть слой точечных объектов – пунктов мониторинга окружающей среды. Положение этих пунктов неизменно за продолжительный период времени. Необходимо отразить на карте результаты мониторинга по данным определённой съёмки или осреднённые данные за какой-либо период наблюдений. В любом случае необходимо создать таблицу значений таким образом, чтобы каждому пункту наблюдений соответствовала только одна запись (строка) таблице. Несоблюдение этого требования приведёт к тому, что при добавлении данных к атрибутивной таблице слоя точек отбора проб к записям будет добавляться та запись из относящихся к данной точке, которая окажется выше других в добавляемой таблице. Измененная атрибутивная таблица слоя точек получит статус «небазовой». Это означает, что физически она состоит из нескольких таблиц, параметры соединения которых хранятся во вспомогательных файлах с расширениями «sbn» и «sbx». Пользователь может выбирать объекты в небазовой таблице, но лишён возможности её редактировать. Впрочем, он может легко справиться с этой проблемой: достаточно создать по данному слою новый шейпфайл при помощи опции «Преобразовать в шейп-файл».

В ArcView 3.2. можно связывать и соединять как атрибутивные таблицы  векторных слоёв, так и добавленные в проект таблицы, не имеющие позиционной информации. Часто встречается необходимость связи или соединения атрибутивной таблицы векторной темы и обыкновенной реляционной таблицы.

В окне проекта выбрать тип документов «Таблицы». Откройте две таблицы, которые необходимо связать или соединить. Выделите в них ключевые поля, которые содержат одинаковые для  объектов обеих таблиц значения (например, идентификаторы точек отбора проб). Для этого в нижнем ряду кнопок Панели Инструментов таблицы выберите кнопку с изображением черной стрелки. После этого курсор примет вид чёрной стрелки. Последовательно наведите курсор на название ключевого поля каждой таблицы и нажмите левую кнопку манипулятора «мышь». Сначала нужно открыть таблицу-источник, откуда будут добавляться данные, затем ту, в которую они будут добавляться Таблицы нужно оставить открытыми, поскольку связывать и соединять можно только открытые таблицы. На Панели Инструментов станет активной кнопка с изображением двух таблиц со стрелками, направленными друг против друга, шестая справа в верхнем ряду («Соединить таблицы»). Кроме того, соединение таблиц можно выполнить с помощью опции «Соединить» ниспадающего меню «Таблица». Для связывания таблиц применяется опция «Связать» этого меню.

Задание 7.1.

Работа с копией проекта c:\ esri\esridata\russia\Russia.apr.

  1. Создать таблицу из двух полей: ключевое – названия субъектов (должны совпадать с названиями в поле Name слоя «Административное деление») и поле с названием федерального округа.
  2. Создать таблицу, содержащую данные о каждом субъекте федерации на основании приведенных данных (http://www.perepis2002.ru/ct/html/TOM_01_04_1.htm).
  3. Связать созданную таблицу с атрибутивной таблицей темы «Административное деление»
  4. Соединить созданную таблицу с атрибутивной таблицей темы «Административное деление»
  5. Создать карту, изображающую разным цветом субъекты, относящиеся к различным федеральным округам.
  6. Показать различия регионов по территории и населению.

Табл. 2

Состав Приволжского федерального округа

Субъект Федерации

Центр субъекта

Территория,
км2

Население
2002 г.

Кировская область

Киров

120 800

1 503 529

Нижегородская область

Нижний Новгород

74 800

3 524 028

Оренбургская область

Оренбург

124 000

2 179 551

Пензенская область

Пенза

43 200

1 452 941

Пермский край

Пермь

160 600

2 819 421

Республика Башкортостан

Уфа

143 600

4 104 336

Республика Марий Эл

Йошкар-Ола

23 200

727 979

Республика Мордовия

Саранск

26 200

888 766

Республика Татарстан

Казань

68 000

3 779 265

Республика Удмуртия

Ижевск

42 100

1 570 316

Республика Чувашия

Чебоксары

18 300

1 313 754

Самарская область

Самара

53 600

3 239 737

Саратовская область

Саратов

100 200

2 668 310

Ульяновская область

Ульяновск

37 300

1 382 811

 

Табл. 3

Состав Сибирского федерального округа

Субъект Федерации

Центр субъекта

Территория,
км2

Население
2002 г.

Агинский Бурятский автономный округ

Агинское

19 000

72 213

Алтайский край

Барнаул

169 100

2 607 426

Иркутская область

Иркутск

745 500

2 446 378

Кемеровская область

Кемерово

95 500

2 899 142

Красноярский край

Красноярск

2 339 700

2 966 042

Новосибирская область

Новосибирск

178 200

2 692 251

Омская область

Омск

139 700

2 079 220

Республика Алтай

Горно-Алтайск

92 600

202 947

Республика Бурятия

Улан-Удэ

351 300

981 238

Республика Тыва (Тува)

Кызыл

170 500

305 510

Республика Хакасия

Абакан

61 900

546 072

Томская область

Томск

316 900

1 046 039

Усть-Ордынский Бурятский автономный округ

Усть-Ордынский

22 400

135 327

Читинская область

Чита

412 500

1 083 133

 

Табл. 4.

Состав Северо-Западного федерального округа

Субъект Федерации

Центр субъекта

Территория,
км2

Население
2002 г.

Архангельская область

Архангельск

410 700

1 294 993

Вологодская область

Вологда

145 700

1 269 568

Калининградская область

Калининград

15 100

955 281

Ленинградская область

Санкт-Петербург

85 300

1 669 205

Мурманская область

Мурманск

144 900

892 534

Ненецкий автономный округ

Нарьян-Мар

176 700

41 546

Новгородская область

Великий Новгород

55 300

694 355

Псковская область

Псков

55 300

760 810

Республика Карелия

Петрозаводск

172 400

716 281

Республика Коми

Сыктывкар

415 900

1 018 674

Санкт-Петербург

Санкт-Петербург

600

4 661 219

 

Табл. 5.

Состав Уральского федерального округа

Субъект Федерации

Центр субъекта

Территория,
км2

Население
2002 г.

Курганская область

Курган

71 000

1 019 532

Свердловская область

Екатеринбург

194 800

4 486 214

Тюменская область

Тюмень

161 800

1 325 018

Ханты-Мансийский автономный округ

Ханты-Мансийск

523 100

1 432 817

Челябинская область

Челябинск

87 900

3 603 339

Ямало-Ненецкий автономный округ

Салехард

750 300

507 006

 

Табл. 6.

Состав Дальневосточного федерального округа

Субъект Федерации

Центр субъекта

Территория,
км2

Население
2002 г.

Амурская область

Благовещенск

363 700

902 844

Еврейская автономная область

Биробиджан

36 000

190 915

Камчатская область

Петропавловск-Камчатский

170 800

333 644

Корякский автономный округ

Палана

301 500

25 157

Магаданская область

Магадан

461 400

182 726

Приморский край

Владивосток

165 900

2 071 210

Республика Саха (Якутия)

Якутск

3 103 200

949 280

Сахалинская область

Южно-Сахалинск

87 100

546 695

Хабаровский край

Хабаровск

788 600

1 436 570

Чукотский автономный округ

Анадырь

737 700

53 824

 

Табл. 7.

Состав Центрального федерального округа

Субъект Федерации

Центр субъекта

Территория,
км2

Население
2002 г.

Белгородская область

Белгород

27 100

1 511 620

Брянская область

Брянск

34 900

1 378 941

Владимирская область

Владимир

29 000

1 523 990

Воронежская область

Воронеж

52 400

2 378 803

Ивановская область

Иваново

23 900

1 148 329

Калужская область

Калуга

29 900

1 041 641

Костромская область

Кострома

60 100

736 641

Курская область

Курск

29 800

1 235 091

Липецкая область

Липецк

24 100

1 213 499

Москва

Москва

1 000

10 382 754

Московская область

Москва

46 000

6 618 538

Орловская область

Орёл

24 700

860 262

Рязанская область

Рязань

39 600

1 227 910

Смоленская область

Смоленск

49 800

1 049 574

Тамбовская область

Тамбов

34 300

1 178 443

Тверская область

Тверь

84 100

1 471 459

Тульская область

Тула

25 700

1 675 758

Ярославская область

Ярославль

36 400

1 367 398

 

Табл. 8.

Состав Южного федерального округа

Субъект Федерации

Центр субъекта

Территория,
км2

Население
2002 г.

Астраханская область

Астрахань

44 100

1 005 276

Волгоградская область

Волгоград

113 900

2 699 223

Краснодарский край

Краснодар

76 000

5 125 221

Республика Адыгея

Майкоп

7 600

447 109

Республика Дагестан

Махачкала

50 300

2 576 531

Республика Ингушетия

Назрань

4 300

467 294

Республика Кабардино-Балкария

Нальчик

12 500

901 494

Республика Калмыкия

Элиста

76 100

292 410

Республика Карачаево-Черкессия

Черкесск

14 100

439 470

Республика Северная Осетия (Алания)

Владикавказ

8 000

710 275

Республика Чечня

Грозный

15 000

1 103 686

Ростовская область

Ростов-на-Дону

100 800

4 404 013

Ставропольский край

Ставрополь

66 500

2 735 139

 

Указания по выполнению задания

Сначала необходимо создать таблицу, содержащую два поля: первое из них - название региона и является ключевым, а второе - название федерального округа, куда входит данный регион. Для этого можно поступить двумя способами: создать таблицу в Microsoft Excel и сохранить в формате DBASE IV или создать непосредственно  в ArcView. Первое поле рекомендуется назвать «Name», оно будет содержать названия субъектов Федерации. Второе поле рекомендуем назвать «Fed_dist», оно будет содержать названия тех федеральных округов, к которым относятся данные субъекты Федерации. Далее необходимо заполнить эту таблицу по данным пособия. Если Вы работаете Microsoft Excel, то в качестве типа файла выберите  «DBF 4 (dBase IV)». Не забудьте, что формат ячеек с цифровой информацией должен быть числовым с определённым количеством знаков после запятой.

Теперь создайте таблицу, содержащую данные о субъектах Федерации, входящих в  Федеральные Округа. Вам потребуется создать таблицу из трех полей. Первым будет поле «Name», содержащее наименование всех субъектов Федерации. Второе поле будет содержать площадь каждого из субъектов Федерации, предлагаемое название «Sub_area». Третье поле будет содержать количество населения, название -  «Sub_pop». Далее также необходимо заполнить данную таблицу.

Добавьте таблицы в проект. В окне проекта сделайте активным тип документов «Таблицы», выберите таблицы, которые содержат информацию о принадлежности того или иного субъекта Федерации к тому или иному Федеральному Округу и данные о площади и численности населения данных субъектов. Откройте их. Отметьте поле «Name».

Откройте атрибутивную таблицу темы «Административное деление». Для этого нажмите кнопку в верхнем ряду кнопок Панели Инструментов с изображением листа бумаги и таблицы, которая расположена пятой с левого края («Открыть таблицу темы»). Выделить поле «Name». Для этого на Панели Инструментов редактирования таблицы выберите кнопку с изображением черной стрелочки, после этого укажите черной стрелочкой на название поля и нажмите левую кнопку манипулятора «мышь». Не закрывайте таблицу, поскольку связать можно только две открытые таблицы. Обратите внимание, на Кнопочной Панели Инструментов стала активной кнопка с изображением двух таблиц со стрелочками, направленными друг на друга, шестая справа в верхнем ряду («Соединить таблицы»). Нажмите её, и отсутствующие в атрибутивной таблице поля будут добавлены из первой таблицы. Таким образом, можно объединить все три интересующие таблицы.

Далее отредактируйте легенду темы «Административное деление». Для создания ряда карт сделайте её копии и добавьте в Вид. Создайте компоновки и сохраните их во внешних файлах.

 

Тема 8. Гриды. Пространственная интерполяция. Изолинии.

Гриды – это прямоугольные матрицы, состоящие из квадратных ячеек, в каждой из которых записано только одно числовое значение, т.е. это разновидность растровых слоёв электронных карт. С их помощью создаются непрерывные поля каких-либо числовых параметров. Грид строится в компьютерной карте определённой проекции и ячейка грида представляет собой квадрат именно на поверхности карты, а не Земли. Ячейка грида занимает определённую область поверхности карты, и значение записанного в ячейке параметра меняется скачком при переходе к соседней ячейке. Однако ячеек много, их количество ограничивается лишь памятью компьютера. Поэтому изменение значений параметра в непрерывном поле получается плавным.

В большинстве случаев гриды применяются для пространственной интерполяции числовых значений. Предположим, необходимо по результатам проведения исследований в ряде точек определить территорию или акваторию, чьё экологическое состояние является неблагополучным. Разумеется, придется интерполировать значения параметров между точками, в которых они определены, и экстраполировать значения на прилегающие к крайним точкам определения параметров участки. Другой случай: моделирование распространения какого-либо вещества в водоёме, атмосфере или почве. В пространственно-неоднородных моделях область моделирования аппроксимируется сеточной областью, в которой пространство разбивается на отдельные ячейки (чаще всего – квадраты), концентрации моделируемых компонент экосистемы рассчитываются в центрах этих ячеек. Перед началом компьютерных расчётов необходимо задать начальные и граничные условия, в частности, значения компонент в узлах сеточной области. Для верификации модели также необходимо сравнение результатов численных экспериментов с данными мониторинга моделируемого природного объекта. Разумеется, мониторинг экосистемы проводится не в узлах сеточной области, а в каких-то других точках. Чтобы получить значения компонент в точках сеточной области, необходима пространственная интерполяция результатов мониторинга и получение значений непрерывного поля в точках с заданными координатами, т.е. узлах сеточной области.

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

При построении грида нужно иметь в виду, что, в отличие от векторных слоёв, он не может быть преобразован при изменении картографической проекции Вида. Поэтому перед созданием грида следует точно определить, в  какой проекции следует его строить. Разумеется, это касается того случая, когда координатная система Вида является географической, и Вы можете изменять параметры проекции и сам тип проекции Вида в окне «Свойства» («Properties») ниспадающего меню «Вид». Например, если планируется определение площадей различных частей грида и их отношений, то следует применять какую-либо равноплощадную проекцию.

Для самой возможности создания гридов, пространственной интерполяции и построения изолиний необходим модуль Spatial Analyst. Этот модуль поставляется отдельно от базового ядра ГИС ArcView 3.2 и должен быть соответственно проинсталлирован отдельно. Однако если он уже проинсталлирован, то его нужно «включить». Для этого в ниспадающем меню «Файл» окна ArcView выбрать опцию «Модули» («Extensions»). На экране появится диалоговое окно «Модули». В окне прокрутки «Доступные модули» нужно найти надпись «Spatial Analyst» и в квадратике слева от неё поставить «птичку» - навести на этот квадратик курсор, при этом он примет форму «птички», нажать левую кнопку манипулятора «мышь», а затем нажимаем кнопку «ОК». После этого все возможности модуля Spatial Analyst в нашем распоряжении.

Грид не может иметь другой формы кроме прямоугольника (в частном случае – квадрата). Однако часто встречаются случаи, когда нам не нужно интерполировать по всему прямоугольнику, охватывающему область точек со значениями определённых данных. Например, у нас имеются данные результатов мониторинга содержания какого-либо загрязняющего вещества в водах Финского залива. Описывающий поле точек (станций отбора проб) прямоугольник неизбежно частично «наедет» на сушу. Естественно, интерполяция данных для участков на суше лишена всякого смысла. Конечно, можно смириться с этим и при визуализации результатов интерполяции просто накрыть сверху ячейки грида векторным полигональным слоем объектов суши. Однако это может исказить результаты статистического анализа: будут учитываться ячейки, находящиеся на суше. Поэтому следует создать тему грид-маски – матрицы с ячейками 2-х типов, показывающими, для каких ячеек следует проводить интерполяцию, а какие можно пропустить. Разумеется, создаваемые затем гриды с результатами интерполяции должны иметь точно такие же пространственные характеристики, как и слой грид–маски. В нашем примере мы хотим провести интерполяцию данных по российской части Финского залива. Поэтому грид-маску мы должны сделать на основании векторного полигонального слоя восточной части Финского залива. Поэтому необходимо создать полигон восточной части Финского залива, пространственно охватывающий все точки мониторинга. Как это сделать - посмотрите указания к заданию № 4.2 данного пособия.

Итак, полигональный слой восточной части Финского залива создан. В данном случаеон будет состоять из одного объекта. Делаем этот слой (тему) активным, в ниспадающем меню «Тема» выбираем опцию «Convert to Grid». Появится диалоговое окно, в котором нужно указать имя и размещение создаваемого грида. Необходимо подчеркнуть, что модуль Spatial Analyst паталогически не выносит русских букв в названиях гридов, папок и поэтому часто бывает лучше согласиться с тем названием и вариантом размещения, которое Вам предложит компьютер. Затем появится диалоговое окно, в котором следует задать параметры создаваемой грид-темы. В окне прокрутки “Output Grid Extent” следует задать «Такой же, как и полигональный слой объектов, внутри которых необходимо провести интерполяцию» (“Same as …”). В нашем примере – это слой восточной части Финского залива. В остальных окнах прокрутки “Output Grid Cell Size” – «Размер ячейки грида», “Number of Rows” – «Число рядов (строк)» и  Number of Columns” – «Число колонок» ГИС предложит Вам свои варианты. Вы можете согласиться, а можете скорректировать, например, уменьшить размер ячеек для увеличения плавности результирующего поля непрерывных значений. Далее появится диалоговое окно с вопросом: «Pick field for cell values», т.е. «Выберите поле для значений в ячейках грида». Напомним, что в грид-маске должны быть ячейки всего двух типов: с числовым значением и «Нет данных». Поэтому в атрибутивной таблице полигонального слоя нужно создать новое числовое поле и во всех записях (строках) поставить число 1, или отредактировать уже существующее числовое поле.

Вспомним методику редактирования таблиц в ArcView 3.2. Для редактирования атрибутивной таблицы следует в Панели инструментов окна проекта нажать кнопку открытия таблиц активных тем. На экране появится таблица атрибутов активной темы. Интерфейс же окна ArcView изменится. На нем появится кнопка «Таблица». Нажмите на нее – появится ниспадающее меню, в котором следует  выбрать опцию «Начать редактирование». Затем активизируем ниспадающее меню «Редактировать». В нем выбираем «Добавить поле». В появившемся диалоговом окне задаем имя поля или соглашаемся с названием, предложенным системой. Тип поля оставляем «Числовое» («Number»), ширина поля по умолчанию стоит 16, можно оставить так, можно шестерку убрать, оставить 1 – больше нам не надо. Нажимаем «ОК» - в открытой таблице появится выделенное новое поле. Поставим в каждой записи в этом поле значение 1. Запись в таблицу возможна при активной кнопке изменения значения ячеек. Это средняя из трех крайних справа в нижнем ряду кнопок Панели инструментов. На ней изображены символ «I» и стрелка. После этого возвращаетесь в ниспадающее меню «Таблица» и выбираете «Прекратить редактирование» и далее – «Сохранить изменения».

Разумеется, все перечисленные действия с таблицей атрибутов полигональной темы следует выполнять до её конвертации в грид-тему. Возвратимся к этому процессу. После того, как Вы объяснили системе, из какого поля ей следует брать значения для ячеек, система задаст вопрос: «Join feature attributes to grid?» – «Присоединить к гриду значения атрибутов объектов векторной темы?» В данном случае не имеет значения, как Вы ответите на этот вопрос. По умолчанию стоит «Нет». Следующий вопрос системы: «Add grid as theme to the View?» – «Добавить грид в качестве темы в данный Вид». Именно это Вам и надо, так что соглашайтесь (по умолчанию стоит «Да»). В результате в Виде появится грид-тема, имеющая ячейки только двух типов: в одних содержатся числовые значения 1, в других – «Данные отсутствуют» («No data»). Теперь активизируйте в окне ArcView ниспадающее меню «Analysis», в нем – «Properties» («Свойства»). Появится диалоговое окно «Analysis Properties: Вид такой-то». В нижней его части находится окно прокрутки «Analysis Mask». По умолчанию там стоит «No Mask Set»: «Маска не задана». Вместо этого выбираете созданную тему грид-маски и нажимаете «ОК». Теперь интерполяция будет производиться в той части карты, которой нужно, т.е. в пределах площадного слоя, выбранного в качестве основы для создания грид-маски. Естественно, если область интерполяции – прямоугольник, то нет никакой потребности в создании грид-маски. Это возможно, например, при интерполяции данных по какому-либо однородному району, не имеющему естественных границ: акватории океана или моря вдали от берегов, центрального участка сухопутной геосистемы. При этом форма области исследования близка к прямоугольнику.

            Теперь можно приступать непосредственно к интерполированию. Создаете ли Вы грид, или векторную тему изолиний, грид создаётся всегда, только во втором случае это происходит неявно для пользователя. Изолинии чаще создаются при подготовке иллюстративного материала, гриды могут использоваться для расчетов площадей зон с различными значениями проинтерполированного параметра. Необходимо подчеркнуть, что гриды «не переносят» изменения проекции Вида, изолинии же являются векторными объектами и, так же как и остальные векторные слои, инвариантны по отношению к картографической проекции электронной карты: созданные с помощью модуля Spatial Analyst изолинии «спокойно переносят» изменения проекции. Разумеется, надо чётко сознавать, что форма изолиний зависит от проекции карты, на которой они были построены.

            Делаем активной тему точек, по значениям в которых необходимо выполнить интерполяцию, затем в окне ArcView делаем активным ниспадающее меню «Surface». В нем есть две опции: «Interpolate Grid» и «Create Contours». При активизации первой запускается процесс явного создания грида, второй – явного создания векторных линейных объектов изолиний. Во втором случае скрытым от пользователя является этап создания грида, поскольку изолинии на самом деле строятся по значениям в ячейках матрицы грида. Внимание! Если в Виде применяется географическая система координат, т.е. координаты объектов и ячеек грида – градусы широты и долготы, а не декартовы координаты картографической проекции, то в ArcView 3.2 невозможно правильно построить изолинии, проходящие через 180-ый меридиан. В этом случае необходимо конвертировать все необходимые слои в проецированные, а затем работать с ними в другом проецированном виде. В этом проецированном Виде (система координат которого – декартовая) следует создать тему грид-маски и выполнять построение грида и изолиний.

            После активизации опции «Interpolate Grid» появится диалоговое окно «Output Grid Specification» – «Специфика грида», в котором следует задать его параметры. В окне прокрутки «Output Grid Extent» – «Размер грида» следует выбрать «Такой же как грид-маска» («Same as название темы грид-маски»). После этого – нажать «ОК». Только такой вариант задания размеров грида обеспечивает необходимое 100%-ое совпадение создаваемого грида с грид-маской. Далее появляется диалоговое окно «Interpolate Surface». В нем в окне прокрутки «Method» необходимо задать метод интерполяции. В ArcView 3.2 их 2. Метод IDW (Inverse Distance Weight) – «Обратно весу расстояния (ОВР)». Он довольно прозрачен. Суть его в следующем: если точка слоя исходных данных пространственно попадает внутрь ячейки создаваемого грида, то этой ячейке присваивается числовое значение точки. Разумеется, точечный объект может иметь много разных числовых значений, содержащихся в разных числовых полях. Грид строится по значению только одного числового поля. Поэтому в окне прокрутки «Z Value Field» необходимо выбрать это поле, по значениям которого будет выполнена интерполяция. Если ячейка пустая, т.е. ни одна точка внутрь неё не попала, то значение в ячейке будет рассчитано по значениям в ближайших точках. Если включен переключатель «Nearest Neighbors» («Самые ближайшие соседи»), то будут использованы значения в N ближайших точках, а сколь далеко они находятся – неважно. Рассчитываются расстояния до всех точек, и из них отбирается N ближайших. Число ближайших соседей задается в окне «No: of Neighbors». Этот вариант слишком формален: ведь между точками с известными значениями параметра могут быть столь большие расстояния, что интерполяция между ними теряет всякий практический смысл.

            Поэтому если в каких-то частях карты расстояния между точками измерений слишком велики, более применим метод фиксированного радиуса. В этом случае задаётся критический радиус от пустой ячейки, внутри которого для расчета значения в ячейке используются все попавшие внутрь образованной этим радиусом окружности точки. Для применения этого варианта следует сделать активным переключатель «Fixed Radius». Вместо окна «No: of Neighbors»  появится окно «Radius». В нем следует задать размер радиуса от центра ячейки, внутри которого будут отбираться точки для расчёта значения в ячейке. Этот радиус задаётся в единицах карты Вида (Map Units). Разумеется, возможен случай, когда внутрь заданного радиуса не попадёт ни одна точка. В этом случае в соответствующих ячейках созданной матрицы будет честно написано «Нет данных».

Естественно, что чем точка ближе к ячейке, тем её влияние на значение в ячейке должно быть больше, чем дальше – тем влияние меньше. В этом и состоит суть метода – интенсивность влияния точек обратно пропорциональна расстоянию до них. Т.е. вес точки определяется обратно пропорционально расстоянию до нее в какой-то степени. Значение степени задаётся в окне «Power». Если задать значение степени, равное 1, то процедура будет близка к линейной интерполяции. Если 2 – то «важность» точек будет обратно пропорциональна квадратам расстояний до них: напрашивается аналогия с законом всемирного тяготения. Если же значение степени задать равным 0, то важность всех ближайших отобранных N точек абсолютно одинакова. При проведении интерполяции по методу ОВР (IDW) мы застрахованы от появления нелепых, не согласующихся со здравым смыслом значений, однако результат – поле распределения непрерывной величины может не быть гладким. Важная особенность метода ОВР (IDW) – значения в ячейках и точках, в них находящихся, абсолютно совпадают. В случае выделяющихся значений, выбросов это приводит к эффекту «бычьего глаза», когда вокруг точки с резко отличающимся от остальных значением в матрице грида формируются зоны ячеек с переходными значениями.

Возможен вопрос: «А как быть, если внутрь ячейки попадает более одной точки?» В этом случае следует уменьшить размеры ячеек так, чтобы они были меньше минимального расстояния между точками и, таким образом, внутрь ячеек везде бы попадало не более одной точки.

Ещё один используемый в методе ОВР (IDW) параметр – «Barriers» (барьеры). По умолчанию в соответствующем окне прокрутки стоит значение «No Barriers» - «Нет барьеров». Барьеры – это непреодолимые препятствия для интерполяции. Точки с одной стороны барьера не могут влиять на значения ячеек с другой стороны барьера. Пример: имеются данные по Карибскому морю и прилегающей к Панамскому перешейку части Тихого океана. Естественно, что при интерполяции данные, относящиеся к Тихому океану, не могут влиять на значения в Карибском море и наоборот. Аналогичная ситуация с Андаманским морем и Сиамским заливом, разделёнными перешейком Кра и Малайским полуостровом. Другой пример: при интерполяции данных по содержанию в почве, например, азота, следует разграничить пашню и лес. В качестве барьеров используется слой объекты типа Polyline. В случае, если барьер необходим, нужно его создать в качестве нового слоя или импортировать в Вид слой линейных объектов – барьеров («заборов», через которые не может перескочить процесс интерполяции), а затем указать его в диалоговом окне «Interpolate Surface» в качестве барьера.

Другой применяемый метод интерполяции – сплайновый (Spline). Это - интерполяция полиномами вида ax + bx2 +cx3 + … +  dxn. Отличительная черта этого метода - максимальная гладкость полученного поля. Но за это приходится платить: во-первых, теперь совершенно не обязательно, чтобы значение ячейки совпадало со значением попавшей внутрь ячейки точки. Можно сказать, что здесь «правда искусства важнее правды жизни».  Во-вторых, требование максимальной гладкости поля рассчитанных значений может привести к появлению в матрице ячеек с нелепыми, выходящими за рамки допустимых значений числами. Сплайновая интерполяция хороша для создания непрерывных полей плавно изменяющихся параметров, таких, например, как высота точек равнинного рельефа или атмосферное давление, содержание веществ в воде или воздухе для не подверженных сильному антропогенному воздействию районов. Она не подходит в тех случаях, когда на коротких расстояниях могут встречаться резкие изменения значений интерполируемой величины, поскольку результаты в ячейках матрицы могут существенно превзойти возможные значения (т.е. возможны паразитные выбросы, обусловленные расчётной схемой). Тип сплайновой интерполяции может быть «Regularized (Упорядоченный)» или «Tension (Натяжение)». Если выбран этот тип сплайновой интерполяции, то параметры математической функции подгоняются таким образом, чтобы результирующее поле (матрица) ближе всего подходило к определенному числу значений в соседних точках. Число этих точек задаётся в окне «No: of Points». «Regularized (Упорядоченный)» метод порождает сглаженную поверхность. Если выбран этот метод сплайновой интерполяции, то параметр веса, задаваемый в окне «Weight» определяет вес третьей производной от поверхности в выражении минимизации её кривизны. Метод «Tension» «настраивает» жесткость результирующей поверхности в зависимости от характера изменений интерполируемой величины. Здесь параметр «Weight» определяет вес «растяжения»  поверхности. Созданный грид автоматически именуется «Surface from», далее идёт имя слоя, по данным которого он был рассчитан.

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

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

Если необходимо построить изолинии, то в качестве источника данных могут выступать как слой точек, атрибутивная таблица которого содержит числовые поля, так и уже созданный по этому слою точек грид. Ход построения и результат будут одинаковы. В начале построения изолиний, так же, как и при создании гридов, пользователь должен указать пространственные характеристики создаваемого неявно грида, поле исходных данных, метод интерполяции и его параметры. Затем на экране появляется диалоговое окно «Contour Parameters», в котором пользователь должен задать числовой интервал («Contour interval») между значениями изолиниями и базовое значение («Base contour»), от которого будет вестись расчёт значений изолиний. Например, если при построении изотерм в качестве интервала задать значение 2, а в качестве базового значения – 0, то построенные изотермы будут представлять собой линии следующих температур: 0, 2, 4, 6 и т.д. Если же в качестве интервала задать 3, а базового значения – 1, то изотермы будут соответствовать температурам 1, 4, 7, 10, 13 и т.д. Пользователь не обязан задавать значения этих параметров, он может согласиться с предложенными компьютером значениями. Базовое значение не обязательно должно входить в интервал наблюдённых значений и соответствовать минимальному значению: компьютер рассчитывает значения изолиний и выше, и ниже базового. Созданный слой типа Polyline имеет название «Contours of» + название точечного слоя, содержащего данные, по которым построены изолинии. Данные созданного слоя изолиний хранятся в шейпфайле с названием ctourN, где N – порядковый номер. Таблица атрибутов созданного слоя содержит два поля семантических характеристик: «Id» - порядковый номер линейного объекта и «Contour», содержащее значение изолинии. Поэтому для подписывания изолиний следует использовать значения из этого поля.

 

Тема 9. Запросы к гридам. Опции модуля Spatial Analyst.

Модуль Spatial Analyst имеет много инструментов анализа. Эти инструменты могут вызываться при помощи опций ниспадающих меню Analysis и Surface. Некоторые инструменты можно применять только к векторным слоям точечных объектов, другие – только к слоям гридов, третьи – и к тем, и к другим слоям.

Зачастую перед построением грида к точечному слою – источнику данных полезно применить опцию «Find Distance» ниспадающего меню Analysis. Эта опция строит новый грид, в ячейках которого записано расстояние до ближайшего объекта активной векторной темы (слоя), при этом активная тема должна быть только одна! Если в векторной теме есть выбранные объекты, то учитываются только они, если нет ни одного выбранного, то все объекты. Пользователю предлагается установить характеристики создаваемого грида, либо согласиться с предложенными модулем в диалоговом окне «Output Grid Specification». Рассчитывается так называемое Евклидово расстояние (r), т.е. обыкновенное расстояние, рассчитываемое на плоскости карты по формуле:

,

где ∆x и ∆y – разницы координат объекта и ячейки в системе карты (Вида). Для ячеек, пространственно совпадающих с векторными объектами, значение расстояния задаётся равным нулю. Слой созданного грида автоматически получает название «Distance to» + название векторного слоя, расстояния до объектов были рассчитаны. Сам же грид (файловая структура на диске) получает название типа «distN», где N – порядковый номер грида данной категории.

Анализ созданного грида может помочь при выборе метода интерполяции. Для этого, разумеется, необходимо знать особенности пространственной динамики интерполируемой величины и среды, характеристикой которой она является. Если, например, речь идёт об интерполировании параметров водной среды, то необходимо знать пространственные характеристики ячеистой структуры водного объекта, воздушной среды – пространственные размеры атмосферных образований, влияющих на данную интерполируемую характеристику. Если же необходимо проинтерполировать данные, полученные в результате исследований лесного массива, то здесь нужно учитывать биоценакулярную структуру леса и т.п. В случае, если расстояния от ячеек до точек известных значений меньше размеров естественных пространственных «квантов» среды, то возможна интерполяция по методу заданного количества ближайших соседей. В противном случае более оправдано применение метода фиксированного радиуса, причем радиус не должен превышать размера естественных однородных образований среды.

Разумеется, с помощью данной опции можно выполнять и различные задачи пространственного анализа. Например, при оценке привлекательности загородной местности для дачного строительства рассчитать расстояния до уже существующих автомобильных дорог.

Опция «Find Distance» рассчитывает расстояния от точек грида до ближайших объектов активной векторной темы (слоя), но не указывает идентификаторы этих объектов. Это делает другая опция – «Assign Proximity». Ячейки создаваемого ею грида содержит информацию об идентификаторах ближайших векторных объектов активной темы. Если в этой теме есть выбранные объекты, то будут учитываться только они. Расстояния рассчитываются так же, как и в опции «Find Distance». При вызове опции также сначала необходимо определить пространственные характеристики создаваемого грида, затем на экране появляется диалоговое окно «Proximity Field», в списке прокрутки которого представлен список имён семантических полей векторной темы. Необходимо выбрать то поле, значения которого будут присоединены к ячейкам грида. Это поле должно содержать уникальное для каждого объекта векторного поля значение. Выбор поля, естественно, осуществляется наведением на его имя курсора и нажатием левой кнопки манипулятора «мышь». Затем – нажать кнопку «ОК»: модуль Spatial Analyst создаёт новый грид и добавляет его в Вид в качестве слоя с именем «Proximity to» + название векторного слоя, ближайшие объекты которого выявлялись. Название грида – «proxN», где N – порядковый номер грида этого типа. Для созданного слоя грида появляется возможность просмотра и экспорта во внешний файл атрибутивной таблицы, а также преобразования слоя в полигональный шейпфайл при помощи соответствующей опции ниспадающего меню «Тема». Атрибутивная таблица в общем случае содержит три поля: «Value», «Count», «S_Value». Первые два она содержит всегда. Если выбранное поле векторного слоя числовое, то его значения для ближайших объектов векторного слоя будут записаны в качестве значений ячеек нового грида и они же будут представлены в качестве значений поля «Value» атрибутивной таблицы грида. Если же было выбрано символьное поле, то в ячейках грида будут записаны порядковые номера и они же будут представлены в атрибутивной таблице в поле «Value». В поле «S_Value» этой таблицы будут представлены значения этого символьного поля для ближайших объектов векторного слоя. В обоих случаях поле «Count» представляет количество ячеек грида, для которых данный векторный объект является ближайшим.

Гриды данного типа также можно преобразовывать в полигональные шепфайлы, объекты которых образуются путём пространственного соединения групп соседних ячеек грида с одинаковыми значениями. Эти полигоны фактически представляют собой полигонам Тиссена в том случае, если исходный векторный слой является точечным. Они позволяют проводить анализ близости и представляют собой области вокруг точечных объектов (ядер), внутри которых расстояние до ядра ближе, чем до всех других точек. Атрибутивная таблица созданного из грида полигонального слоя имеет два семантические поля: «Id» и «Gridcode». Первое поле содержит порядковый номер полигона, значение второго соответствует значениям образовавших полигон ячеек грида. Если уникальным для каждого точечного объекта является значение символьного поля, то в этом случае для созданного слоя полигонов Тиссена следует с помощью Мастера пространственных операций выполнить присоединение данных этого символьного поля точечного слоя по местоположению.

Создание полигонов Тиссена часто бывает необходимым при исследованиях экологии популяций: определение зон, центрами которых являются муравейники, птичьи гнёзда и т.п. Создание гридов этого типа в комплекте с гридами расстояний также может быть весьма полезным при планировании природно-хозяйственных мероприятий. Например, выявить зоны на расстоянии не далее заданного от определённых объектов. Или определить, какие участки леса следует отнести к зонам ответственности различных пожарных отрядов, какие участки газопровода – разным станциям техобслуживания и т.п. Для совместного анализа двух и более гридов применяются инструменты «Map Query» и «Map Calculator», инструкции по работе с которыми будут даны в этом разделе ниже.

Опция «Calculate density» создаёт слой грида по данным векторной точечной темы (слоя). Ячейки грида содержат значения плотности, представляющие собой количество объектов, случаев и т.п. на единицу площади или просто плотность какой-либо величины. В качестве исходных векторных слоёв могут использоваться как слои объектов типа Point, так и Multipoint, когда объект состоит из нескольких точек.

При вызове этой опции, как и в предыдущих случаях, пользователю предлагается установить пространственные характеристики выходного грида. Затем на экране появляется диалоговое окно «Calculate density». В верхней его части расположен список прокрутки «Population Field». В нем содержится список числовых полей таблицы исходного точечного слоя, а также установленное по умолчанию значение «Отсутствует». Если выбрано определённое числовое поле, то значения для расчёта плотности берутся из этого поля. В случае объектов типа Multipoint каждой отдельной точке подобного объекта присваивается значение выбранного числового атрибута. Например, объект Multipoint состоит из 5 точек. Значение выбранного поля – 100. Для расчета плотности будет взято пять точек, значение в каждой – 100. Если же выбрано «отсутствие поля», то каждая точка имеет значение 1. В блоке «Search radius» задаётся радиус вокруг ячеек, внутри которого берутся точки для расчёта плотности. Если единицы расстояний отличаются от единиц карты данного Вида, то радиус задаётся в единицах расстояний. По умолчанию значение радиуса задаётся по минимальному из измерений, т.е. ширине или высоте экстента исходной точечной темы, делённому на 30.

Далее пользователь в  списке прокрутки «Density type» выбирает метод расчёта плотности. Их всего два: «Simple» и «Kernel». При выборе первого плотность рассчитывается путём суммирования значений выбранного в списке «Population Field» поля исходного точечного слоя всех точек, попавших внутрь круга заданного радиуса и деления полученной суммы на площадь этого круга, измеренную в единицах, выбранных при помощи списка прокрутки «Area Units». Метод «Kernel» рассчитывает плотность сходным образом, за исключением того, что значения из поля, выбранного в списке «Population Field» распространяются вокруг каждой точки. В результате грид получается более гладким.

В списке прокрутки «Area Units» выбираются единицы площади, которые будут использованы для расчёта плотности. Если единицы карты не известны (возможный случай при работе в Виде, координаты объектов которого – декартовы) то плотность будет рассчитываться в этих единицах. Если единицы карты известны, то возможен выбор следующих единиц площади: акров, гектаров, квадратных миль, километров, метров, ярдов, дюймов, сантиметров и миллиметров. Результирующий слой грида имеет название «Density from» + название точечной темы исходных данных.

Важное замечание. Вызов любой опции представляет собой запуск системной программы на языке Avenue. В системной программе данной опции «Spatial.Density» есть небольшая неточность, которая не позволяет этой опции быть работоспособной. Для устранения этого недостатка сделайте в окне проекта активным тип документов «Тексты программ», затем нажмите кнопку «Новый». Появится пустое окно нового редактора скрипта. На Панели инструментов нажмите кнопку с изображением руки, держащей листок с надписями – она вставляет в открытый редактор скрипта исходный текст системной программы. Появится диалоговое окно «Диспетчер программы». В списке прокрутки найдите программу «Spatial.Density», наведите на неё курсор, нажмите левую кнопку манипулятора «мышь» и нажмите кнопку «ОК»: исходный текст программы будет вставлен в открытый редактор скрипта. Наведите курсор в самое начало текста программы и нажмите левую клавишу манипулятора «мышь». Затем в ниспадающем меню «Редактировать» окна ArcView вызовите опцию «Найти», в текстовом блоке появившегося диалогового окна напишите «theRamp» и нажмите кнопку «ОК». Опция выделит эту переменную чёрным прямоугольником. Поставьте в начало строки с нею символ «′» - так Вы превратите строку в комментарий. Затем в меню «Редактировать» вызовите опцию «Найти следующее» и в начало этой строки также поставьте символ «′». Всего эта переменная встречается в программе дважды. После этого нажмите кнопку «Компиляция» на Панели инструментов – на ней изображена чёрная «птичка». После этого на соседней кнопке «Выполнить» изображение бегуна станет чёрным – программа готова к работе, она запускается нажатием этой кнопки при открытых редакторе скрипта и Виде с активной точечной темой, по значениям которой планируется расчёт плотности.

Расчёты плотности могут быть необходимы при исследованиях экологии популяций. Например, при учёте плотности животных и растений. Так, во время экспедиции НЭС «Академик Федоров» в 2005 г, когда это судно, не являющееся ледоколом, впервые в мировой практике достигло Северного полюса в свободном плавании, проходящие на нём практику магистранты программы «Помор» выполняли учёт поголовья белых медведей. Они фиксировали всех замеченных с мостика судна животных, записывали время, направление, расстояние до них, число особей в группе, если их было более одного. Таким образом, на карту можно нанести точки, в которых были усмотрены белые медведи. Далее расчёт их плотности не представляется сложным.

Опция «Cell Statistics» работоспособна лишь в том случае, когда в Виде являются активными более одной темы гридов. Эта опция полезна для расчётов осреднённого грида по набору гридов однородных значений. Например, выполнено несколько площадных съёмок содержания в среде каких-либо компонент, но точки различных съёмок не совпадают. Если бы точки совпадали, то можно было бы рассчитать средние значения для каждой точки по каждой компоненте, а уже по ним построить грид. Но у нас точки не совпадают. Выход: рассчитать грид по данным каждой съёмки и уже к этим гридам применить данную опцию. Она рассчитывает грид статистических значений для набора активных слоёв гридов. Возможен расчёт следующих характеристик для каждой пространственной ячейки: моды (Majority), среднего значения (Mean), максимальных (Maximum) и минимальных (Minimum) величин, значений минимальной вероятности (Minority), размаха (Range), среднего квадратичного отклонения (Standard Deviation), суммы (Sum), числа уникальных значений (# of Unique Values).

Опция «Summarize Zones» рассчитывает статистические характеристики по группам ячеек слоя грида, пространственно находящимся внутри зон другого векторного полигонального слоя или грида. Число зон не может превышать 25. Любая зона состоит из набора объектов, имеющих одинаковое значение атрибута или набора одинаковых ячеек грида. Опция создаёт таблицу и диаграмму. Таблица содержит все статистические характеристики, рассчитанные для каждой зоны. Диаграмма представляет на экране одну из статистических характеристик, представленных в созданной таблице. Статистические характеристики для вещественных значений включают площадь ячеек (area), минимум (minimum), максимум (maximum), размах (range), среднее (mean), среднее квадратичное отклонение (standard deviation), сумму (sum). Для целых значений к вышеперечисленным характеристикам добавляются число разных значений (variety), мода – наиболее часто встречающееся значение (majority), наименее часто встречающееся значение (minority), и медиана (median). Если для образования зон используется полигональный слой и в нём есть выбранные объекты, то используются только они.

В том случае, когда активной является слой грида с наборами ячеек одинаковых значений, после вызова данной опции появляется диалоговое окно «Summarize Zones», в котором в списке прокрутки, содержащем остальные грид-темы Вида, пользователю предлагается выбрать слой, содержащий данные для расчёта статистических характеристик. Если же активным является полигональный слой, то сначала в диалоговом окне появляется список полей данного слоя. Пользователь должен выбрать поле, значения которого определяют принадлежность полигонов к определённым зонам, а уже после этого пользователь выбирает слой грида, значения ячеек которого должны быть сгруппированы по зонам и подвергнуты статистической обработке. Затем создаётся таблица результатов, именуемая «Stats of» + имя обработанной грид-темы, а на экране снова появляется диалоговое окно, в котором пользователь должен выбрать, для какой статистической характеристики будет построена диаграмма.

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

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

Опция «Histogram by Zone» создаёт гистограммы распределения значений ячеек одного грида, пространственно попадающих внутрь зон, которые образованы другим слоем: гридом или полигональным.  Отдельная гистограмма строится для каждого уникального класса зонального слоя. Если в нём есть выбранные объекты, то гистограммы строятся только по данным ячеек, попадающих внутрь этих объектов, в противном случае используются все объекты зонального слоя.

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

Если активной является векторная тема (слой), то при вызове данной опции на экране появляется диалоговое окно «Histogram With Zones», в котором представлен список полей активной темы. Пользователь должен выбрать поля, в соответствии с одинаковыми значениями которого будут формироваться зоны. Если же активным является слой грида с ограниченным числом значений ячеек, то в диалоговом окне в качестве полей таблицы грида выступают значения ячеек («Value») и количество ячеек с данным значением («Count»). Разумеется, следует выбрать («Value», поскольку именно по своим значениям ячейки объединяются в зоны. Пространственно совпадающие с ними ячейки анализируемого грида объединяются в классы, для каждого из которых строятся гистограммы частотного распределения. Затем в диалоговом окне выводится список гридов Вида, пользователь должен выбрать грид, значения ячеек которого будут анализироваться. Если зон слишком много, то в окне построения гистограмм появится надпись, указывающая на эту причину невозможности создания гистограмм. Созданная гистограмма именуется «Histogram of» + название анализируемой грид-темы + «Within Zones of» + название слоя, образующего зоны. Необходимо подчеркнуть, что по оси «Y» на гистограммах откладываются не частоты, а количества ячеек, попавших в интервалы значений. Поэтому построенные гистограммы будут информативны только в том случае, если количество ячеек в каждой зоне приблизительно одинаково.

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

Опция «Tabulate Areas» создаёт таблицу, в которой записываются площади зон одного слоя внутри зон другого слоя. Например, с её помощью можно рассчитать суммарную площадь различных типов землепользования для каждого района, если имеется слой объектов – различных типов землепользования и слой административных единиц. Эта опция, естественно, осуществляет оверлейную операцию с двумя слоями. Возможные типы слоёв: векторные точечные, линейные, полигональные и гриды. Если используются точечные или линейные слои, то суммируются площади объектов, внутрь которых попадают точки или которые пересекаются линиями. Зоны образуются либо векторными объектами, имеющими одинаковое значение какого-нибудь атрибута, либо ячейками грида, также имеющими одинаковое значение. Площади рассчитываются в единицах карты.

После запуска данной опции на экране появляется диалоговое окно «Tabulate Areas», в котором имеется 4 списка прокрутки. В списке «Row Theme» («Слой строк») следует выбрать слой, определяющий строки результирующей таблицы, каждой уникальной зоне отводится одна строка. В списке «Row Field» нужно выбрать поле, по значениям которого объекты будут объединяться в зоны. Если в списке «Row Theme» выбрана грид-тема, то в списке «Row Field» следует выбрать «Value». Строка таблицы содержит площади каждой зоны «Слоя столбцов» («Column Theme»), в пределах данной зоны «Слоя строк». В списке «Слой столбцов» («Column Theme») пользователь определяет слой Вида, определяющий столбцы таблицы результатов. Здесь пользователь также должен определить в списке прокрутки «Column Field» название поля, по одинаковым значениям которого создаются зоны в «Слое столбцов». Специфика этих зон отражается в качестве названий столбцов результирующей таблицы. Если в качестве «Слоя столбцов» используется грид, то списке «Column Field» диалогового окна также следует выбрать «Value». После определения параметров следует нажать кнопку «ОК» диалогового окна. Если хотя бы один из выбранных слоев является гридом, то после этого выполняются расчёты и создаётся таблица с именем «Areas of» + название «Слоя столбцов» («Column Theme») + «Tabulated For Each in» + название «Слоя строк» («Row Theme»). Если же оба выбранных с помощью диалогового окна слоя являются векторными, то возникает необходимость задания характеристик временного рабочего грида. Это осуществляется с помощью диалогового окна «Temporary Grid Specification». Экстент этого грида не принципиален, но лучше его устанавливать в соответствии с экстентом одного из слоёв, являющихся источниками данных для создаваемой таблицы.

Данная опция полезна для выполнения картометрических операций. Разумеется, здесь рассчитывается суммарная площадь ячеек грида, поэтому формально точность меньше, чем при использовании картометрических функций, применяемых к векторным объектам. Однако в геоэкологических исследованиях полигональные объекты часто являются результатом генерализации, интерполяции и экстраполяции данных, к тому же следует помнить о континуальности ландшафтов, наличии экотонов. Всё вышеперечисленное объективно не позволяет рассчитывать площадь многих реально существующих зон с такой же степенью точности, как, например, площади водоёмов. Кроме того, пользователь имеет возможность уменьшения размеров ячеек и увеличения их количества, что приведёт к повышению точности расчётов.

Можно привести следующий пример использования данной опции. Предположим, мы хотим выяснить, существуют ли различия ландшафтных характеристик различных водосборных бассейнов. Для этого следует создать полигональные слои водосборных бассейнов и ландшафтных таксонов. Затем запустить на исполнение данную опцию, задав, например, слой ландшафтов в качестве «Слоя строк», а водосборов – «Слоя столбцов». Далее по результатам созданной таблицы определить долю, занятую различными ландшафтными таксонами в каждом водосборе и проанализировать различия, например, с помощью кластерного анализа.

С помощью опции «Map Query» задаётся запрос, адресованный одному или нескольким пространственно совпадающим гридам одного Вида. По результатам выполнения этого запроса строится новый грид.  Пространственное положение нового грида и размеры его ячеек совпадают с тем гридом (гридами), в результате запроса к которому данный новый грид был создан. В нём создаются ячейки только двух типов: со значениями 0 и 1. Там, где условия запроса в исследуемом гриде выполнены,  в ячейке нового грида ставится значение 1, где нет – 0. Разумеется, за границей области выполнения анализа, заданной грид-маской, в ячейках нового грида не будут записываться никакие данные, а будет помещено значение «Нет данных», как и в исходном гриде.

Если в процессе анализа неоднократно вызывать опцию Map Query, то появляющееся диалоговое окно будет иметь название «Map Query N», где N – порядковый номер запроса в данном сеансе работы, а получаемые в результате выполнения запросов новые результирующие гриды будут также именоваться «Map Query N». На диске создаются папки с названиями «queryN», содержащие файловые структуры гридов. Чтобы потом не запутаться, лучше сразу переименовывать слои таким образом, чтобы их названия включали в себя имена гридов, которым был адресованы запросы. Необходимо подчеркнуть, что запрос может включать в комбинацию условий, обращённых более чем к одному гриду.

В диалоговом окне «Map Query N» в окне прокрутки «Layers» приводится список всех гридов данного Вида, в окне прокрутки «Sample Values» – все числовые значения ячеек выбранного грида. Между этими окнами прокрутки расположены кнопки логических операций сравнения: «равно», «не равно», «больше», «меньше», «больше или равно», «меньше или равно»; установки скобок и операндов «и (and)», «или (or)» и «не (not)». В нижней половине диалогового окна находится блок формирования запроса.

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

([Имя грид-темы 1] <= Значение ПДК 1) and ([Имя грид-темы 2] <= Значение ПДК 2) and

and ([Имя грид-темы N] <= Значение ПДК N)

После формирования запроса нажмите на кнопку «Evaluate» диалогового окна «Map Query N» и слой грида с названием «Map Query N» будет построен.

Другой пример: предположим, нам необходимо вычислить объём водоёма по данным измерений глубины водоёма, содержащимся в шейпфайле точечных объектов с названием z1.shp. (В нём должны иметься точки на береговой черте со значением глубины 0). По слою, источником которого служит данный файл, строится грид, получающий название «Surface from z1.shp».

Далее мы будем последовательно выделять ячейки, удовлетворяющие запросам типа: hi< значение глубины в ячейке z hi+1. Пример запроса: ([Surface from z1.shp]>2) and ([Surface from z1.shp]<=3), т.е. выделяются только те ячейки, имеющие значения глубины больше 2 м и меньше или равные 3 м. После того, как запрос создан и отредактирован, следует нажать кнопку «Evaluate» (Вычисление) в самом низу диалогового окна. В результате выполнения запроса создается грид-тема результата. Поскольку здесь всего два тип числовых ячеек, то мы можем посмотреть таблицу грид-темы. Мы увидим маленькую табличку из двух строк с двумя полями Value и Count. В поле Value содержатся значения числовых ячеек грида (для результатов работы Map Query это всегда будут 0 и 1), а в поле Count – количество соответствующих ячеек. Предположим, имеется 1822 ячейки со значением 1, т.е. 1822 столба воды высотой от 2 до 3-х м. Площадь основания столба нам известна – это площадь одной ячейки. Если размер ячейки 4х4 м, то это 16 м2. Следовательно, объем водоема между изобатами 2 и 3м (между дном и поверхностью) составит 16х2.5х1822 = 72880 м3.

Грид-темы Map Query N можно конвертировать в полигональные объекты при помощи опции «Преобразовать в шейп-файл» ниспадающего меню «Тема». В атрибутивной таблице результирующего слоя имеется поле Gridcode со значениями 1 для объектов, созданных из ячеек с этим значением, т.е. объекты со значениями в поле Gridcode, равными 1 соответствуют областям с положительным результатом запроса. Можно создавать сечения водоема по различным глубинам (предположим, через 1 м): z>=n, z>=n-1, z>=n-2 и т.д. Площади полученных полигональных объектов можно определить программным способом или так, как это описано в теме 2, затем по формуле усеченных конусов рассчитать объём водоема, его частей в зависимости от глубины и построить батиметрическую кривую зависимости объема или площади сечения водного тела от глубины.

Опция «Map Calculator» применяется для расчета интегральных (комплексных) показателей, если исходные данные измерены в несовпадающих между собой точках. Пример – ИЗВ (Индекс загрязнения воды). Он рассчитывается по 6 показателям. Допустим, точки, в которых был измерен первый параметр, пространственно не совпадают с точками, в которых был измерен второй параметр и т.д. В этом случае создаём 6 грид-тем, разумеется, полностью между собой совпадающих пространственно. Затем применяем опцию «Map Calculator», которая создает результирующую грид-тему с именем «Map Calculation N» по результатам расчетов. В нижней части диалогового окна «Map Calculation N» в окне прокрутки запроса создается запрос, представляющий собой формулу, по которой в соответствии со значениями в исходных грид-темах рассчитываются значения в создаваемой грид-теме. Также эта опция может применяться для создания изображений в искусственных цветах.

Опция «Neighborhood Statistics» анализирует точки векторного слоя (типа Point или Multipoint) или ячейки грида. В обоих случаях происходит создание нового грида путём расчёта какой-либо статистической характеристики для совокупности соседних ячеек исходного (пространственного «окна осреднения»), только в случае слоя точек этот грид создаётся по данным, содержащимся в каком-либо числовом поле таблицы атрибутов этого слоя. Это пространственное окно может иметь форму прямоугольника («Restangle»), круга («Circle»), кольца («Dough Nut»), сектора («Wedge»). Центр ячейки рассчитываемого грида является центром прямоугольника, круга, кольца, вершиной сектора, служащих пространственными окнами. Ячейка исходного грида считается попавшей в пространственное окно, если в него попадает её центр. По значениям попавших внутрь окна ячеек исходного грида могут быть рассчитаны следующие характеристики: минимальное (minimum) и максимальное значения (maximum), среднее значение (mean), медиана (median), сумма значений ячеек (sum), размах значений (range), среднее квадратичное отклонение (standard deviation), наиболее (мода - majority) и наименее (minority) часто встречающиеся значения, число различных значений (variety). Одна из этих характеристик записывается в качестве значения ячейки нового грида. Если записывается среднее значение, то эта операция является сглаживанием пространственного поля.

В случае обработки уже существующего грида (его слой является активной темой Вида) размеры строящегося грида будут совпадать с размерами исходного. После запуска данной опции на экране появляется диалоговое окно «Neighborhood Statistics». В его верхней части в списке прокрутки «Statistic» пользователь должен выбрать рассчитываемую статистическую характеристику (по умолчанию стоит среднее – Mean). Ниже расположено окно прокрутки «Neighborhood», с помощью которого пользователь выбирает форму окна. Форма по умолчанию – прямоугольник («Restangle»). В этом случае пользователь должен задать в расположенных ниже блоках Width (ширина) и Height (высота) соответствующие параметры пространственного окна. По умолчанию окно – квадрат со стороной в 3 ячейки. Если выбранная форма окна круг («Circle»), то пользователь задаёт один параметр – длину радиуса круга (Radius). Значение по умолчанию – 5 ячеек. Если же форма окна – кольцо («Dough Nut»), то необходимо задать два радиуса: внутренний (Inner) и внешний (Outer). Размер внутреннего радиуса по умолчанию 3 ячейки, внешнего – 6. В случае использования в качестве пространственного окна сектора пользователь определяет 3 параметра: длину радиуса, начальный (Start Angle) и (End Angle) конечный дирекционные углы сектора относительно оси Y в градусах. Длина радиуса по умолчанию – 5 ячеек, начального дирекционного угла – 0, конечного – 180.

Внизу диалогового окна расположена группа из двух переключателей Units: «Distance» и «Cell». Если выбран «Distance», то размеры пространственного окна задаются в единицах расстояний, а если они не определены, то единицах карты Вида. В противном случае параметры окна задаются в ячейках грида. По умолчанию выбран выключатель «Cell».

После определения всех параметров пространственного окна – нажать кнопку «ОК». Будет создан и добавлен в Вид слой грида, именуемый по правилу «Nbr»+название статистической характеристики + «of» + название исходного слоя.

В случае, когда исходным служит векторный точечный или многоточечный слой, сначала после запуска опции на экране появляется диалоговое окно «Output Grid Specification», в котором пользователь должен задать параметры создаваемого грида. Далее появляется диалоговое окно «Neighborhood Statistics». Однако теперь по умолчанию размеры пространственного окна задаются в единицах расстояний Вида, а тип формы окна по умолчанию – круг. В верхней части диалогового окна расположен список прокрутки Field, в котором пользователь должен выбрать поле, содержащее данные для интерполирования. Если исходный слой – многоточечный, то каждой точке объекта присваивается значение атрибута.

Количество уникальных значений ячеек в созданных гридах очень велико. При помощи Редактора Легенды пользователь может представить на экране ячейки, относящиеся к различным градациям значений. Относящиеся к одной градации значений ячейки будут визуализированы при помощи одного символа, однако сам исходный грид останется без изменений. Опция «Reclassify…» ниспадающего меню Analysis создаёт новый грид, матрица которого пространственно совпадает с матрицей исходного грида – активного слоя Вида. Необходимо отметить, что эта опция работоспособна только в том случае, когда активной темой (слоем) Вида является грид, и только один грид: при выделении нескольких грид-тем в качестве активных опция «Reclassify…» не работает. В ячейках созданного при помощи этой опции грида записываются номера градаций, к которым принадлежали соответствующие им пространственно ячейки исходного грида. При активизации опции «Reclassify…» на экране появляется диалоговое окно «Reclassify values». В верхней его части расположен список прокрутки «Classification field», состоящий всего из одного элемента – «Value», что естественно, поскольку в ячейках исходного грида записано только по одному числовому значению. Нажатие кнопки «Classify…» вызывает диалоговое окно «Classification», идентичное окну «Классифицировать» Редактора легенды. С помощью этого диалогового окна пользователь выбирает тип расчёта границ интервалов значений: либо равные интервалы (Equal interval), либо интервалы, кратные величине среднего квадратичного отклонения (Standard Deviation). При выборе первого метода устанавливается число градаций в списке прокрутки «Number of classes», второго – в списке прокрутки «Break Classes At» устанавливается ширина градаций, равная: либо величине среднего квадратичного отклонения, либо его половине, либо четверти. В списке прокрутки «Round values at» устанавливается точность округления значений.

Ниже кнопки «Classify…» в диалоговом окне «Reclassify values» расположено поле прокрутки с таблицей, состоящей из двух столбцов: «Old Values» и «New Value». В первом столбце определены нижняя и верхняя границы каждого интервала (градации), во втором – номер интервала, который будет записан в результате работы опции «Reclassify…» в качестве значений создаваемого грида. Так же, как и при работе в Редакторе легенды, пользователь может задавать границы градаций непосредственно в столбце «Old Values», интервалы могут быть различной ширины. Важно при этом не создать «зазоров» между градациями. Пользователь может редактировать и значения столбца «New Value», но они могут быть только числовыми. В таблицу можно добавлять новые строки с помощью кнопки диалогового окна, на которой изображён символ «+», и удалять выделенные строки с помощью кнопки с изображением символа «×». Для выделения строки следует навести на неё курсор и нажать левую клавишу манипулятора «мышь». С помощью кнопки «Save» можно сохранить классификацию грида во внешнем текстовом файле с расширением «avc». По умолчанию название файла – «reclasN», где N – порядковый номер. Разумеется, пользователь может назвать файл классификации грида по своему усмотрению. Естественно, возможна и противоположная операция – загрузка внешнего файла классификации грида с помощью кнопки «Load». Эта возможность весьма полезна при обработке большого количества однотипных гридов: например, распространения какого-либо загрязняющего вещества в пределах одной и той же территории или акватории по данным различных сроков мониторинга.

После настройки всех параметров классификации следует нажать кнопку «ОК» - Spatial Analyst создаст новый грид классификации, который будет добавлен в Вид качестве нового слоя. В отличие от исходного грида для этого слоя возможен просмотр атрибутивной таблицы, которая содержит два поля: «Value» и «Count». Поле «Value» содержит перечень значений ячеек грида, т.е. номера градаций (классов), «Count» - число ячеек с таким значением. Зная размер ячейки грида, теперь можно подсчитать, например, площадь с превышением ПДК по какой-либо характеристике.

Другое важное отличие созданного грида от исходного – его можно преобразовывать в шейпфайл с помощью соответствующей опции ниспадающего меню «Тема». Атрибутивная таблица созданного шейпфайла будет иметь два семантические поля: «Id» и «Gridcode». Первое содержит порядковый номер полигона, второе – значение образовавших его ячеек, т.е. в данном случае – номер класса ячеек. Поэтому с помощью средств, рассмотренных в теме 2 можно создать в данной таблице новое символьное поле, в котором разъяснить смысл данного класса, например класс загрязнения – «умеренное» и т.п. Также становится возможным проведение картометрических операций с созданными полигональными объектами, что даёт новые возможности по сравнению с общим подсчётом числа ячеек, относящихся к разным градациям, поскольку ячейки одного класса могут образовать более одного полигона. Часто необходимо оценить размеры каждого полигона и провести статистический анализ: например, определить характеристики площади зон загрязнения.

Опция «Derive Slope» ниспадающего меню «Surface» обрабатывает гриды или слои TINTriangulated Irregular Network»). Второй вариант возможен только в случае инсталляции модуля 3D Analyst. Эта опция рассчитывает максимальные градиенты и записывает их во вновь создаваемый грид. Если обрабатывается грид, то для каждой его ячейки (кроме граничных) рассчитываются 8 градиентов изменения значений по отношению к восьми соседним ячейкам и выбирается максимальный. Создаваемый грид имеет такие же пространственные характеристики, как и исходный. В ячейки нового грида записываются значения градиента, рассчитанные для совпадающих пространственно ячеек старого грида. Опция предназначена в первую очередь для анализа рельефа, она воспринимает значения ячеек грида как высотные отметки, поэтому градиент рассматривается как наклон и измеряется в десятичных градусах. Поэтому при анализе пространственных полей, не являющихся рельефом, придётся перевести результаты из градусов в радианы – результат численно будет являться градиентом, представленным в размерности изменение параметра на единицу размерности карты. Пересчёт легко выполнить при помощи опции Map Calculator. Вспомним, что 1 градус равен 0.0174533 радиан. Созданный грид автоматически получает название «Slope of» + название исходного слоя. Если грид рассчитывается для слоя TIN, то сначала пользователь обязан задать в диалоге пространственные характеристики создаваемого грида. В качестве значений его ячеек берутся характеристики тех треугольников, внутрь которых падают центры ячеек.

Опция «Derive Aspect» также предназначена для анализа рельефа и работает с гридами или слоями TIN. Она определяет направление наибольшего уклона из данной ячейки грида. Поскольку опция анализирует значения восьми соседних ячеек, то всего возможных направлений 8. В создаваемый грид записывается направление в градусах, а в легенде слоя этого грида приводятся названия направлений и диапазоны дирекционных углов, им соответствующие, например: восток (east - 67.5 - 112.5). Также возможно значение «-1»: плоскость («flat»), когда ячейка находится на плоскости или в «яме» и из неё нет стока. Эта опция может в принципе использоваться для грубого нахождения линий стока и выделения водосборных бассейнов, хотя для этого существуют специализированные модули. Создаваемый слой грида автоматически именуется «Aspect of» + название слоя грида, по данным которого он построен.

Инструмент «Compute Hillshade» также предназначен для работы с гридами или слоями TIN, представляющими рельеф. Создаётся грид, который представляет собой как бы трёхмерное изображение рельефа. В его ячейках записываются условные единицы, которые можно рассматривать как продолжительность и интенсивность освещенности условным солнцем, которое пользователь может помещать где угодно по азимуту (azimuth) и высоте над горизонтом в градусах (altitude). Эта опция может помочь представить рельеф более наглядно, но малоприменима в геоэкологических исследованиях. Название созданного слоя грида по умолчанию: «Hillshade of» + название слоя, по данным которого он построен.

Опция «Calculate Viewshed» может использоваться для решения чисто артиллерийской задачи – создания «полей невидимости». Начиная с русско-японской войны воюющие стороны размещали свои артиллерийские батареи скрытно от противника, чтобы вести огонь с закрытых позиций, когда противник не видит батарею, но и с батареи он также не виден. Командир батареи оборудует замаскированный наблюдательный пункт таким образом, чтобы он мог видеть противника и корректирует огонь при помощи радиосвязи или по полевому телефону. Возможное гражданское применение данной опции - определение размещения различных ретрансляторов, объектов, с которых видны другие объекты (например, туристических смотровых площадок) и т.п. Опция работоспособна, если активны два слоя: грида, естественно, представляющего рельеф местности, и векторная точечная или линейная тема. Создаваемый слой грида автоматически получает название «Visibility of» + название активной векторной темы. Созданный грид имеет ячейки со значениями 0 – с них объекты векторной темы не видимы и 1 – видимы. Разумеется, можно рассматривать результаты и с противоположной точки зрения: видимости ячеек с векторных объектов. Эта опция в экологических исследованиях также применима в редких случаях: например, когда необходимо выбрать место для пункта наблюдения за какими-нибудь животными.

 

Задание 9.1.

Работа с восточной частью Финского залива.

1.   Добавить слой станций мониторинга.

2.     Создать таблицу, содержащую данные химического состава вод в соответствии со своим вариантом.

3.     Соединить эти таблицы для возможности визуализации значений.

4.     Проведите интерполяцию данных.

5.     С помощью запроса MapQuery вывделить области, в которых заданные Вам показатели превосходят ПДК.

6.     С помощью запроса MapCalculator создать грид значений ИЗВ.


 

Табл. 9.

Координаты станций.

 

Станция

Широта

Долгота

Станция

Широта

Долгота

1

59,983

30,217

21

60,100

29,733

2

59,967

30,217

22

60,150

29,433

30

59,917

30,267

24

60,033

29,433

6

59,883

30,150

26

59,983

29,617

25

59,883

30,167

19р

60,150

29,933

7

59,967

30,150

20р

60,183

29,717

9

59,933

30,133

1

60,067

29,133

10

59,900

30,083

2

60,083

28,717

11

59,883

30,083

3

60,117

28,067

12

59,983

30,000

4

60,117

27,383

13

59,967

29,983

А

60,433

28,283

39

59,933

29,950

59,867

28,933

14

59,917

29,933

59,867

28,700

42

60,000

29,933

59,833

28,433

15

59,983

29,867

18л

59,700

28,317

16

59,967

29,800

ВС

60,567

28,567

17

59,933

29,783

ПС

60,550

28,633

12р

60,000

30,017

З

60,667

28,650

11р

59,867

30,067

СЗ

60,683

28,683

14р

59,883

29,917

ДЗ

60,767

28,700

17р

59,917

29,783

1

60,733

28,683

5

59,883

30,217

2

60,700

28,733

19

60,117

29,867

60,717

28,733

20

60,150

29,700

 

 

Табл. 10.

ПДК веществ.

Показатель

ПДК

Кислород, мг/л

6.0

Кислород, %

70.0

Фосфор минеральный, мг/л

1.1

Азот нитритный, мг/л

0.02

Азот нитратный, мг/л

9.1

Азот аммонийный, мг/л

0.4

Марганец, мкг/л

50.0

Цинк, мкг/л

50.0

 

Табл. 11.

Концентрации измеряемых веществ на станциях в Финском заливе.

Станция

Кислород, мг/л

Кислород, %

Фосфор минеральный, мкг/л

Марганец, мкг/л

Цинк, мкг/л

Азот нитритный, мкг/л

5

9.61

94.9

12.0

14.0

480.0

12.0

5

9.27

91.8

13.0

13.0

590.0

8.9

7.11

70.2

20.0

30.0

2820.0

4.6

5

9.50

93.8

11.0

12.0

310.0

2.9

 

Табл. 11. Продолжение.

Станция

Кислород, мг/л

Кислород, %

Фосфор минеральный, мкг/л

Марганец, мкг/л

Цинк, мкг/л

Азот нитритный, мкг/л

5

9.78

96.5

14.0

14.0

300.0

3.5

1

9.64

94.7

13.0

13.0

460.0

1.9

2

9.75

95.5

11.0

15.0

460.0

0.9

2

9.62

94.6

12.0

17.0

520.0

1.4

42

8.90

87.7

13.0

17.0

600.0

3.0

42

8.86

87.0

14.0

15.0

630.0

3.5

7

9.50

93.0

11.0

11.0

510.0

1.9

12р

8.92

87.9

11.0

16.0

480.0

2.5

5

9.63

95.6

20.0

24.0

560.0

1.4

5

9.33

92.7

22.0

23.0

560.0

2.9

11

8.65

85.6

32.0

34.0

550.0

8.7

14

6.90

68.3

95.0

99.0

680.0

3.3

14

6.11

60.1

76.0

79.0

670.0

2.4

30

9.62

95.5

19.0

21.0

560.0

3.8

30

9.56

94.3

20.0

20.0

570.0

4.3

11р

8.16

80.8

27.0

32.0

590.0

6.8

14р

6.14

60.8

95.0

106.0

520.0

19.0

17р

7.83

77.3

53.0

58.0

720.0

20.0

6.33

62.6

29.0

42.0

3400.0

4.8

7.84

87.0

17.0

22.0

3400.0

4.7

5

9.18

104.0

1.8

6.7

120.0

2.8

5

9.25

104.9

1.8

5.5

110.0

1.8

5

7.62

93.2

0.0

0.0

0.0

0.0

5

7.45

90.0

0.0

0.0

0.0

0.0

1

7.79

95.3

13.0

14.0

2920.0

2.1

1

7.76

94.7

8.5

9.0

2920.0

1.2

2

5.13

63.8

62.0

78.0

2820.0

2.4

2

4.86

60.2

17.0

18.0

2820.0

2.8

4.86

61.9

19.0

20.0

3110.0

5.3

4.72

59.7

18.0

20.0

3110.0

5.8

10

7.74

99.1

9.5

13.0

91.0

12.0

10

7.95

101.5

12.0

12.0

85.0

11.0

10

7.87

99.7

6.1

14.0

82.0

5.8

11

7.61

97.3

2.6

13.0

77.0

5.0

30

8.31

104.5

2.2

7.5

60.0

2.1

6

8.01

101.3

7.0

12.0

73.0

3.3

6

7.86

99.4

0.4

10.0

70.0

2.1

11р

7.67

98.1

6.8

12.0

80.0

3.8

1

8.12

107.8

6.6

8.2

250.0

6.2

12

7.81

103.3

5.8

8.0

54.0

2.9

12

7.63

99.7

7.3

10.0

69.0

5.0

13

7.81

101.7

7.6

15.0

58.0

2.4

13

7.76

100.0

5.6

8.4

71.0

1.4

15

7.81

102.5

5.9

7.4

41.0

2.9

15

7.50

96.9

7.2

8.6

55.0

2.4

2

8.07

102.3

3.4

4.2

93.0

2.2

 

Табл. 11. Продолжение.

Станция

Кислород, мг/л

Кислород, %

Фосфор минеральный, мкг/л

Марганец, мкг/л

Цинк, мкг/л

Азот нитритный, мкг/л

2

8.06

101.9

5.7

6.0

91.0

2.4

42

7.60

99.6

14.0

16.0

72.0

8.4

42

7.79

101.3

12.0

13.0

81.0

5.8

7

8.05

102.9

4.8

7.1

92.0

2.4

9

8.15

103.4

4.0

6.1

91.0

3.0

9

8.10

102.5

3.4

3.8

87.0

2.8

19р

7.99

115.0

5.5

6.2

62.0

2.4

20р

8.04

109.7

14.0

15.0

780.0

2.9

12р

9.30

127.9

14.0

17.0

380.0

3.8

17р

7.74

102.9

14.0

15.0

45.0

12.0

5

7.17

94.6

2.8

11.0

170.0

9.6

5

7.31

94.9

2.2

9.9

170.0

8.6

14

7.80

102.6

2.1

4.0

50.0

8.4

14

7.68

100.7

1.6

8.0

48.0

5.8

16

7.75

100.6

3.1

4.1

56.0

8.6

16

7.49

97.1

2.6

11.0

56.0

6.2

16

7.68

99.5

3.0

8.6

60.0

7.4

17

7.90

103.0

1.8

9.1

19.0

9.6

17

7.81

104.0

3.1

10.0

15.0

7.7

39

7.80

100.9

1.8

5.8

91.0

6.0

39

7.64

98.6

2.5

9.2

88.0

6.0

39

7.78

100.0

3.0

8.3

99.0

7.2

14р

7.86

106.1

2.5

6.3

15.0

6.7

5

6.40

95.2

0.0

0.0

0.0

0.0

5

5.84

85.3

0.0

0.0

0.0

0.0

5

6.82

97.4

6.1

6.7

45.0

1.3

5

6.80

97.0

5.5

6.0

35.0

0.5

1

7.34

103.1

5.9

6.1

110.0

3.9

2

7.17

103.5

3.9

4.3

36.0

0.0

2

6.90

98.6

4.0

7.0

32.0

0.0

30

7.02

99.6

8.3

9.4

39.0

2.9

30

7.15

101.7

9.3

9.6

42.0

1.0

11р

5.95

90.8

8.0

12.0

70.0

6.2

14р

8.86

134.0

7.1

11.0

140.0

1.5

10

6.96

98.9

5.6

12.0

71.0

7.4

10

6.86

96.6

3.0

11.0

73.0

5.4

10

6.75

94.8

1.3

14.0

79.0

5.9

11

7.14

107.5

2.0

5.4

55.0

4.4

12

6.60

96.5

4.4

5.6

62.0

2.0

12

6.98

102.0

3.5

7.4

69.0

2.0

13

7.01

99.9

6.6

9.9

96.0

9.3

13

6.98

99.6

7.8

12.0

88.0

9.8

14

7.06

102.5

9.6

16.0

65.0

9.3

25

7.24

102.1

6.6

10.0

70.0

1.5

25

6.89

96.1

6.0

7.4

73.0

2.5

39

6.75

98.1

6.8

14.0

79.0

4.9

 

Табл. 11. Продолжение.

Станция

Кислород, мг/л

Кислород, %

Фосфор минеральный, мкг/л

Марганец, мкг/л

Цинк, мкг/л

Азот нитритный, мкг/л

11

6.74

103.5

9.3

19.0

81.0

3.9

15

6.67

101.1

4.1

8.3

79.0

3.4

15

6.56

99.5

6.0

12.0

89.0

4.9

2

6.76

101.2

4.3

8.1

65.0

4.4

2

6.64

99.4

4.9

9.2

65.0

4.9

25

6.58

98.1

5.7

11.0

75.0

5.6

25

6.68

99.6

5.3

9.6

69.0

5.4

25

6.67

99.4

4.8

8.8

77.0

6.1

30

6.90

102.5

6.7

15.0

68.0

5.0

30

6.69

99.1

5.6

13.0

70.0

4.4

6

6.86

103.8

5.2

11.0

74.0

5.4

6

6.57

98.6

4.3

10.0

72.0

5.4

7

6.96

105.6

3.8

8.0

0.7

4.4

9

7.08

107.3

4.3

11.0

67.0

4.9

9

6.78

101.6

4.9

12.0

71.0

3.9

12

6.72

102.1

9.0

12.0

69.0

8.3

12

6.55

99.4

1.9

6.4

73.0

8.3

13

7.18

108.3

1.7

6.9

55.0

4.4

13

6.87

103.6

4.1

12.0

48.0

4.4

16

6.38

96.5

4.2

11.0

59.0

4.5

16

6.43

97.1

4.4

9.2

55.0

4.8

17

6.67

101.8

5.0

15.0

45.0

2.5

17

6.69

102.1

3.8

12.0

44.0

3.1

42

7.06

107.5

4.0

9.1

20.0

6.9

42

6.92

105.3

2.1

7.4

18.0

5.9

19р

7.84

122.7

1.5

8.8

40.0

0.0

20р

7.05

110.2

1.5

9.3

37.0

0.0

12р

6.94

105.3

4.7

14.0

40.0

2.0

17р

6.57

100.2

3.5

13.0

23.0

1.5

14

6.88

105.4

2.1

6.8

69.0

7.4

14

6.81

103.3

2.4

7.4

67.0

7.2

39

6.50

98.8

2.3

6.0

61.0

6.4

39

6.86

103.6

4.2

6.5

69.0

5.9

39

6.49

98.0

2.0

5.8

67.0

5.9

11р

5.42

87.7

1.8

6.7

130.0

2.0

14р

8.62

139.0

1.3

6.4

160.0

4.9

 

Указания по выполнению задания

Сначала необходимо создать две таблицы: первую с номерами станций и их координатами и вторую с номерами станций и данными мониторинга. Первое поле в первой таблице рекомендуется назвать «Station», оно будет содержать идентификаторы станций и являться ключевым, т.е. служить для соединения таблиц. Следующие два поля будут содержать координаты станций, поэтому их рекомендуется назвать «Latitude» и «Longitude».

Затем создатйте таблицу данных мониторинга. Первое поле «Station» должно содержать идентификаторы станций мониторинга. Остальные шесть полей будут содержать результаты мониторинга. Рассчитайте средние значения показателей для каждой станции мониторинга (см. тему 2) и сохраните результат в новой таблице.

      Добавьте таблицы в проект. Создайте тему событий и добавьте в её данные таблицы средних значений путём соединения таблиц.

Подключить модуль «Spatial Analyst». Для этого в меню «Файл» выберите опциию «Модули», а среди предлагаемых модулей выберите «Spatial Analyst», для чего с помощью манипулятора мыши поставьте галочку в маленьком квадратике рядом с названием модуля и нажмите кнопку «OK». В панели инструментов появятся два новых ниспадающих меню: «Analysis» и «Surface». В качестве источника для создания грид-маски выберите полигональную тему акватории Финский залив, сделайте ее активной, после чего в пункте меню «Тема», выберите опцию «Convert to Grid» («Преобразовать в Грид»). В качестве выходного экстента грида выбирайте такой же, как у преобразуемой темы акватории Финского залива (например, «Same as Zaliv.shp»). В Виде появится новая тема: грид с ячейками двух типов – число или «Данные отсутствуют». Затем необходимо задать этот грид как грид-маску. Для этого в меню «Analysis» выберите опцию «Properties» («Свойства»). В качестве значения параметра «Analysis Mask » выберите название только что созданного грида. После этого можно выполнять интерполяцию. Размер ячеек создаваемых гридов должен совпадать с размером ячеек грид-маски (например, «Same as Nwgrd1»). Для этого сделайте активной тему станций мониторинга, атрибутивная таблица которой содержит результаты мониторинга и в пункте меню «Surface» выберите опцию «Interpolate Grid». В качестве поля числовых значений, которые необходимо интерполировать, (параметр «Z Value Field»), выберите одно из числовых полей, например, содержащее абсолютные концентрации кислорода и нажмите «OK». В Вид будет добавлена новая грид-тема, представляющая собой результат интерполяции. Ячейки матрицы будут закрашены различными оттенками серого цвета в зависимости от значений (чем выше значение, тем светлее). Легенду можно изменить с помощью редактора легенды. Аналогично поступите с остальными пятью показателями и помните – метод и параметры интерполяции должны быть одинаковыми во всех шести случаях.

Теперь необходимо создать отдельные слои, которые показывали бы участки с превышением значений ПДК. Для этого в меню «Analysis» выберите опцию «Map Query». В появившемся диалоговом окне выбрать грид-тему и, зная ПДК, построить логическое условие выбора ячеек. При этом нужно помнить, что для кислорода ПДК - не максимальная концентрация, а минимальная, то есть надо делать запрос на выбор ячеек с меньшими значениями. Затем нажать кнопку «Evaluate». В Вид будет добавлена грид-тема, в которой красным цветом будут выделены области превышения ПДК.

Для создания грида показателя типа ИЗВ в меню «Analysis» выберите опцию «Map Calculator». Для включения значений гридов в расчётное выражение в списке прокрутки «Layers» появившегося диалогового окна «Map Calculation» последовательно выберите гриды, созданные в результате интерполяции. Выбор грида для выполняется двойным щелчком левой клавиши манипулятора мышь при наведенном на название грид-темы курсоре. Выражение в нижней части диалогового окна должно представлять из себя сумму частных от деления значений гридов на соответствующие ПДК. Для кислорода – наоборот: ПДК должно делиться на значения грида концентрации кислорода. После набора выражения нажать кнопку «Evaluate». В результате в Вид будет добавлена новая грид-тема пространственной изменчивости показателя квази-ИЗВ.

 

Тема 10. Маршрутные линейные слои и маршрутные темы событий.

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

В геоинформационных системах для записи линейных объектов применяются ломаные линии, поскольку любую кривую с необходимой степенью точности можно аппроксимировать ломаной линией, состоящей из прямых отрезков. Эти отрезки называются сегментами или Line-объектами. Линейные объекты, состоящие из последовательностей сегментов, относятся к типу Polyline. Для записи координат таких объектов необходимо записать последовательность координат X и Y начал и концов сегментов. Эти точки называются вертексами. Координаты могут быть записаны как в географической, так и в декартовой системе координат, присущей определенной картографической проекции. При визуализации объекта между вертексами строится прямая линия. Поэтому, чтобы картографическая проекция не влияла на расположение линейных объектов, необходимо, чтобы расстояние между вертексами не превышало 15 км. На таком расстоянии участок земной поверхности можно считать плоским и изменение картографической проекции не сможет повлиять на расположение объекта типа Polyline на карте. Сам этот объект имеет единый набор семантических характеристик и именование дуги, вертексы его начала и конца называются узлами. Отдельный объект типа Polyline может не соприкасаться с другими объектами, а может входить в сеть линейных объектов. В классическом случае он соединяется с другими объектами своими узлами. Возможны варианты пересечения объектов или самопересечения, когда объект типа Polyline пересекает сам себя. Точки пересечения также носят названия узлов.

Чтобы появилась возможность «расстановки» на линейном объекте других точечных или линейных объектов в соответствии с расстоянием от них до начала линейного объекта, необходимо изменить его тип с Polyline на PolylineM. В нем для каждого вертекса добавлена третья координата – расстояние до начала линейного объекта. Необходимо подчеркнуть, что это расстояние хранится не в файле семантических характеристик объектов, имеющем расширение dbf, а в файле пространственных данных с расширением shp.

Маршрутные темы событий в качестве источников данных так же, как и координатные темы событий имеют единственную таблицу. Разница заключается в том, что координатная тема событий абсолютно самодостаточна, её можно добавить в пустой Вид (электронную карту) и её точечные объекты разместятся в правильных местах. Маршрутная тема событий может быть добавлена в Вид лишь только в том случае, когда в нём уже есть маршрутная линейная тема. При этом в атрибутивной таблице этой темы обязательно наличие ключевого поля идентификаторов линейных объектов. Ключевое поле соответствующих идентификаторов объектов, естественно, обязано присутствовать и в таблице маршрутной темы событий. Названия ключевых полей могут различаться, но идентификаторы линейных объектов обязаны совпадать на 100%. Это необходимо для того, чтобы ГИС «понимала», на какой линейный объект ей следует помешать объект маршрутной темы событий. Объект на реке Охте должен попадать именно на неё, а не на реку Смоленку.

Таким образом, чтобы какая-либо таблица могла служить источником маршрутной темы событий, она должна иметь три обязательных поля: 1) поле идентификаторов линейных объектов, на которые будут помещаться объекты маршрутной темы событий, оно может быть как символьного, так и числового типа (например, номер автодороги), хотя в общем случае более приемлем символьный тип; 2) поле расстояний от объектов маршрутной темы событий по линейным маршрутным объектам типа PolylineM до их начала – только числовое поле; 3) поле идентификаторов самих объектов маршрутной темы событий – могут быть символьного или числового типа. Естественно, атрибутивная таблица маршрутной линейной темы должна иметь поле идентификаторов своих объектов.

Однако часто пользователь не имеет слоя линейных маршрутных объектов типа PolylineM, у него есть только соответствующий слой маршрутных объектов Polyline. Дело остаётся за малым: превратить его в  слой объектов типа PolylineM. К сожалению, стандартный интерфейс ГИС ArcView 3.2 не имеет инструментов для выполнения данной операции. Остаётся один путь – создать подобный инструмент самому пользователю с помощью встроенного языка создания ГИС-приложений Avenue.

Основы программирования на данном языке более подробно будут изложены в 15-ой теме настоящего учебного пособия. Ниже приводится листинг программы с комментариями, поясняющими суть операций. Признаком комментария служит знак апострофа. Все символы, расположенные в данной строке правее этого знака, воспринимаются как комментарий и не влияют на программу. Чтобы создать этот инструмент, в окне проекта ArcView сделайте активным тип документов «Редактор скриптов»: его символ – листик с синими строчками, ниже в русскоязычной версии написано «ты прогр» (т.е. «тексты программ»), в англоязычной – «Scripts». Нажмите кнопку «Новый»: появится окно редактора программы (скрипта), озаглавленное  «ScriptN», где N – порядковый номер. Запишите расположенный ниже текст программы в это окно. Можно также скопировать его из электронного документа и вставить в окно. Разумеется, неудобно иметь в проекте набор программ, именуемых «ScriptN». Удобнее их переименовывать. Для этого следует закрыть окно редактора скрипта и в окне ArcView активизировать ниспадающее меню «Проект», а внём выбрать опцию «Переименовать активный скрипт». В названии можно использовать как латинские, так и русские буквы. Программа будет храниться в файле данного проекта. Можно также записать программы в файл с расширением «ave». Для этого следует открыть окно данной программы и затем либо использовать ниспадающее меню «Текст программы», в котором выбрать опцию «Сохранить в текстовой файл», либо использовать кнопку «Сохранить в текстовой файл» Панели Инструментов. На этой кнопке имеется изображение листа и пишущего на нём карандаша. На экране появляется диалоговое окно, с помощью которого пользователь устанавливает имя файла и место его размещения. По умолчанию имя файла совпадает с именем программы в проекте, но пользователь волен изменять его как угодно. Следует только иметь в виду, что длина имени файла программы не может превышать 8 символов, и длинное имя при записи файла будет усечено. Необходимо заметить, что для работы в Видах спроецированных и неспроецированных пространственных данных требуются несколько различающиеся программы. Оба варианта программы приведены ниже.

 

Листинг программы конвертации спроецированных полилиний в полилинии с мерой.

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

theProject=av.GetProject

Объект - открытый проект

DocList=theProject.GetDocs 

Список всех документов проекта

NDoc=DocList.Count

Подсчет числа документов в списке

ViewList=List.Make

Создание списка видов проекта (сперва пустого)

for each dok in 0..(NDoc-1)

      tekdoc=DocList.Get(dok)

      tipdoc=tekdoc.GetGUI

      if (tipdoc="View") then

             ViewList.Add(tekdoc)

      end

end

Цикл по всем документам списка

theView=MsgBox.List(ViewList, "", "Выберите Вид линейных объектов")  

Выбор Вида

list_of_themes=theView.getThemes

Получение списка слоёв (тем)

theTheme = MsgBox.List(list_of_themes, "*.shp", "Выберите линейную тему")

Выбор Темы

theFtab = theTheme.GetFtab

Получение атрибутивной таблицы Темы

theShapeField = theFtab.FindField("Shape")

Создание идентификатора поля Shape

LineFieldsList=theFtab.GetFields

Создание списка полей данной Темы

nLineFields=LineFieldsList.Count

Определение числа элементов этого списка  

LineMFieldsList=LineFieldsList.DeepClone

Глубокое клонирование списка полей. Эта операция называется «deep clone» («глубокое клонирование»), потому что не только список, но и каждый элемент списка также клонируется.

LineMFieldsList.Remove(0)

Удаление из списка первого поля – Shape, т.е. старых пространственных объектов. Это поле будет образовано при создании новой FTab, т.е. при создании новых пространственных объектов.

LineMFieldsList.Add

(Field.Make("Dlina",#FIELD_DECIMAL,10,2))

Создание поля для записи длин объектов. Это нужно для контроля при создании таблицы маршрутной темы событий.

AtrNamesList=List.Make

Создание листа имен атрибутивных полей

IdenList=List.Make

Создание листа идентификаторов атрибутивных полей

for each pole in 1..(nLineFields-1)

Цикл по всем полям таблицы, начиная со второго, т.к. первое поля с номером 0 - Shape. Поскольку первый элемент любого списка имеет номер 0, то номер последнего элемента на 1 меньше, чем число элементов списка

      tekpole=LineFieldsList.Get(pole) 

Получение очередного поля из списка

      tekName=tekpole.AsString

Получение имени поля - превращение поля  в объект строкового типа

      AtrNamesList.Add(tekName)

Добавление имени поля в список имен атрибутивных полей

      iden=theFtab.findfield(tekName)

Получение идентификатора текущего поля

      IdenList.Add(iden)

Добавление идентификатора поля в список

end

 

nIdenList=IdenList.Count

Определение числа элементов списка идентификаторов полей

lineMName=MsgBox.Input("*.shp", "Введите имя

нового шейпфайла (темы)", ".shp")

 

Задание в диалоговом окне имени нового шейпфайла - объект строкового типа

lineMName=lineMName.AsFileName

Превращение объекта строкового типа в объект типа имя файла

lineMName.SetExtension("shp")

Установка расширения файла "shp".

lineMFTab = FTab.MakeNew(lineMName, PolylineM)

Создание новой виртуальной таблицы объектов типа PolylineM

nlineMfields=LineMFieldsList.Count

Определение числа полей в списке полей для новой темы                                                                          

lineMFTab.AddFields(LineMFieldsList)

Добавление атрибутивных полей в таблицу lineMFTab

lineMShape = lineMFTab.FindField("Shape")  

Создание идентификатора поля "Shape" таблицы lineMFTab создаваемой темы

IdenLineMList=List.Make 

Создание листа идентификаторов атрибутивных полей для новой темы

for each pole in 0..(nLineMFields-1)

Цикл по всем атрибутивным полям списка полей вновь создаваемой темы типа PolylineM

       teklineMpole=LineMFieldsList.Get(pole)

Получение текущего поля из списка

       teklineMName=teklineMpole.AsString

Его превращение в объект типа "строка"

      lineMiden=lineMFtab.findfield(teklineMName)

Создание идентификатора текущего поля

      IdenLineMList.Add(lineMiden)

Добавление идентификатора поля в список

end

 

nIdenMList=IdenLineMList.Count

Определение числа элементов списка идентификаторов атрибутивных полей создаваемой темы типа PolylineM

List_V_in_rec=List.Make

Создание списка значений атрибутивных полей исходной темы в конкретной записи (строке) таблицы theFtab

Rasst=List.Make

Создание списка расстояний

SpisList=List.Make

Создание списка списков значений полей в записях

SpisRasst=List.Make

Создание списка списков расстояний

Points=List.Make

Создание списка точек

For each rec in theFtab

Цикл по всем записям таблицы объектов исходной линейной темы

   for each atrpole in 0..(nIdenList-1)

Цикл по полям данной записи

       tekiden=IdenList.Get(atrpole)

Получение идентификатора поля

       tekzn = theFtab.returnvalue(tekiden, rec)

Получение значения поля в данной записи

       List_V_in_rec.Add(tekzn)

Добавка значения поля в список значений полей записи

   end

 

   Rasst.Add(0)

Добавка в список расстояний значения 0, т.к. первая точка линии имеет нулевое расстояние до начала линии, т.е. до самой себя

   theShape = theFtab.ReturnValue(theShapeField,rec)

Получение линейного объекта линейной темы

   LinePoints=theShape.AsMultiPoint

Превращение линейного объекта в многоточечный

   Tochki = LinePoints.AsList

Превращение многоточечного объекта в список точек

   ntochek=Tochki.Count

Определение числа точек в списке

   for each uz in 0..(ntochek-1)

Цикл по всем точкам списка

      uzel=Tochki.Get(uz)

Получение точки из списка

      Points.Add(uzel)

Добавление точки в список

   end

 

   Points.RemoveDuplicates

Удаление из списка возможных дубликатов

   chis_t=Points.Count

Определение числа точек в списке

   theTmpDirName=FileName.GetTmpDir

Получение текущего каталога

   litlFN = theTmpDirName.MakeTmp("litl", "shp")

Создание имени временного файла, в который будут записаны Line-объекты из одного объекта исходного слоя (Line-объект - прямая линия между двумя точками)                                       

   litlFTab = FTab.MakeNew(litlFN, PolyLine)

Создание таблицы Line-объектов

   fields = List.Make

Создание списка полей для временной таблицы

   fields.Add(Field.Make("N_otr", #FIELD_SHORT, 4,

   0))

Создание и добавление в список полей поля N_otr. Это поле нужно только для того, чтобы в таблице было хотя бы одно атрибутивное поле.

   litlFTab.AddFields(fields)

Добавка в таблицу полей из списка, т.е. одного поля

   litlshape = litlFTab.FindField("Shape")

Создание идентификатора поля Shape

   otrField  = litlFTab.FindField("N_otr")

Создание идентификатора поля N_otr

   startpoint=Tochki.Get(0)

Создание объекта - начальной точки Line-объекта

   for each t in 1..(chis_t-1)

Цикл по всем точкам списка, начиная со второй

      finishpoint=Points.Get(t)

Создание объекта - конечной точки Line-объекта

      otrezok = Line.Make(startpoint,finishpoint)

Создание Line-объекта

      otrez=otrezok.AsPolyline

Превращение Line-объекта в объект типа Polyline

      rec_otr = litlFTab.AddRecord

Добавление новой записи в таблицу litlFTab

      litlFTab.SetValue(litlShape, rec_otr, otrez)

'Запись в поле Shape виртуальной таблицы litlFTab объекта otrez, т.е. прямой типа Polyline.

      litlFTab.SetValueNumber(otrfield, rec_otr, t)

Запись в поле N_otr номера объекта - прямой линии. Этого можно было бы не делать, но сделано для упрощения отладки программы.

      litlFtab.flush

Запись изменений в таблице litlFtab в файлы её источников

      startpoint=finishpoint

Конечная точка созданного Line-объекта становится начальной точкой следующего Line-объекта

   end

 

   dist=0 

Обнуление переменной, в которой хранится расстояния до начального

   For each litlrec in litlFtab

Цикл по всем записям таблицы litlFtab

      litlShapePr = litlFTab.ReturnValue

      (litlFTab.FindField("Shape"), litlrec)

Получение пространственного   

спроецированного объекта из поля Shape и записи номер litlrec

      litlLength = litlShapePr.ReturnLength    

Определение длины отрезка

      dist=dist+litlLength

Определение расстояния от начала объекта Polyline исходной темы до точки, являющейся концом данного отрезка прямой.

      Rasst.Add(dist)

Добавка расстояния в список

   end

 

   List_V_in_rec.Add(dist)

Добавка в список значений полей в данной записи длины объекта Polyline

   SpisList=SpisList.Add(Points)

Добавка в список списка точек будущей полилинии

   NewPolyline=PolyLine.Make(SpisList)

Создание нового объекта типа Polyline в соответствии со списком списков точечных объектов SpisList.

   NewPolylineM=NewPolyline.AsPolyLineM

Преобразование объекта Polyline в объект PolylineM.

В нем уже есть места для размещения данных о расстояниях от вертексов полилинии (точек концов и начал отрезков прямых) до её начала, однако там пока нет реальных значений расстояний.

   SpisRasst=SpisRasst.Add(Rasst)

Добавка списка расстояний данного объекта Polyline в общий список списков расстояний. В данном случае в списке списоков SpisRasst имеется всего один список расстояний - Rasst. Этого требует грамматика языка Avenue.

   NewPolylineM=NewPolyLineM.SetM(SpisRasst)

Сброс значений мер (расстояний от вертексов объекта PolyLineM до его начала) в сам объект NewPolyLineM.

   rec_lineM=lineMFTab.AddRecord

Добавление в таблицу lineMFTab новой записи

   lineMFtab.SetValue(lineMShape,rec_lineM,

   NewPolylineM)

Запись в поле Shape таблицы lineMFtab объекта NewPolyLineM в данной новой записи rec_lineM.

   For each atrpole in 0..(nIdenMList-1)

Цикл по всем атрибутивным полям таблицы вновь создаваемой темы типы PolyLineM.

      tekpolelinM=LineMFieldsList.Get(atrpole) 

Получение имени текущего поля

      teklineidenM=IdenLineMList.Get(atrpole)  

Получение атрибута поля

      znach=List_V_in_rec.Get(atrpole)

Получение значения данного поля в списке значений атрибутивных полей таблицы theFtab исходной темы типа PolyLine в записи номер rec

      pole_class = tekpolelinM.GetType

Получение типа текущего поля

      if ((Pole_class=#FIELD_BYTE)

      or (Pole_class=#FIELD_DECIMAL)

      or (Pole_class=#FIELD_DOUBLE)

      or (Pole_class=#FIELD_FLOAT)

      or (Pole_class=#FIELD_LONG)

      or (Pole_class=#FIELD_SHORT)) then   

           lineMFTab.SetValueNumber

           (teklineidenM, rec_lineM, znach)

Запись в числовое поле, если тип текущего поля – числовой

      Else

           lineMFTab.SetValue

           (teklineidenM,rec_lineM,znach)   

в любом другом случае запись в нечисловое поле

      end

 

   end

 

   List_V_in_rec.Empty

   Rasst.Empty

   Tochki.Empty

   fields.Empty

   SpisList.Empty

   SpisRasst.Empty

   Points.Empty

Удаление из списка всех элементов

end

 

lineMFtab.Flush

Запись изменений в таблице lineMFtab в файлы её источников

strlineMName = lineMName.AsString

Получение имени файла как строкового объекта

lineMSrcName = SrcName.Make(strlineMName)

Создание объекта типа SrcName. Объекты этого типа

идентифицируют данные, используемые для создания темы в ArcView. SrcName-объект представляет собой 'имя файла с полным путём к нему. Он определяет источник пространственных данных, хранящийся на диске, и поддерживает следующие типы: покрытия, слои библиотеки, шейп-файлы и растровые файлы. Объект SrcName создается из строки, содержащей элементы, идентифицирующие данные

if (lineMSrcName = nil) then

Проверка: а создан ли файл?

   msgbox.Error( "Invalid SrcName", "")

Сообщение, если файл не создан

   exit

Выход из программы

end

 

lineMTheme = Theme.Make(lineMSrcName)

Создание Темы объектов PolyLineM по объекту SrcName

theView.AddTheme(lineMTheme)

Добавка созданной Темы в Вид

lineMTheme.SetVisible(true)

Установка режима видимости новой Темы

theView.Invalidate

Обновление отображения Вида в окне

 

Теперь программу необходимо скомпилировать – перевести в понимаемые компьютером коды. Это можно осуществить двумя способами: 1) при помощи опции «Компилировать» ниспадающего меню «Текст программы» окна ArcView; 2) с помощью кнопки «Компилировать» Панели Инструментов. На кнорке изображен символ «птичка». После компиляции программы её можно запустить на исполнение тремя способами: при открытом окне программы (Редактора скрипта) нажатием  кнопки «Выполнить» Панели Инструментов (на ней изображена фигурка бегуна) или с помощью опции «Выполнить» ниспадающего меню «Текст программы»; при закрытом окне программы с помощью кнопки «Выполнить» окна проекта. При этом данная  программа должна быть выбрана в списке программ проекта. Напоминаем, что приведённая выше программа работает только с линейными слоями Видов, пространственные данные которых записаны в декартовых координатах. Расстояния в созданном слое объектов типа PolylineM будут записаны в единицах декартовых координат, т.е. в тех единицах, в которых записаны координаты X и Y. Например, если декартовы координаты X и Y вертексов линейного объекта записаны в метрах, то и расстояния от них до его начала будут рассчитаны и записаны в метрах.

Формально это программу можно применить и к слою линейных объектов, координаты вертексов которого записаны в десятичных градусах широты и долготы. Только расстояния также будут рассчитаны в десятичных градусах, что может иметь хоть какой-то смысл лишь в приэкваториальной зоне, где длины градусов широты и долготы приблизительно одинаковы. Как же быть? Во-первых, можно преобразовать слой линейных объектов с координатами в географической системе в шейпфайл декартовых координат. Но можно модернизировать программу так, что она сможет преобразовывать линейные объекты, координаты вертексов которых записаны в десятичных градусах широты и долготы, в объекты типа PolylineM, расстояния от вертексов которых до начальных узлов объектов будут записаны в линейных мерах: метрах, километрах и т.п. Для этого следует незначительно изменить текст вышеприведённой программы. Разумеется, исходную программу лучше оставить без изменений, а работать с её копией. Для этого можно создать новый редактор скрипта «ScriptN» и загрузить в него текст программы из текстового файла с расширением «ave». Это можно сделать двумя способами: 1) с помощью опции «Загрузить текстовый файл» ниспадающего меню «Текст программы» окна ArcView; 2) с помощью кнопки «Загрузить текстовый файл» Панели Инструментов. На этой кнопке изображены раскрывающийся лист бумаги и стрелочка. В обоих случаях на экране появляется диалоговое окно «Загрузить текст программы», с помощью которого пользователь выбирает файл программы Avenue. Любые последующие изменения текста в окне Редактора скрипта не влияют на исходный файл. Отредактированный текст программы может быть записан в файл программы Avenue с новым названием.

ГИС должна знать характеристики проекции Вида. Поэтому после оператора выбора Вида проекта theView=MsgBox.List(ViewList, "", "Выберите Вид линейных объектов") следует поставить строку thePrj = theView.GetProjection  'Определение проекции Вида. Одной из характеристик проекции являются «единицы карты», т.е. единицы системы координат электронной карты (Вида). Расчёт расстояний будет производиться именно в этих единицах, поэтому перед запуском модифицированной программы следует решить, в каких единицах будут измеряться  расстояния до начальных узлов линейных объектов, и задать эти единицы в списке прокрутки «Единицы карты» диалогового окна «Свойства Вида».

В представленной выше версии программы расстояния измерялись в тех единицах, в которых записаны координаты объектов. Расчёт расстояний осуществлялся при помощи функции ReturnLength, которая возвращала протяжённость объектов. В новой программе мы тоже будем использовать эту функцию, но применять её будем к спроецированным объектам, хранящимся в памяти компьютера. Для этого перед циклом по записям таблицы litlFtab после оператора обнуления суммы расстояний до вертексов объекта dist=0 необходимо поставить оператор litlShapePr = litlFTab.ReturnValue(litlFTab.FindField("Shape"),0). Этот оператор создаёт новый пространственный объект litlShapePr по данным, содержащимся в поле «Shape» первой записи виртуальной таблицы атрибутов litlFTab. Как читатель, вероятно, помнит, эта таблица создаётся для записи в качестве последовательности отдельных объектов типа Line каждого объекта исходного линейного слоя. Пока что этот объект имеет координаты в географической системе. Далее изменяем цикл по записям таблицы litlFtab:

For each litlrec in litlFtab

Цикл по всем записям таблицы litlFtab

     litlFTab.QueryShape(litlrec, thePrj,

     litlShapePr)

Проецирование объекта litlShapePr в соответствии с данными, находящимися в записи с номером litlrec и характеристиками проекции Вида, записанными в объекте thePrj.

 

     litlLength = litlShapePr.ReturnLength

     dist=dist+litlLength

     Rasst.Add(dist)

end

 

Более текст программы изменений не требует. Данная программа по данным слоя линейных объектов типа Polyline создаёт пространственно с ним совпадающий слой объектов типа PolylineM, расстояния до начальных узлов которых измеряются в единицах карты данного Вида.

Добавление в Вид маршрутной темы событий выполняется следующим образом. Естественно, сначала нужно импортировать в проект или создать в нём самом таблицу объектов этой темы. Затем в ниспадающем меню «Вид» окна ArcView выбрать уже знакомую опцию «Добавить тему Событие». Поскольку в Виде уже есть линейная маршрутная тема объектов типа PolylineM, то в появившемся диалоговом окне «Добавить тему событий» активными являются две кнопки: координатных и маршрутных тем событий. Выбираем правую – маршрутных. На ней изображена линейка и три точки. Внешний вид диалогового окна изменяется. В верхнем списке прокрутки «Тема маршрута» следует выбрать ту маршрутную линейную тему, на объекты которой будут помещаться объекты маршрутной темы событий. В списке прокрутки «Поле маршрута» необходимо выбрать поле линейной маршрутной темы, содержащее идентификаторы объектов. Это поле служит ключевым для связи с таблицей маршрутной темы событий. Ниже расположена группа из двух переключателей: «Точки» и «Линии». Выбор переключателя определяет размерность создаваемых объектов маршрутной темы событий. По умолчанию включён переключатель «Точки». Далее в списке прокрутки «Таблица» следует выбрать таблицу, которая будет служить источником маршрутной темы событий. Затем в списке прокрутки «Поле события» следует выбрать поле таблицы, в котором записаны идентификаторы линейных объектов, на которые будут помещаться объекты этой таблицы. В списке «Поле расположения» следует указать поле таблицы, в котором записаны расстояния от создаваемых пространственных объектов темы событий до начальных узлов линейной маршрутной темы, а в списке «Поле смещения» - расстояние смещения объектов темы событий от объектов линейной маршрутной темы. Положительное значение – смещение вправо, отрицательное – влево. Если объекты маршрутной темы событий – линии, то диалоговое окно «Добавить тему событий» претерпевает небольшое изменение. Вместо списка прокрутки «Поле расположения» в нём появляются два списка: «Из поля» и «В поле». В списке «Из поля» следует установить название поля таблицы темы событий, в котором записаны расстояния от начальных узлов создаваемых линейных объектов темы событий до начальных узлов объектов линейной маршрутной темы. Соответственно в списке «В поле» должны быть записаны расстояния от конечных узлов создаваемых линейных объектов темы событий до начальных узлов объектов линейной маршрутной темы.

 

Задание № 10.1.

Работаем с копией проекта c:\ esri\esridata\russia\Russia.apr.

Построить буферные водоохранные зоны для следующих рек бассейна Балтийского моря: Луга, Суна, Тулема-Йоки, Нева, Великая, Нарва, Плюса, Ловать, Волхов, Сясь, Свирь, Оять, Паша, Чагодоша, Мста, Пола, Водла, Кема, Суда.

Размеры минимальных водоохранных зон приведены в табл. 12.

Табл. 12.

Минимальная ширина водоохраной зоны для участков рек

Минимальная ширина водоохраной зоны, м

Протяжённость реки от истока до

определённого участка, км

50

до 10

100

от 10 до 50

200

от 50 до 100

300

от 100 до 200

400

от 200 до 500

500

более 500

 

Указания по выполнению задания.

Для начала немного теории. Водоохранные зоны - территории, которые примыкают к береговой линии морей, рек, ручьев, каналов, озер, водохранилищ и на которых устанавливается специальный режим осуществления хозяйственной и иной деятельности в целях предотвращения загрязнения, засорения, заиления указанных водных объектов и истощения их вод, а также сохранения среды обитания водных биологических ресурсов и других объектов животного и растительного мира. (ст. 65 Водного кодекса Российской Федерации от 03.06.2006 N 74-ФЗ)

Размеры и границы водоохранной зоны и прибрежных защитных полос, а также режим их использования устанавливаются исходя из физико-географических, почвенных, гидрологических и других условий, определенных нормативными актами водного законодательства, и утверждаются органами исполнительной власти субъектов Российской Федерации по представлению бассейновых и других территориальных органов управления использованием и охраной водного фонда Министерства природных ресурсов Российской Федерации, согласованному со специально уполномоченными государственными органами в области охраны окружающей среды, органами санитарно-эпидемиологического надзора и органами Федеральной пограничной службы Российской Федерации в соответствии с их полномочиями. Ширина водоохранной зоны устанавливается в зависимости от вида и размеров водного объекта. (Экология. Юридический энциклопедический словарь. Под ред. С.А. Боголюбова. М., 2001).

В границах водоохранных зон запрещаются: использование сточных вод для удобрения почв; размещение кладбищ, скотомогильников, мест захоронения отходов производства и потребления, радиоактивных, химических, взрывчатых, токсичных, отравляющих и ядовитых веществ; осуществление авиационных мер по борьбе с вредителями и болезнями растений; движение и стоянка транспортных средств (кроме специальных транспортных средств), за исключением их движения по дорогам и стоянки на дорогах и в специально оборудованных местах, имеющих твердое покрытие. (Водный кодекс Российской Федерации: от 03.07.2006 № 74-ФЗ.-Ст. 65, п. 15 )

     Первое, что Вам предстоит сделать – это откорректировать Вашу тему. Поскольку Вы работаете в бассейне Балтийского моря, остальные части Вам не очень-то и нужны, поэтому их необходимо обрезать, используя модуль «Пространственные операции». Далее необходимо удалить из темы рек, те из них, которые не относятся к Вашему заданию. Когда останутся только необходимые реки, их нужно преобразовать в объекты типа PolylineM из объектов типа Polyline. Для этого воспользуйтесь программой, предложенной выше в теоретической части пособия, но помните, что ее необходимо изменить, поскольку координаты объектов записаны  в десятичных градусах. Таким образом будет создана маршрутная линейная тема.

Далее необходимо создать таблицу – источник маршрутной темы событий с полями: идентификатор реки, расстояние от начала линейного объекта темы событий до истока реки, расстояние от конца линейного объекта темы событий до истока реки, ширина водоохраной зоны. Идентификатором реки может служить ее название. Затем добавляете таблицу в проект.

Для того, чтобы добавить нашу таблицу, как маршрутную тему событий, сначала в ниспадающем меню «Вид» окна ArcView выбрать уже знакомую опцию «Добавить тему Событие». Поскольку в Виде уже есть линейная маршрутная тема объектов типа PolylineM, та, которая получилась преобразованием темы, содержащей линейные объекты – реки, то в появившемся диалоговом окне «Добавить тему событий» активными являются две кнопки: координатных и маршрутных тем событий. Выбираем правую – маршрутных. На ней изображена линейка и три точки. Внешний вид диалогового окна изменяется. В верхнем списке прокрутки «Тема маршрута» следует выбрать ту маршрутную линейную тему, на объекты которой будут помещаться объекты маршрутной темы событий (реки). В списке прокрутки «Поле маршрута» необходимо выбрать поле линейной маршрутной темы, содержащее идентификаторы объектов – названия рек, водоохранные зоны которых мы собираемся строить. Это поле служит ключевым для связи с таблицей маршрутной темы событий. Ниже расположена группа из двух переключателей: «Точки» и «Линии». Выбор переключателя определяет размерность создаваемых объектов маршрутной темы событий. По умолчанию включён переключатель «Точки». Нам нужны «Линии». Далее в списке прокрутки «Таблица» следует выбрать таблицу, которая будет служить источником маршрутной темы событий. Затем в списке прокрутки «Поле события» следует выбрать поле таблицы, в котором записаны идентификаторы линейных объектов, на которые будут помещаться объекты этой таблицы. Т.к. объекты маршрутной темы событий – линии, то диалоговое окно «Добавить тему событий» претерпевает небольшое изменение. Вместо списка прокрутки «Поле расположения» в нём появляются два списка: «Из поля» и «В поле». В списке «Из поля» следует установить название поля таблицы темы событий, в котором записаны расстояния от начал создаваемых линейных объектов темы событий до начала линейной маршрутной темы. Соответственно в списке «В поле» должны быть записаны расстояния от концов создаваемых линейных объектов темы событий до начала линейной маршрутной темы. После создания линейных объектов темы событий создайте полигональный слой буферных водоохранных зоны по полю их ширины.

 

Тема 11. Диаграммы и локализованные диаграммы

Научный работник периодически сталкивается с необходимостью доказательств того, что: 1) проведение исследований по предлагаемому им направлению не просто актуально, а очень необходимо обществу в целом или какой-либо организации; 2) он сам или его коллектив выполнит эти исследования наилучшим образом; 3) результаты исследований имеют явную научную новизну и несомненную практическую ценность; 4) все требования заказчика полностью выполнены. Разумеется, научная ценность требуется лишь в случае фундаментальных исследований, они не обязательны в случае прикладных исследований. Однако в любом случае мало выполнить исследования, необходимо убедить научную общественность и лица, принимающие решения, в результатах исследований и их ценности.

Известно, около 90% информации об окружающем мире человек воспринимает с помощью зрения. Поэтому научные отчёты, статьи, курсовые, выпускные и дипломные работы следует обильно снабжать иллюстративным материалом, поясняющим текст и доказывающим положения работы. Ещё более важно использование иллюстративного материала при проведении докладов на научных конференциях и различных совещаниях, оформлении стендовых докладов.

ArcView 3.2 предоставляет пользователю два мощных инструмента создания диаграмм: Диаграммы и Локализованные диаграммы. Первый позволяет создавать столбиковые и круговые диаграммы как отдельные документы проекта. Они могут внедряться в Компоновки и затем экспортироваться во внешние форматы с последующим импортом в текстовые документы. Локализованные диаграммы размещаются на объектах Вида, что может существенно увеличить информативность карты. Например, по одной из характеристик площадных объектов осуществляется их заливка различными цветами (возможно, с использованием штриховок), а на основании других характеристик строятся локализованные диаграммы, помещаемые на карте поверх объектов. Можно представить регионы на карте различным цветом в зависимости от численности населения, а сверху разместить круговые диаграммы, представляющие социальную, национальную или возрастную структуру. Или цветом площадных объектов представить долю земель сельскохозяйственного назначения, а локализованной диаграммой – структуру сельхозугодий. Также, например, заливкой объектов обозначить степень экологического благополучия, а локализованной диаграммой – выбросы от различных типов промышленных источников. Примеры можно множить до бесконечности.

Диаграмму можно создавать по данным числовых полей как таблиц проекта, так и атрибутивных таблиц векторных слоев его Видов. Диаграммы можно создавать лишь на основании таблиц, имеющихся в списке таблиц проекта. Если в нём нет ни одной таблицы, то опции создания диаграмм не работают. Если необходимо построить диаграмму по данным таблицы из какого-либо внешнего файла поддерживаемого ArcView 3.2 формата (dBASE, INFO или текстового), то эту таблицу следует сначала добавить в проект. Если же предстоит создание диаграммы по данным атрибутов какого-нибудь векторного слоя, то нужно открыть Вид, в котором этот слой находится, сделать сей слой (тему) активным и открыть его таблицу. После этого атрибутивная таблица данного слоя будет добавлена в список таблиц проекта под названием «Атрибуты <название слоя>».

Если теперь сделать активным в окне проекта тип документов «Диаграммы», то кнопка «Новый» станет работоспособной. Нажмите на неё – появится диалоговое окно «Новая диаграмма» со списком прокрутки «Выбрать таблицу», в котором следует выбрать источник данных и нажать кнопку «ОК». На экране появится диалоговое окно «Свойства диаграммы», в котором следует определить ряд параметров. В текстовом блоке правее надписи «Имя» можно задать название диаграммы, причём можно использовать символы русского алфавита. По умолчанию сама ГИС даёт создаваемым диаграммам имена «ChartN», где N – порядковый номер диаграммы в проекте. Текстовой блок правее надписи «Таблица» не может редактироваться пользователем, в нём представлено название файла источника данных. Заметим, что если ранее при выборе источника данных была указана атрибутивная таблица векторного слоя, то в этом текстовом блоке будет указано название конкретного файла, содержащего семантические данные. Ниже расположены два списка прокрутки: «Поля» - слева и «Группы» - справа. В списке «Поля» представлены названия всех числовых полей таблицы. Список «Группы» создаёт сам пользователь, в неё он должен добавить названия всех полей, по значениям которых будет строиться диаграмма. Чтобы добавить название поля в этот список, пользователь должен навести курсор на название интересующего его поля в списке «Поля» и нажать левую клавишу манипулятора «мышь». Название поля будет выделено чёрным цветом. Затем следует нажать кнопку «Добавить» и название данного поля будет внесено в список «Группы». Можно сначала выделить названия всех необходимых полей при нажатой клавише «Shift» клавиатуры, а уже потом нажать кнопку «Добавить». Если название какого-либо поля внесено в этот список по ошибке, то следует выделить его и нажать кнопку «Удалить». Ниже расположен список прокрутки «Надпись по полю», в котором представлены названия всех полей таблицы. По умолчанию здесь стоит значение «<Отсутствует>», т.е. выбирать название не обязательно. Если же название поля будет выбрано, то содержащиеся в этом поле значения будут использоваться в качестве надписей объектов на диаграмме. В расположенном в нижней части диалогового окна текстовом блоке «Комментарии» пользователь может записать пояснения к диаграмме. Нажатие кнопки «ОК» вызывает создание диаграммы.

Однако затем вместо диаграммы в её окне пользователь может увидеть сообщение:  «Слишком много данных. Выберите меньшее число строк». Дело в том, что диаграмма строится по какой-либо совокупности записей и полей таблицы. По умолчанию число записей для диаграммы - 100, если она строится по одному полю, соответственно 50 записей - если по двум  полям, и так далее. В принципе этот предел может быть изменен программно запросом aChartDisplay.SetMaxDataPoints(aNumber). Однако в действительности это редко может понадобиться – диаграмма с большим количеством объектов будет трудна для восприятия.

Необходимо пояснить, что ГИС ArcView 3.2 строит диаграммы, используя серии и группы данных. Серии данных в диаграмме представляют собой набор связанных значений, используемых для сравнения. Они изображаются на диаграмме символами (маркерами), имеющими одинаковый цвет, форму, но могут различаться размерами. Например, в разных полях таблицы представлены данные о среднегодовом содержании загрязняющего вещества в водных объектах за ряд лет. Каждому водоёму отведена одна запись. В этом примере ряд значений для одного и того же водоёма представляет собой серию данных, они изменяются год от года, но на графике показываются одним цветом. Данные по разным водоёмам для одного года образуют группу данных, они представлены на диаграмме разными маркерами и расположены друг под другом на одной вертикальной линии, поскольку у них одно значение аргумента – номер года. По умолчанию данные из записей в таблице рассматриваются, т.е. серией данных является набор значений из нескольких полей одной записи. Например, в таблице представлены данные о среднегодовой концентрации загрязняющего вещества за ряд лет для нескольких объектов. Естественно, каждому объекту отведена одна запись, каждому году – поле. В отдельном поле записано название (идентификатор) объекта. Концентрации одного вещества составят серию данных, они будут изображены одним цветом. Серии данных подписываются в легенде по названию из поля, которое было выбрано в списке прокрутки «Надпись по полю» диалогового окна «Свойства диаграммы». Если же пользователь не задал поля для подписывания данных, то по умолчанию используются номера записей (Record 1, Record 2 и т.д.).

Группа данных в диаграмме представляет собой набор связанных значений, описывающих одинаковую переменную, характеризующую разные объекты. Данные из одного поля таблицы по умолчанию рассматриваются как группа данных. Так, в приведённом примере данные из полей среднегодовых концентраций за отдельные годы составляют различные группы данных. В этом случае на графике рядом будут располагаться так называемые маркеры данных за разные годы для отдельных объектов. Это очень выигрышно, если требуется отразить на одном графике тенденции для целого ряда объектов.

Для столбиковых, площадных и линейных диаграмм группы данных подписываются на оси x по именам соответствующих полей таблицы. В ленточных диаграммах группы данных подписываются у меток по оси y, в круговых диаграммах - это подписи сегментов круга.

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

Чтобы переключить серии данных и группы данных, необходимо навести курсор на кнопку «Серии из записей или полей» и нажать левую кнопку манипулятора «мышь». Эта кнопка расположена на Панели Инструментов левее кнопки с изображением бинокля. На ней изображены две соединённые под прямым углом жирные стрелки, показывающие вверх и вправо. Примечание. Переключение серий и групп данных не оказывает воздействия на точечные диаграммы.

Диаграмма строится только по выбранным записям таблицы или по всем записям, если ни одна запись не выбрана. Таким образом, чтобы иметь возможность создать диаграмму, часто необходимо «ограничить свои аппетиты» и выбрать ряд записей таблицы. Разумеется, можно создать диаграмму, выбрать набор записей таблицы, вставить диаграмму в компоновку и сохранить изображение компоновки во внешнем графическом файле. Затем выбрать новый набор записей таблицы – в диаграмме и компоновке автоматически произойдут изменения, экспортировать новое изображение компоновки во внешний файл и т.д. Однако в таком случае в проекте будет сохранён только самый последний вариант данной диаграммы. Поэтому, вероятно, рациональнее сначала сформировать ряд дочерних таблиц, содержащих различные наборы записей, и затем по данным каждой из них создать диаграмму. В этом случае в проекте будут сохранены все созданные диаграммы.

Пользователю предоставляется возможность построения диаграмм шести типов: площадных (area), ленточных (bar), столбиковых (column), линейных (line), круговых (pie) и точечных (xy scatter charts). Каждый тип диаграммы имеет несколько стилей изображения, таких как встык, составные, пропорциональные диаграммы, а также их варианты -  добавление вспомогательных сеток или отрыв первого сегмента в круговой диаграмме. По умолчанию ГИС создаёт столбиковые диаграммы, однако пользователь имеет возможность изменения стиля на любой из вышеперечисленных типов.

Площадные диаграммы хороши для показа изменений во времени. Для создания этой диаграммы требуется две или более группы данных. Существует три стиля изображения площадной диаграммы:

1) Простая диаграмма, в которой значения одной серии данных располагаются над значениями других серий (значения серий пристыковываются друг к другу). При этом высота графика для каждой группы данных отражает сумму значений группы. Например, мы хотим отразить временную динамику типов использования сельскохозяйственных земель в каком-либо административном образовании за ряд лет, причем в полях таблицы записана суммарная площадь различных типов сельхозугодий, а записи отражают различные годы. В этом случае серии следует создать по полям таблицы. Группы данных – по записям, они будут относиться к отдельным годам. Общая высота диаграммы для группы данных будет отражать суммарную площадь сельскохозяйственных земель в этом году. Фактически такой стиль диаграммы позволяет отразить и количественные изменения, и изменения пропорций.

2) Пропорциональная диаграмма с нормализацией значений: высота графика здесь не меняется и равна 100%. Группы данных показывают, какую долю от общей суммы занимает каждая серия. Такой стиль особенно предпочтителен в том случае, если сумма значений серий не изменяется между группами данных. Например, если необходимо показать изменения в структуре землепользования какой-нибудь административной единицы: ведь общая площадь административного образования не изменяется, меняются пропорции типов её использования.

3) Площадная диаграмма с линиями сетки. Она отличается от простой площадной диаграммы только добавлением линий сетки.

Ленточные и столбиковые (столбчатые) диаграммы (bar and column charts) в качестве маркеров (представлений) данных используют горизонтальные ленты и вертикальные столбики. Относительная длина лент или столбиков отражает величину параметров. С помощью диаграмм этих типов можно показывать как положительные, так и отрицательные значения, например, величины продукции и деструкции экосистемы. На ленточных диаграммах маркеры отрицательных значений располагаются слева от оси y, положительных значений – справа, на столбиковых – ниже и выше оси x. Разумеется, совершенно не обязательно наличие на диаграмме маркеров отрицательных значений. Ленточные диаграммы подходят, например, для отражения половозрастной структуры популяций или групп населения (количество особей женского пола – слева, мужского – справа). Ленточные и столбиковые диаграммы позволяют наиболее наглядно представить количественные характеристики объектов. Существует 6 форматов ленточных и столбчатых диаграмм:

1) Простая диаграмма с маркерами данных одних и тех же серий, изображенных одинаковым цветом. Этот формат подходит, когда существует необходимость наглядно представить каждое из значений.

2) Диаграмма с наложением. Группа данных - один столбик, состоящий из отдельных поставленных друг на друга частей, представляющих разные серии. Высота каждого участка пропорциональна значению представителя серии данных в этой группе, общая высота столбика отражает суммарное значение группы данных. Аналог простой площадной диаграммы, но вместо сплошной полосы маркеров – отдельные столбики маркеров. Этот стиль подходит, когда нужно отразить на диаграмме сумму значений групп данных. Например, общую биомассу бентоса на каждой станции отбора проб и биомассу отдельных групп бентосных организмов.

3) Диаграмма с перекрытием. Схожа с простой диаграммой, только здесь разные маркеры (ленты или столбики) расположены не «встык», а «внахлёстку».

4) Диаграмма со 100% наложением. Аналог пропорциональной диаграммы. Высота всех столбиков одинакова – 100%. Подходит для представления структуры различных объектов, например: долей биомасс различных групп бентосных организмов, растений, типов землепользования и т.п.

5) Диаграмма с линиями сетки. Отличается от простой диаграммы только наличием горизонтальных (для столбиковой) или вертикальных (для ленточной) линий сетки, улучшающих восприятие величин маркеров. 6) Столбчатая диаграмма без промежутков между группами данных. Ленточная диаграмма без пропусков между группами данных. Отличаются от простых диаграмм отсутствием на графике промежутков между группами данных.

Линейные диаграммы (Line charts) хорошо отображают тенденции изменений во времени. Они наглядно иллюстрируют скорость изменений. Линейные диаграммы обычно используются для показа временной динамики значений нескольких наборов данных. Они хорошо подходят для визуализации изменчивости среднегодовых или среднемесячных значений, поскольку на оси X нет возможности отразить различия интервалов времени между датами отбора проб. Здесь серия данных – это какой-либо параметр пространственного объекта, осреднённый по каждому из ряда равных смежных периодов времени (декад, месяцев, лет и т.д.). Также можно использовать линейные диаграммы для отражения пространственной изменчивости на разрезе, если точки отбора проб на нём отстоят друг от друга на одинаковых расстояниях. В этом случае серией данных будет набор значений параметра по ранжированному по расстоянию ряду точек отбора проб.

Возможно представление линейной диаграммы шестью способами:

1) С линиями и точечными маркерами. Здесь сами значения представляются точечными маркерами, которые соединяются между собой прямыми тех же цветов;

2) Только линиями;

3) Только точечными маркерами;

4) Линиями, точечными маркерами и горизонтальными линиями сетки;

5)  Линиями, точечными маркерами, вертикальными и горизонтальными линиями сетки;

6) Так же, как в предыдущем варианте, но с использованием логарифмической шкалы значений y.

Круговые диаграммы (Pie charts) используются для отображения относительной доли параметров, сумма которых составляет 100%. Например, структуры землепользования различных административных единиц, соотношений площадей различных ландшафтов в пределах водосборного бассейна, долей различных источников антропогенного загрязнения каким-либо веществом и т.п. Возможны 4 стиля представления круговой диаграммы:

1) Простая, в которой каждый сегмент изображается своим цветом;

2) С выделением первого сегмента – он отделяется от остальных сегментов и выдвигается из круга;

3) С разделением всех сегментов;

4) С разными размерами нескольких круговых диаграмм - размер каждой пропорционален сумме значений группы данных этой диаграммы. Этот стиль позволяет представить на одном графике как количественные характеристики параметра, так и его структуру. Например, размер диаграммы сделать пропорциональным годовому объёму антропогенных выбросов в атмосферу, а при помощи сегментов отразить доли различных типов источников выбросов. Используемые для построения круговой диаграммы данные не должны содержать отрицательные, нулевые и пустые значения.

Координатные точечные диаграммы, или диаграммы разброса точек (XY scatter charts) показывают взаимосвязь между двумя наборами данных. Этот вид диаграмм удобен для выявления взаимосвязей между параметрами при предварительном анализе данных. Очевидно, что в случае отсутствия взаимосвязи область точек на графике будет иметь форму, близкую к кругу. В случае наличия взаимосвязи точки должны группироваться вдоль осевой линии. По форме области точек пользователь сможет визуально оценить тип взаимосвязи: линейная, экспоненциальная, степенная и т.д.

На точечной диаграмме помещаются точки, координатами которых служат значения двух  связанных серий или групп данных. По умолчанию ГИС ArcView считает первую серию данных координатами точек по оси Х, а вторую – по оси Y. Возможны следующие форматы точечных диаграмм:

1) только с точечными символами;

2) с точечными символами, вертикальными и горизонтальными линиями сетки;

3) с точечными символами, логарифмической осью x и линиями сетки;

4) точечными символами, логарифмической осью y и линиями сетки;

5) с точечными символами, логарифмическими осями x и y и линиями сетки.

Для построения точечной диаграммы требуются две серии данных. Опция выбора точечных диаграмм недоступна, если выбрано менее или более двух серий данных. Источниками серий данных служат два поля таблицы. На диаграмме представляются только пары данных из двух выбранных полей таблицы, использовать в качестве источников серий данных значения из записей таблицы невозможно. Поэтому пункты меню и кнопка «Серии из записей/полей» недоступны для точечных диаграмм.

Изменение стиля диаграммы при её открытом окне возможно двумя способами:

1) с помощью ниспадающего меню «Галерея» окна ArcView путём выбора соответствующей опции;

2) активизацией кнопки выбора стиля диаграммы в верхнем ряду Панели Инструментов. Это шесть кнопок, начиная с третьей с левого края. В обоих случаях на экране появляется диалоговое окно, озаглавленное «Галерея» + тип диаграммы. В этом окне пользователь имеет возможность выбора одного из форматов данного типа диаграммы.

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

Созданные в ГИС ArcView 3.2 диаграммы имеют много сходства с диаграммами, созданными в Microsoft Excel, однако имеются существенные дополнительные возможности, связанные с тем, что источником данных диаграммы является таблица. Так, активизация кнопки «Идентификация» (на ней изображён символ «i» - это первая слева кнопка в нижнем ряду Панели Инструментов), позволяет получать информацию о значениях всех полей записи, значение одного из полей которой служит источником данного маркера. Для этого следует навести курсор на интересующий маркер и нажать левую клавишу манипулятора «мышь». На экране появится диалоговое окно «Информация об объекте».

Для каждого выбранного в таблице (и, естественно, в Виде, если это таблица атрибутов слоя) объекта существует один маркер данных на диаграмме. ГИС ArcView 3.2 предоставляет пользователю возможность стирания маркеров данных на диаграмме, чем пользователь отменяет выбор соответствующих объектов в таблице. Для этого следует активизировать кнопку «Стереть» (вторая слева в нижнем ряду), навести на маркер, который нужно стереть и нажать левую клавишу манипулятора «мышь». Маркер исчезнет. Так можно стирать маркеры по одному. Кроме того, имеется возможность стирания сразу нескольких маркеров, если тип диаграммы - точечная. Следует нажать третью слева кнопку в нижнем ряду – «Стереть полигоном». Затем наведите курсор туда, где расположен первый из удаляемых маркеров и нажмите левую клавишу манипулятора «мышь» - это будет первая точка полигона, предназначенного для стирания попавших внутрь маркеров. Далее передвигайте курсор, щелкая в тех местах, где Вы хотите расположить вершины полигона. Продолжайте передвигать курсор и щелкать до тех пор, пока все маркеры данных, которые вы хотите стереть, не попадут внутрь полигона. Для окончания рисования полигона дважды щелкните на последней точке. Будут стёрты все маркеры данных, которые попали внутрь и на края полигона.

После того, как диаграмма создана, остаётся отредактировать её надписи, оси и т.п. Можно изменять внешний вид диаграммы и подписи различными способами. С помощью опций ниспадающего меню «Диаграмма» окна ArcView можно прятать или, наоборот, показывать на диаграмме заголовок (название), легенду, оси. Используя инструмент «Свойства элементов диаграммы», вызываемый при помощи второй справа кнопки в нижнем ряду кнопок Панели Инструментов (на ней изображены гистограмма и ладонь с указательным пальцем), можно редактировать элементы диаграммы. Для этого необходимо нажать на эту кнопку, затем навести курсор на редактируемый элемент диаграммы: заголовок, ось, легенду и нажать левую клавишу манипулятора «мышь». Появится соответствующее диалоговое окно: «Свойства заголовка диаграммы», «Свойства оси диаграммы», «Свойства легенды диаграммы», в котором производятся необходимые изменения. Вы можете изменять заголовок, подписи меток по оси X, подписи в легенде диаграммы.

Можно размещать заголовок диаграммы и легенду в любом месте в диаграмме (справа или слева, сверху, снизу или в центре). Можно разместить ось X либо снизу, либо сверху диаграммы, а ось Y - либо справа, либо слева. Перемещение заголовка диаграммы или её легенды также выполняется инструментом «Свойства элементов диаграммы». Следует навести курсор на заголовок диаграммы или легенду и нажать на левую клавишу манипулятора «мышь», чтобы открыть соответствующее диалоговое окно «Свойства заголовка диаграммы» или «Свойства легенды диаграммы». В этом диалоговом окне будет находиться изображение диаграммы и текущее положение редактируемого элемента диаграммы. Просто наведите в этом диалоговом  окне курсор на новое положение элемента (сверху, снизу, слева, справа или в центре) и нажмите левую клавишу манипулятора «мышь», чтобы переместить легенду или заголовок, а затем – кнопку «OK». Элемент на диаграмме будет перемещён. Положения сбоку, сверху и снизу являются фиксированными. Но размещение элемента в центре позволяет перемещать его в любое место на диаграмме. После того, как Вы нажмёте кнопку «OK», элемент появится в верхнем левом углу окна диаграммы. Остаётся навести на него курсор, нажать левую клавишу манипулятора «мышь», и, не отпуская её, перетащить элемент в нужное место на диаграмме.

Чтобы переместить ось координат, также используется инструмент «Свойства элементов диаграммы». После его активизации наведите курсор на редактируемую ось и нажмите левую клавишу манипулятора «мышь». Будет открыто диалоговое окно «Свойства оси диаграммы». В нём следует на изображении диаграммы под заголовком «Положение оси» навести курсор на противоположную существующему положению оси сторону и нажать левую клавишу манипулятора «мышь», после этого – на кнопку «ОК». Ориентация маркеров данных, меток на оси и подписи оси изменится.

С помощью инструмента «Изменить цвета диаграммы» (первая справа кнопка в нижнем ряду Панели Инструментов, на ней изображена кисть) можно менять цвет маркеров. При активизации этой кнопки на экране появляется диалоговое окно установки параметров изображения маркеров. По умолчанию активной является опция «Палитра штриховок» (первая слева кнопка диалогового окна), с помощью которой устанавливается стиль заливки площадных объектов электронной карты. Возможны сплошная заливка или какой-нибудь вариант штриховки. Для диаграмм возможна только сплошная заливка. С помощью второй справа кнопки «Палитра цветов» диалогового окна с изображением кисти и спектра пользователь редактирует цвета маркеров и подписей в легенде. После активизации этой кнопки название диалогового окна изменяется на «Палитра цветов». Для изменения цвета маркера следует выбрать в списке прокрутки «Цвет» вариант «Передний план». После этого выбрать в расположенном ниже списке образцов цвета подходящий образец, навести на него курсор  и нажать левую клавишу манипулятора «мышь». Затем уже в диаграмме следует навести курсор на маркер и нажать левую клавишу манипулятора «мышь». Все маркеры данной серии приобретут выбранный цвет и тип заливки, этот же цвет приобретет символ серии данных в легенде диаграммы.

После того, как диаграмма приобрела завершённый вид, возникает вопрос: «Как её внедрить в текстовой документ?» Сделать это можно с помощью компоновок. На компоновку можно поместить изображения как нескольких документов проекта, так и одного. Для диаграмм важно помнить, что в компоновку можно помещать изображения только открытых диаграмм. В противном случае в компоновке будет «красоваться» прямоугольник серого цвета. Для импорта диаграммы в компоновку необходимо сделать активным компоновки активным типом документов проекта. Можно добавлять диаграмму как в уже существующую компоновку, так и в новую. В последнем случае нужно нажать кнопку «Новый». На экране появится окно новой компоновки с именем «LayoutN», где «N» - её номер. Если же необходимо вставить изображение диаграммы в уже существующую компоновку, то следует выделить её в списке компоновок проекта и нажать кнопку «Открыть». В обоих случаях на экране должно быть открытое окно компоновки. Далее следует активизировать ниспадающее меню Рамок (крайняя справа кнопка в нижнем ряду Панели Инструментов, если включён Конструктор Легенды, то вторая справа), навести курсор на нижний правый угол этой кнопки и нажать левую клавишу манипулятора «мышь». На экране появится вертикальный ряд кнопок. Активизируйте третью снизу – Рамку диаграммы. Теперь наведите курсор на изображение компоновки, нажмите левую клавишу манипулятора «мышь» и, не отпуская клавишу, выделите на компоновке прямоугольник – место для диаграммы. Отпустите левую клавишу манипулятора «мышь» - на экране появится диалоговое окно «Свойства рамки Chart».

В верхней части этого окна расположен список прокрутки «Chart» - в нём пользователь обязан выбрать имя добавляемой диаграммы. Ниже расположен список прокрутки «Показать», где есть два варианта выбора: «В активном состоянии» (по умолчанию) и «Всегда». Опция «Всегда» не корректно работает с рамками диаграмм. Если выбрана эта опция, то изменения, внесенные в таблицу или документы диаграммы, не всегда отражаются в соответствующей ей рамке. Вместо этой опции следует использовать опцию отображения «В активном состоянии» - в этом случае изменения в диаграмме будут автоматически отражаться в рамке диаграммы на компоновке. Третий список прокрутки диалогового окна – «Качество», также осуществляется двумя способами: «Высокое качество» (по умолчанию) и «Низкое качество». Низкое качество дает самую быструю перерисовку изображения. При этом в рамке выводится темный прямоугольник, содержащий имя диаграммы. Высокое качество выводит качественное графическое изображение, но снижает скорость перерисовки. После того, как все параметры установлены, остаётся нажать кнопку «ОК». На компоновке появляется рамка диаграммы с соответствующим изображением. При нажатой крайней слева кнопке в нижнем ряду Панели Инструментов (на ней изображена жирная чёрная стрелка) имеется возможность перемещения и изменения размеров рамки диаграммы, как, впрочем, и любых других объектов компоновки.

Когда редактирование компоновки завершено, для её экспорта в файлы внешних форматов следует активизировать опцию «Экспорт» ниспадающего меню «Файл» окна ArcView. В появившемся диалоговом окне «Экспортировать» остаётся только выбрать тип, место размещения и задать название создаваемого файла. Наиболее используемыми форматами данных являются Placeable WMF и JPEG, которые затем могут быть вставлены в качестве рисунков в текстовые файлы Microsoft Word.

 Локализованные диаграммы – это просто один из способов представления объектов векторных слоёв электронной карты (Вида). Этот способ устанавливается с помощью Редактора Легенды. Вспомним, что вызов диалогового окна «Редактор легенды» может быть осуществлён двумя способами: навести курсор на обозначение векторного слоя в списке слоёв (легенде) Вида или с помощью опции «Редактировать легенду» ниспадающего меню «Тема» окна ArcView. В обоих случаях на экране появляется диалоговое окно «Редактор легенды», в котором в списке прокрутки «Тип легенды» следует выбрать вариант «Локализованная диаграмма». В списке «Поля» в левой части диалогового окна нужно выбрать названия полей, данные из которых будут использоваться при построении диаграмм (по диаграмме на каждый объект слоя или, если в слое есть выбранные объекты, на каждый объект из выбранных). При выборе полей полезной может быть кнопка «Статистика», позволяющая посмотреть статистические характеристики значений полей атрибутивной таблицы слоя. Значения данного поля можно нормализовать по значениям какого-либо другого поля при помощи списка прокрутки «Нормализовать по:». По умолчанию стоит вариант «Отсутствует», т.е. нормализация не производится. Выбранные поля нужно внести в список прокрутки, расположенный в правой части диалогового окна и состоящий из двух столбцов: «Символы» и «Поля». Добавление выбранного поля из левого списка в правый выполняется нажатием кнопки «Добавить» (навести курсор на кнопку и нажать левую клавишу манипулятора «мышь»). Можно добавлять поля по очереди, а можно сразу выбрать все необходимые поля при нажатой клавише «Shift» клавиатуры, а уже затем нажать кнопку «Добавить». В правом списке появится список выбранных полей и образцы применяемых для их отображения на диаграммах цветов. Символы можно редактировать. Для этого следует навести курсор на символ и дважды нажать левую клавишу манипулятора «мышь». Появится диалоговое окно выбора палитр, в котором следует сделать активной вторую справа кнопку «Палитра цветов» и выбрать цвет в появившемся списке прокрутки.

Можно создавать локализованные диаграммы только двух типов: столбиковые и круговые. По умолчанию выбран тип круговых. Переключение типов осуществляется с помощью группы переключателей «Тип диаграммы». Кнопкой «Символ фона» вызывается диалоговое окно выбора палитр, с помощью которых выбирается символ отображения на карте самих векторных объектов. Если это полигональные объекты, то с этим символом заливки на карте будут отмечены все объекты слоя, а сверху будут помещены созданные локализованные диаграммы. Разумеется, такой общий для всех объектов слоя символ фона мало информативен. Поэтому лучше символ фона задать прозрачным и представить данные двумя слоями: нижележащим с использованием площадной заливки (тип легенды «Цветовая шкала» или «Уникальное значение») и вышележащим с типом легенды «Локализованная диаграмма». В этом случае площадная заливка будет представлять значения  одного поля таблицы атрибутов слоя, а локализованная диаграмма – значения других полей. Вспомним, как сделать копию темы (слоя) без создания копий файлов её источников. Для этого следует выбрать в ниспадающем меню «Редактировать» окна ArcView опцию «Копировать темы», навести на неё курсор и нажать левую клавишу манипулятора «мышь». Затем – выбрать в этом же меню опцию «Вставить» и выполнить аналогичные действия. Сверху списка тем Вида появится копия темы с прежним названием и легендой. Для расположенной выше копии темы следует применить тип легенды «Локализованная диаграмма». Когда все параметры легенды в диалоговом окне «Редактор легенды» установлены, следует нажать кнопку «Применить». Слой будет отображён на электронной карте в соответствии с разработанной легендой.

В отличие от диаграмм локализованные диаграммы не являются отдельным типом документов ArcView 3.2, а представляют собой форму представления векторного слоя Вида. Поэтому во внешние графические файлы они могут сохраняться только в составе всего изображения Вида. Изображение открытого Вида можно экспортировать с помощью опции «Экспорт» ниспадающего меню «Файл» или вставить Вид в качестве объекта в Компоновку и экспортировать уже её изображение. Последний вариант предпочтительней, так как компоновки могут содержать легенды, координатные сетки, масштабные линейки и т.д.

Задание № 11.1.

Работаем с копией проекта карты США, который располагается по адресу C:\ESRI\ESRIDATA\usa.apr.

1.                         Создать диаграмму, отражающую изменение численности лиц, не состоящих в браке от штата к штату.

2.                         Локализованной диаграммой показать соотношение возрастных групп населения по отдельным штатам.

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

4.                         Локализованной диаграммой показать соотношение этнических групп населения в различных штатах

5.                         Вставить диаграммы в соответствующие компоновки.

 

Тема 12. Горячие связи

            ГИС-технологии могут использоваться для создания компьютерных справочно-информационных, обучающих, экспертных систем. Так, при открытом окне Вида и активной кнопке с изображением символа «i» слева в нижнем ряду Панели Инструментов пользователю достаточно навести курсор на объект активного слоя (темы) и нажать левую клавишу манипулятора «мышь», чтобы на экране появилось информационное диалоговое окно «Информация об объекте». В нём представлены все параметры объекта, хранящиеся в полях атрибутивной таблицы слоя.

            Однако в ГИС ArcView 3.2 имеется один инструмент, именуемый «горячие связи», позволяющий существенно повысить информативность электронных карт. Так, наведя курсор на объект, можно вывести на экран фотографическое изображение этого объекта, можно – даже звуковой видеофильм. Это даёт колоссальные возможности для демонстрации материалов. Например, туроператор может указывать потенциальному клиенту на карте местоположения отелей и достопримечательностей и тут же демонстрировать их фотоизображения или видеофильмы. Электронную карту ландшафтов или степени устойчивости природных объектов к антропогенному воздействию можно снабдить набором характерных фотоснимков этих ландшафтов, примеров результатов антропогенных воздействий и т.д.

            Чтобы создать для объектов векторной темы горячие связи, необходимо открыть  диалоговое окно «Свойства темы» ниспадающего меню «Тема» окна ArcView. В расположенном в левой части этого окна списке прокрутки следует найти опцию «Горячая связь», навести на неё курсор и нажать левую клавишу манипулятора «мышь».  Внешний вид диалогового окна изменится. В списке прокрутки «Поле» пользователь должен установить имя поля таблицы атрибутов данной темы, которое используется для добавления значения в динамическую (горячую) связь. Это происходит, когда при активной кнопке Панели Инструментов «Горячая связь» пользователь наведёт курсор на один из объектов темы. Значение поля обычно представляет собой имя файла, который затем открывается и отображается. В списке прокрутки «Предопределенное действие» (Predefined Action) пользователь должен выбрать то действие (фактически существующий скрипт Avenue), которое будет выполняться после включения горячей связи. Действие выполняется, как только один из объектов темы будет выбран с помощью инструмента «Горячая связь». Доступны следующие действия:

1) Связь с программой пользователя на языке Avenue, которая будет запущена на исполнение после включения горячей связи. Остальные типы действий тоже фактически представляют собой запуск программ Avenue, но только системных программ ArcView 3.2. Здесь же можно запустить любую программу, в том числе созданную самим пользователем;

2) Связь с текстовым файлом (Link to Text File) - открывает текстовой ASCII-файл, название и путь к которому указаны в выбранном Поле;

3) Связь с файлом изображения (Link to Image File) – открывает изображения следующих растровых форматов: X-Bitmap, MacPaint, Microsoft DIB (Device-Independent Bitmap), Sun raster files, XWD (X Windows Dump Format), GIF (Graphics Interchange Format), TIFF (Tag Image File Format), TIFF/LZW compressed image data. Чтобы была возможность работы с файлами форматов TIFF, в опции «Модули» ниспадающего меню «Файл» окна ArcView следует включить модуль «TIFF 6.0 Image Support». Название и путь к файлу должны быть записаны в выбранном Поле;

 4) Связь с документом (Link to Document) -   открывает вид, таблицу, диаграмму, компоновку или скрипт, названия которых внесены в указанное Поле. Документ должен существовать в текущем проекте;

5) Связь с проектом (Link to Project) -   импортирует файл Проекта ArcView (с расширением .apr), название которого записано в указанном Поле.

            При выборе предопределённого действия «Связь с программой пользователя» в диалоговом окне «Свойства темы» нужно нажать кнопку с изображением руки, держащей лист бумаги с текстом программы. Эта кнопка расположена правее текстового блока «Текст программы». На экране появится диалоговое окно «Диспетчер программ», в списке прокрутки которого пользователь может выбрать любую из системных программ, или программ, добавленных в Редактор скриптов или созданных пользователем. Если нажать кнопку «Новый», то возникнет диалоговое окно «Имя тексты программы», в котором следует ввести имя новой программы. Эта новая программа появится в списке скриптов (программ Avenue) проекта. В её тексте будет только одна строчка: theVal = SELF. Объект SELF ссылается на значение Поля, в котором записаны файлы, с которыми устанавливается горячая связь.

            При выборе остальных типов предопределённых действий нет необходимости в задании имён скриптов: в текстовой блок загружаются имена системных скриптов. Так, при выборе действия «Связь с текстовым файлом» загружается системная программа Link.TextFile, действия «Связь с файлом изображения» - Link.ImageFile, «Связи с документом» - Link.Document, «Связи с проектом» - Link.Project.

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

            После того, как значения всех параметров в диалоговом окне «Свойства темы» установлены, следует нажать кнопку «ОК» (навести на неё курсор и нажать левую клавишу манипулятора «мышь»). В результате кнопка «Горячая связь» с изображением молнии становится работоспособной: молния из серой превращается в чёрную. Эта кнопка расположена правее кнопки измерения расстояний. Если теперь нажать на эту кнопку, то в пределах Вида курсор примет форму молнии – можно включать горячие связи. Предположим в результате действия горячей связи должно появляться изображение. Наведите курсор на интересующий объект и нажмите левую клавишу манипулятора «мышь» - на экране появится окно с вызванным изображением. Именем окна будет служить полное (т.е. с путём к нему) название растрового файла. Возможно, изображение окажется сплюснутым. Для исправления этого уберите птичку из флажка «Масштаб изображения» в нижней части окна.

            Чтобы с помощью горячих связей запускать видеофильмы, придётся написать свою программу. Предположим, в таблице атрибутов векторного слоя пути к файлам видеофильмов и их названиям с расширениями (например, «avi» или «wmv») записаны в символьном поле «Video». Сделайте активным тип документов проекта «Редактор скриптов». Нажмите кнопку «Новый». Появится пустое окно редактора нового скрипта, в котором запишите следующий текст.

theVal = SELF                      

Переменная – горячая связь

if (not (theVal.IsNull)) then

Если значение поля горячей связи не пустое

 

    if (File.Exists(theVal.AsFileName)) then

         System.Execute("C:\Program

         Files\Windows Media Player\

         wmplayer.exe/play /close"++theVal)

Если файл, указанный в поле, существует, то проигрывать видео. На Вашем компьютере путь к программе проигрывания и сама программа могут быть другими

    else MsgBox.Warning("Файл "+theVal+

         " не найден.","Горячая связь")

Если файл видеофильма не существует, то сообщение пользователю

    end

 

end

 

Откомпилируйте скрипт. Затем в диалоговом окне «Свойства темы» установите поле «Video» в качестве Горячей связи. Выберите тип предопределенного действия «Связь с программой пользователя». Нажмите кнопку с изображением руки и листа бумаги. В появившемся диалоговом окне «Диспетчер программ» выберите Ваш откомпилированный скрипт. Нажмите кнопку «OK». Для данного слоя горячие связи установлены. Теперь при активной кнопке «Горячая связь» наведением курсора на объект и последующим нажатием левой клавиши манипулятора «мышь» будет запускаться проигрывание видеофильма с помощью внешней программы wmplayer.exe.  

Задание № 12.1.

Работаем с копией проекты карты Российской Федерации, находящейся по адресу C:\esri\esridata\russia\russia.apr.

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

 

Тема 13. Географическая привязка растровых карт.

                  При проведении исследований часто возникает необходимость использования в качестве слоёв карты растровых изображений, их анализа и векторизации. Источниками растровых изображений служат космические снимки, отсканированные бумажные карты. Иногда нет необходимости векторизации карты, например, растровый слой может служить фоном для векторных слоёв карты. Существуют такие форматы космических снимков, которые не требуют усилий пользователя для географической привязки, т.к. все параметры привязки хранятся в самих файлах. Таковы файлы форматов фирмы ERDAS с расширениями «.lan» и «.gis», IMAGINE, BSQ, BIL, BIP, GeoTIFF. В остальных случаях небходима географическая привязка, «растолковывающая» ГИС, как нужно растянуть, сжать, повернуть растровое изображение на электронной карте, чтобы координаты точек растрового слоя соответствовали действительности. В противном случае ГИС воспримет номера строчек и столбцов матрицы растрового изображения как координаты электронной карты.

                  В ГИС ArcView 3.2 не предусмотрена возможность привязки растрового изображения по сети регистрационных точек с известными координатами, когда растровое изображение «натягивается» на эти точки, т.е. соответственный пиксел изображения совмещается с регистрационной точкой. В ArcView 3.2 имеется только один способ привязки растровых файлов – с помощью мировых (world) файлов. Это текстовой ASCII-файл, который можно создать при помощи любого текстового редактора, например, Блокнота. В нём должно быть всего 6 строчек. В первой записывается размер пиксела изображения в единицах карты того Вида, куда будет импортировано растровое изображение по оси x. Две следующие строчки содержат параметры поворота изображения. Но в ArcView 3.2 эта возможность не доступна, поэтому в этих сточках следует ставить нули. Если же существует необходимость поворота изображения, то повернуть его следует в каком-нибудь графическом редакторе, например, Adobe Photoshop. В следующей строчке записывается размер пиксела изображения в единицах карты по оси y. Поскольку ось y направлена вверх, а счёт строчек в матрице изображения идёт сверху вниз, то перед этой величиной необходимо ставить знак минус, иначе наше изображение «улетит» в южное полушарие. Пятая и шестая строчки содержат координаты  x и y центра верхнего левого пиксела.

                  Мировой файл должен находиться в той же самой папке, что и файл изображения, для привязки которого он создан. Имя его должно быть таким же, как и у файла изображения. Различаются расширения файлов. Из расширения графического файла убирается средний символ, а справа прибавляется символ «w». Таким образом, для графических файлов с расширением «jpg» расширения обеспечивающих их географическую привязку мировых файлов должно быть «jgw», привязку файлов с расширением «bmp» должны обеспечивать файлы с расширением «bpw» и т.д.

                  Очевидно, что для создания мирового файла нужно точно знать параметры картографической проекции растрового изображения, т.е. привязка космических снимков весьма проблематична. Да и далеко не всякую отсканированную бумажную карту будет легко привязать: во многих атласах и тематических картах отсутствует информация о картографической проекции. Однако с привязкой топографических карт сложностей не будет. В СССР и России с 1942 года они строились в проекции Гаусса-Крюгера (Поперечной Меркатора) с использованием эллипсоида Красовского. В этой проекции эллипсоид «оборачивается» цилиндром, касающимся эллипсоида по меридиану. С эллипсоида точки переносятся на цилиндр в пределах трех градусов долготы в обе стороны от меридиана касания. Поэтому весь эллипсоид делится на 60 шестиградусных зон, меридиан касания называется осевым меридианом зоны. В табл. 13 представлены границы и осевые меридианы Европы. Далее таблицу не трудно продолжить.

 

Табл. 13.

Параметры шестиградусных зон

Номер зоны

Долгота восточной границы

Долгота осевого

меридиана

Долгота западной границы

1

0

3

6

2

6

9

12

3

12

15

18

4

18

21

24

5

24

27

30

6

30

33

36

7

36

39

42

8

42

45

48

9

48

51

54

10

54

57

60

 

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

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

Задание № 13.1.

Работа с копией проекта europe.apr.

  1. Откройте Вид Europe. Выберите небольшой участок карты, например, остров Котлин. Посмотрите, каковы значения долготы и определите, к какой шестиградусной зоне относится этот участок. Это необходимо для последующего определения значения осевого меридиана зоны.
  2. Измените проекцию на Поперечную Меркатора (Гаусса-Крюгера), выберите эллипсоид Красовского, главный меридиан пятой зоны – 27.
  3. По умолчанию единицы карты проекции – метры, но для имитации километровой сетки и её оцифровки нужно установить единицами карты километры.
  4. На отечественных топографических картах применяются только положительные значения  вертикальных линий километровой сетки. Для этого к реальным значениям по горизонтальной оси (x по принятой в математике традиции) прибавляется значение 500 км. Для имитации этого обстоятельства в свойствах проекции устанавливаем значение параметра «Сдвиг по Х» равным 500.
  5. Создать полигональный слой рамки.
  6. Установить масштаб Вида на характерный для топографических карт, например, 1:100,000 (в 1 см1 км). Разумеется, на топографических картах линии сетки могут проводиться и через другие расстояния, например 2 или 4 км.
  7. С помощью Мастера пространственных операций вырежьте о.Котлин.
  8. Удалите все слои кроме рамки и о.Котлин. Это делается для улучшения внешнего вида карты.
  9. Создайте новую компоновку. В ней создайте Рамку Вида, в которую вставьте изображение Вида с островом Котлиным. В Свойствах рамки вида проверьте масштаб. Он должен быть 1:100,000. Это обеспечивается при значении стиля Масштаба «Автоматический». Другой способ – задать стиль масштаба «Сохранить масштаб вида».
  10. С помощью Мастера координатной сетки создать километровую сетку. Вызвать Мастера можно либо с помощью опции «Добавить координатную сетку» ниспадающего меню «Компоновка», либо просто нажатием кнопки «Координатные сетки». Это крайняя справа кнопка в верхнем ряду Панели инструментов. На ней изображён символ Земного шара. На экране появится диалоговое окно «Мастер координатной сетки». Включить флажок «Создать километровую сетку» и выключить флажок «Создать градусную сетку». Нажать кнопку «Далее».
  11. Вид окна изменится. В текстовой блок «Введите шаг сетки» запишите 1 (т.е  1 км). В группе переключателей «Введите сетку как» выберите «Линии». Внимание! По умолчанию стоят «Перекрестья». Нажмите кнопку «Далее», включите флажок «Рамка вокруг координатной сетки» и нажмите кнопку «Просмотр», а затем «Готово».
  12. Экспортировать изображение созданной компоновки в файл формата JPEG.
  13. Откройте созданный графический файл в каком-либо графическом редакторе, например, в программе Adobe Photoshop. Увеличьте изображение и посмотрите оцифровку сетки. Числа у боковых краёв карты соответствуют тому, что напечатано на топографических картах – это расстояние в километрах до экватора по поверхности эллипсоида Красовского. Числа внизу и верху карты – расстояния от осевого меридиана зоны плюс 500 км. То, что напечатано на бумажных картах у верхнего обрезов карты немного отличается от надписей на нашей имитации. В реальности здесь не 3, а 4 цифры. Крайняя слева цифра – номер шестиградусной зоны. Разумеется, начиная с 10-ой зоны цифр будет 5. На бумажных картах не все надписи содержат 4 цифры: так обычно надписываются только одна из нескольких линий сетки. При этом две первые слева цифры имеют меньший размер, чем две следующие. Большинство линий надписываются только двумя последними крупными цифрами.
  14. Инструментом графического редактора (в пакете Adobe Photoshop это инструмент «Прямоугольная область») скопируйте с небольшим перехлёстом квадрат километровой сетки и вставьте его в новый графический файл. Определите размер изображения квадрата сетки в пикселах. В пакете Adobe Photoshop это можно сделать с помощью опции «Размер изображения» ниспадающего меню «Изображение». Увеличив изображение и, возможно, используя инструмент «Кисть» сосчитайте число пикселов вне квадрата и толщину линий в пикселах. Определите расстояние между центрами горизонтальных и вертикальных линий. Методика простая: определяем сумму толщин линий, делим на 2 и прибавляем количество пикселов внутри квадрата по данному направлению (вертикали или горизонтали). Делим расстояние между линиями сетки (в данном случае – 1 км) на число пикселов между центрами линий – получаем ширину или высоту пиксела в единицах карты (Вида). Разумеется, если единицы карты – метры, то и размеры пикселов следует записывать в метрах.
  15. Находим на изображении перекрестье линий сетки, ближайшее к верхнему левому углу изображения. Аналогично предыдущему пункту определяем приращения по вертикали и горизонтали в пикселах до центра верхнего левого пиксела. Приращение по горизонтальной оси будет отрицательным. Поскольку размеры пиксела уже известны, пересчитываем приращения в единицы карты, т.е. метры или километры. Так как координаты центра ближайшего к верхнему левому пикселу перекрестья линий сетки известны благодаря оцифровке линий, то определяем координаты центра верхнего пиксела в единицах карты. Отнимаем от координаты x 500 км, т.к. при использовании проекции Гаусса-Крюгера (Поперечной Меркатора) начало координат по оси x совпадает с осевым меридианом зоны.
  16. Создание текстового мирового файла.
  17. Измените свойства Вида: установите значение параметра «Сдвиг по Х» равным 0. Добавьте растровое изображение. Оно должно совпасть с векторными сдоями. 

Привязка растрового изображения «работает» только для электронной карты с проекцией, соответствующей проекции исходной бумажной карты. Проекцию Вида с растровыми слоями нельзя изменять. Однако можно провести векторизацию растрового слоя «по подложке», проще говоря, нарисовать слои векторных объектов по растровому слою. Шейпфайлы этих векторных объектов можно будет добавлять на электронные карты любых проекций.

 

Тема 14. Картометрические операции.

            При выполнении исследований в областях геоэкологии и природопользования часто возникает необходимость выполнения картометрических операций: определения площадей, протяжённостей объектов, расстояний между объектами. Например, ширина водоохраной зоны водоёма по законодательству определяется с учётом его площади; знание площадей сельскохозяйственных угодий необходимо для расчётов поступления биогенных элементов в речную сеть; отношение загрязнённой зоны объекта к его общей площади необходимо для определения экологического состояния объекта; соотношения площадей различных ландшафтов в пределах водосборов позволяют судить о сходстве или различиях условий формирования химического состава речного стока и т.п. Также расчёты протяжённостей участков водотоков нужны для построения гидрохимических профилей: графиков, по оси y которых откладываются концентрации веществ, а по оси x - расстояния между точками отбора проб.

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

            Расчёты расстояний между объектами нужны, например, при исследовании степени воздействия на окружающую среду какого-либо промышленного источника загрязняющих веществ. Допустим, на различных расстояниях от источника загрязнения определено содержание загрязняющих веществ в различных средах: почве, растительности и т.п. Необходимо проанализировать зависимость концентрации вещества от расстояния до источника. Здесь не обойтись без расчёта расстояний.

            Картометрические операции в ГИС могут производиться либо на поверхности карты, либо на поверхности сферы или эллипсоида вращения. Как известно, реальная физическая форма поверхности Земного шара не может быть выражена математически. Славная наука картография занимается тем, что разрабатывает методы переноса точек с реальной поверхности Земли на карты различных картографических проекций, которые являются математически точными законами этого переноса. Этот путь весьма не прост. Сначала нужно перенести точки на поверхность геоида – мысленно представляемой фигуры, поверхность которой является поверхностью равного потенциала силы тяжести. В Мировом океане поверхность геоида совпадает с невозмущенной поверхностью воды (нет ветра, приливов, во всём Мировом океане вода имеет одно значение плотности), а на суше совпадает с мысленно продолженной водной поверхностью (по всей суше прокопали колодцы, прорыли подземные каналы, соединяющие колодцы с океаном, уровень в колодцах совпадёт с поверхностью геоида). Но геоид также не может быть выражен математическими формулами. С него точки переносят на сфероид или эллипсоид вращения, которые уже выражаются с помощью математических формул. Разные страны используют различные эллипсоиды вращения, поверхность которых более всего совпадает с поверхностью геоида в пределах данной страны. Поэтому Россия использует эллипсоид Красовского, а США – Кларка. Для управления космическими аппаратами и представления данных космического зондирования используется международный эллипсоид 1984 года (World Geodesic System 1984 – WGS84).

            Перенос точек с эллипсоида или сфероида можно представить следующим образом. В мировом пространстве в соответствии с картографической проекцией помещается мысленная поверхность. Это может быть цилиндр, конус, плоскость, система совмещённых конусов и т.д. Например, в случае проекции Гаусса-Крюгера это мысленный цилиндр, которым «оборачивается» также мысленный эллипсоид (В России – Красовского). На этот цилиндр в соответствии с математическими формулами данной проекции переносятся точки с эллипсоида. Математические формулы представляют собой правило перехода от географических координат широты и долготы на поверхности эллипсоида к декартовым координатам x и y на поверхности цилиндра. Для проекции Гаусса-Крюгера - координата y – расстояние в метрах от данной точки до экватора, x – до осевого меридиана зоны. Важно помнить, что в ГИС направления осей совпадают с этими направлениями в математике и физике: y – снизу вверх (т.е. с юга на север), x – слева направо (с запада на восток). В отечественной литературе по картографии используется другое расположение осей: y - с запада на восток, x - с юга на север. Затем этот цилиндр мысленно «разворачивается» в плоскость карты. Координаты, которые показываются в правом верхнем углу окна Вида – это координаты на плоскости карты в декартовых единицах данной проекции. Уменьшение в соответствии с выбранным масштабом изображения на плоскости карты даёт размеры листа бумажной карты и координаты точек на этом листе.

            В ГИС ArcView 3.2 все картометрические измерения выполняются исключительно на плоскости карты. В связи с этим возникает вопрос об искажениях результатов. Известно, что на любой карте неизбежны искажения масштабов. На картах в зависимости от проекции имеется линия (или 2 линии) или точка истинного масштаба, где масштаб карты совпадает с заявленным. На остальной части карты масштаб искажён. Для устранения искажений следует, во-первых, выбирать наиболее подходящую проекцию карты. Так, например, на картах проекции Гаусса-Крюгера искажения длин на наибольшем удалении от осевого меридиана не превышают 2-3%. Естественно, на карте в Меркаторской проекции, покрывающей значительную по площади акваторию, не следует проводить измерений, здесь искажения будут очень велики.

            Вероятно, в ряде случаев имеет смысл проведение специального исследования величины максимальных искажений. Например, на карте в проекции Гаусса-Крюгера искажения отсутствуют на осевом меридиане зоны. Создайте на нём небольшой полигон по четырем точкам (листинг программы создания полигона по точкам контура рассматривается в следующей теме). Расстояния между точками задайте равными двум минутам широты и долготы, т.е. левые точки на расстоянии одной минуты влево от меридиана, а правые – вправо. На этой же параллели, т.е. не меняя широты точек, создайте полигон тех же размеров у края карты на максимальном удалении от осевого меридиана. Очевидно, что в реальности площади этих двух трапеций на поверхности эллипсоида равны. Определите площади созданных полигонов и определите отношение разницы площадей к площади полигона на осевом меридиане. Эта величина, умноженная на 100, даст величину искажения в процентах. На карте в Стереографической проекции, обычной для изображения Северного Ледовитого океана и прилегающих территорий, истинный масштаб соблюдается в точке касания сферы плоскостью карты. Обычно эта точка касания расположена на Северном полюсе. Здесь можно выполнить следующее исследование: создать слой из 4 –х точечных объектов на расстояниях в одну минуту широты от полюса на меридианах: 0, 90, 180, -90 градусов. Записать этот слой в шейпфайл в единицах проекции, поскольку невозможно создать полигон, пересекающий 180-й меридиан в Виде, координаты объектов которого записаны в географической мере (градусы широты и долготы). Очевидно, что это квадрат с диагональю в 2 морские мили. Можно уточнить из соображений сферической геометрии: радиус шара R в данной проекции известен, угол – 2 угловые минуты, остаётся рассчитать длину дуги L по формуле: L = 2πRnº/360º, где nº - дуга в градусах, в данном случае 2/60 = 0.033333. Зная размер диагонали квадрата, легко узнать его сторону и площадь. Затем определите размер площади этого квадрата в ГИС с помощью картометрической функции. Результаты должны совпасть или быть очень близкими. Далее создайте второй полигон на наибольшем расстоянии от Северного полюса с протяжённостью по долготе и широте 2 минуты. Очевидно, что на поверхности сферы это будет трапеция. Длину её боковых сторон рассчитываем аналогично тому, как была рассчитана длина диагонали квадрата на полюсе. Радиус плоскости сечения шара по параллели r определяем по формуле: r = Rsin(90-φ), где φ – значение широты. Далее длины оснований трапеции определяются по той же формуле, что и длины боковых сторон, только вместо радиуса шара R используется радиус плоскости сечения шара по параллели. Рассчитываем площадь полигона по формуле трапеции. Затем в ГИС создаём этот полигон и получаем его площадь с помощью функции ГИС. Отношение разницы площади по данным ГИС и по результату расчета к последней величине даёт величину относительной ошибки.

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

Однако ГИС предоставляет возможность картометрических определений безо всяких искажений, если только протяжённость пространственных объектов такова, что в её пределах масштаб можно считать постоянным. В этом случае просто в программе перед определением площади или длины пространственного объекта параметры картографической проекции переустанавливаются таким образом, чтобы линия или точка истинного масштаба карты располагалась в середине данного объекта. То есть, в случае проекции Гаусса-Крюгера, например, при расчёте площади или длины очередного пространственного объекта «оборачивающий» эллипсоид цилиндр передвигается таким образом, что меридиан касания цилиндром поверхности эллипсоида проходит через середину данного пространственного объекта. В случае Стереографической проекции аналогично передвигается точка касания плоскостью карты поверхности сферы таким образом, чтобы она совпадала с центром объекта. Разумеется, такой подход несколько увеличивает время работы программы, но при современном быстродействии компьютеров этим обстоятельством вполне можно пренебречь.

Расчёты протяжённостей пространственных объектов в ГИС ArcView 3.2 выполняется с помощью функции Avenue ReturnLength. Синтаксис её применения в программе:

«Идентификатор результата» =«Идентификатор Shape объекта». ReturnLength

Здесь «Идентификатор результата» - переменная программы, в которую будет записан результат выполнения функции,  «Идентификатор Shape объекта» - переменная программы, в которую уже помещён результат выполнения функции ReturnValue, обращающейся к полю Shape виртуальной таблицы атрибутов векторного слоя Ftab, т.е. это хранящийся в памяти компьютера пространственный объект: «Идентификатор Shape объекта» =

= «Идентификатор Ftab». ReturnValue(«Идентификатор поля Shape», номер записи).

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

            Для расчётов расстояний между пространственными объектами служит функция Distance, имеющая следующий синтаксис: «Идентификатор результата» =

= «Идентификатор Shape объекта 1». Distance(«Идентификатор Shape объекта 2»)

Все три функции возвращают результат в тех координатах, в которых в памяти компьютера хранятся объекты Shape, т.е. в случае географических координат длины, расстояния и площади будут рассчитываться в градусах и квадратных градусах, что не имеет никакого смысла. Разумеется, можно записать векторные слои в шейпфайлы с координатами объектов в единицах проекции (т.е. метрах, километрах и т.д.), создать новый Вид, импортировать в него новые слои спроецированных объектов и уже к ним применять картометрические функции. Однако в этом случае уже будет невозможно «приноравливать» проекцию для каждого пространственного объекта, такой подход приемлем только в том случае, если масштаб карты в её пределах практически неизменен. К тому придётся «плодить» новые шейпфайлы спроецированных координат и Виды проекта. Поэтому более рационален подход, когда не создаётся новых шейпфайлов и Видов, а создаётся пространственный объект с координатами в единицах проекции только в памяти компьютера, и к этому объекту применяются картометрические функции. Такой подход позволяет изменять перед измерением каждого объекта параметры проекции для исключения искажений масштаба. Разумеется, это подходит только для измерений длин и площадей объектов, для исключения искажений расчётов расстояний между объектами следует создавать линейные объекты кратчайших расстояний между двумя точками, разбивать их на короткие объекты и уже к ним применять функцию ReturnLength.

Проецирование объектов, т.е. создание по старым объектам с координатами в географической системе новых объектов с координатами в декартовых единицах карты возможно с помощью функций QueryShape и ReturnProjected. Использование функции QueryShape «экономит» в программе один оператор. Синтаксис функции таков:

«Идентификатор FTab».QueryShape (номер записи таблицы FTab,

«Идентификатор проекции Вида», «Идентификатор Shape-объекта»).

Идентификатор Shape-объекта с занесённым в него пространственным объектом уже должен существовать до посылки запроса QueryShape. Этот запрос находит Shape-объект в записи с данным номером в атрибутивной таблице FTab, проецирует его, т.е. переводит координаты из географических в декартовые в соответствии с характеристиками проекции Вида и помещает результат по адресу идентификатора Shape-объекта. Переменная с характеристиками проекции также должна уже существовать.

            С помощью функции ReturnProjected получение спроецированного Shape-объекта осуществляется в два приёма. Сначала функция ReturnValue возвращает Shape-объект в географических координатах. Затем функция ReturnProjected на его основании создаёт новый спроецированный Shape-объект в декартовых координатах (единицах карты):

            ShapePr = ShapeGeo. ReturnProjected (aPrj),

где  ShapePr - идентификатор спроецированного Shape-объекта, ShapeGeo - идентификатор Shape-объекта в географических координатах, aPrj – идентификатор проекции.

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

Программа расчёта площадей объектов с изменениями параметров проекции

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

Выбор Вида с помощью диалогового окна:

theView=MsgBox.List(ViewList, "", "Выберите Вид")

 

thePrj=theView.GetProjection  

Запись проекции Вида и всех её параметров в объект thePrj. Этот объект понадобится только в том случае, если не будет производиться «подгонка» параметров проекции для каждого объекта

list_of_themes=theView.getThemes 

Получение списка всех тем (слоёв) Вида

theTheme = MsgBox.List(list_of_themes, "*.shp", " Выберите тему")

Выбор темы

theFtab = theTheme.GetFtab  

Получение атрибутивной таблицы темы

theShapeField = theFtab.FindField("Shape") 

Создание идентификатора значений поля Shape в конкретных записях таблицы theFtab

theFTab.SetEditable(true) 

Установка возможности редактирования таблицы

fields = List.Make

Создание пустого списка. Создание числового поля Area_km и его добавление в список. Естественно, предполагается, что единицы карты – километры. В случае метров уберите в названии поля символ «k».

fields.Add(Field.Make("Area_km", #FIELD_DECIMAL , 11, 2))

 

theFTab.AddFields(fields)

'Добавление списка полей fields с характеристиками поля Area_km в таблицу theFTab

AreaField  = theFTab.FindField("Area_km")

Создание идентификатора значений поля Area_km в конкретных записях таблицы theFTab. Создание пространственного объекта по данным, взятым в поле Shape первой записи таблицы theFTab, пока ещё в географических координатах

theShapePr = theFTab.ReturnValue(theShapeField, 0)

 

for each rec in theFTab

Начало цикла по всем записям таблицы theFTab

   theShape = theFTab.ReturnValue

   (theShapeField, rec)

Получение пространственного объекта в текущей записи таблицы с номером rec

   theMP=theShape.AsMultiPoint

Превращение площадного theShape в многоточечный объект theMP – последовательность вертексов границы полигона

   theVertexList = theMP.AsList

Превращение многоточечного объекта в список точек вертексов

   nvert=theVertexList.Count

Подсчёт числа вертексов

   for each t in 0..(nvert-1)

Начало цикла по всем вертексам списка  

      tekt = theVertexList.Get(t)

Получение текущей точки списка

      tekx = tekt.GetX

Получение значения координаты X точки списка - долготы

      teky = tekt.GetY

Получение значения координаты Y точки списка - широты

      if (t=0) then

          minx=tekx

          maxx=tekx

          miny=teky

          maxy=teky

     end

Если точка в списке первая, то минимальные и максимальные значения принимаются равными текущим

 

     if (tekx<minx) then

          minx=tekx

     end

     if (tekx>maxx) then

          maxx=tekx

     end

     if (teky<miny) then

          miny=teky

     end

     if (teky>maxy) then

          maxy=teky

     end

Переопределения крайних значений в случае необходимости

   end

Окончание цикла по всем вертексам объекта

   sredy = (maxy+miny)/2

   sredx= (maxx+minx)/2

Определение средних значений широты и долготы текущего объекта

   r = Rect.MakeXY(-180,-90,180,90)

Создание объекта прямоугольник на весь Земной шар

   p = Stereographic.Make(r)

Создание проекции

   p.SetCentralMeridian(sredx)

Установка центрального меридиана проекции на значение средней долготы текущего объекта

   p.SetReferenceLatitude(sredy)

Установка широты полюса истинных координат проекции значение средней широты текущего объекта

   theView.SetProjection(p)

Установка этой проекции для данного Вида. Таким образом, теперь плоскость проекции касается сферы в середине текущего объекта

   theFTab.QueryShape(rec, p, theShapePr)

Создание спроецированного объекта theShapePr по данным поля Shape текущей записи таблицы theFTab с номером rec и текущей проекцией p. Теперь объект theShapePr имеет декартовы координаты в километрах

   tek_area=theShapePr.ReturnArea

Получение значения площади

   theFTab.SetValueNumber(AreaField, rec,

   tek_area)

end

Запись вычисленного значения в поле с идентификатором AreaField (т.е. Area_km) таблицы theFTab  

Окончание цикла по всем записям таблицы theFTab

theFTab.Flush

Запись изменений таблицы theFTab в файлы, являющиеся её источниками

theFTab.SetEditable(false)

Запрещение редактирования таблицы theFTab

 

            В случае необходимости расчётов длин линейных объектов необходимо только изменить названия полей результатов и функцию ReturnArea на ReturnLength.

 

Программа расчёта расстояний между единственным объектом одной темы

и всеми объектами другой темы

            Эта программа применима только в том случае, когда можно пренебречь неоднородностью масштаба в пределах карты. Её вполне можно применять, если расстояния между объектами составляют десятки или первые сотни километров. При больших расстояниях требуется другая методика. Но для случаев масштабов, например, Кольского полуострова, Республики Карелии или нескольких смежных регионов средних размеров (Ленинградская, Новгородская, Псковская области) она может применяться. Размерность объектов несущественна: это могут быть точки, линейные или площадные объекты, но в случае обработки результатов геоэкологических исследований чаще всего тема многих объектов будет темой точек отбора проб.

theView=MsgBox.List(ViewList, "", "Выберите Вид")

 

thePrj = theView.GetProjection

Определение проекции Вида

list_of_themes=theView.getThemes

Получение списка тем Вида

Theme1 = MsgBox.List(list_of_themes, "*.shp", "Выберите тему с одним объектом")

Выбор темы с одним объектом

Ftab1=Theme1.GetFtab

Получение атрибутивной таблицы темы одного объекта

Shape1=Ftab1.findfield("Shape")

Получение идентификатора поля Shape этой таблицы

obj1 = Ftab1.returnvalue(Shape1, 0)

Получение этого единственного пространственного объект

obj1pr = obj1.ReturnProjected(thePrj)

Проецирование объекта

Theme2 = MsgBox.List(list_of_themes, "*.shp", "Выберите тему объектов")

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

Ftab2=Theme2.GetFtab

Получение атрибутивной таблицы темы многих объектов

Shape2=Ftab2.findfield("Shape")

Получение идентификатора поля Shape этой таблицы

Ftab2.SetEditable(true)

Установка возможности редактирования этой таблицы

fields = List.Make

Создание пустого списка

fields.Add(Field.Make("Rasst_km", #FIELD_DECIMAL , 8, 2))

Создание поля Rasst_km и его добавление в список

FTab2.AddFields(fields)

Добавление поля Rasst_km в таблицу FTab2 

RasstField  = FTab2.FindField("Rasst_km")

Создание идентификатора поля Rasst_km

for each rec in Ftab2

Цикл по всем записям таблицы Ftab2

   obj2 = Ftab2.returnvalue(Shape2, rec)

Получение текущего объекта таблицы

   obj2pr = obj2.ReturnProjected(thePrj)

Проецирование объекта

   rasst=obj2pr.Distance(obj1pr)

Расчёт расстояния между проецированными объектами

   FTab2.SetValueNumber(RasstField,  rec,   

   rasst)

Запись результата в таблицу FTab2

end

 

FTab2.Flush

Запись изменений таблицы theFTab в файлы, являющиеся её источниками

FTab2.SetEditable(false)

Запрещение редактирования таблицы theFTab

 

            Теперь рассмотрим вопрос, как измерять большие расстояния, когда уже нельзя пренебрегать шарообразностью Земли и как проводить линии кратчайших расстояний. Естественно, что кратчайшее расстояние между двумя точками – это прямая линия. Однако на поверхности сферы могут быть только кривые линии. Наикратчайшей будет линия, представляющая собой отрезок окружности с наибольшим радиусом, т.е. радиусом самой сферы. Таким образом, кратчайшая линия между двумя точками на сфере образуется пересечением сферы плоскостью, проходящей через эти две точки и центр сферы. Нетрудно убедиться, что радиус окружности, сегментом которой является линия на поверхности сферы между двумя точками, является радиусом самой сферы.

            Существует Гномоническая проекция, обладающая замечательным свойством: в ней прямые линии между двумя точками являются линиями пересечения сферы плоскостями, проходящими через центр сферы, и, таким образом, линиями кратчайших расстояний. Карта в этой проекции образуется следующим образом. Плоскость карты касается сферы в какой-либо одной точке. Из центра сферы проводятся лучи, проецирующие точки с поверхности сферы на плоскость карты. Линия кратчайшего расстояния между двумя точками имеет название ортодромии. Естественно, что на картах других проекций ортодромия уже не будет иметь вид прямой линии. При проектировании дороги, трубопровода, ЛЭП, маршрута движения морского или воздушного судна  сначала следует создавать линейный объект, представляющий собой ортодромию между двумя точками. Уже затем этот маршрут корректируется в зависимости от других факторов: степени сложности прокладки дороги и т.п., соображений охраны окружающей среды и т.д.

            Однако ортодромия характеризуется переменным азимутом. Вспомним, что азимут – это угол между данным направлением и направлением на географический полюс (истинный азимут) или на магнитный полюс (магнитный азимут). Естественно, что бессмысленно менять азимут маршрута движения или строительства объекта через каждый километр. Необходимо перенести ортодромию на карту такой проекции, в которой прямыми являются линии постоянного азимута (направления) и аппроксимировать ломаной линией, состоящей из отрезков прямых. Размеры этих отрезков зависят от того, какое отклонение от ортодромии, вернее, увеличение маршрута допустимо.  Естественно, что для электронной карты следует просто изменить проекцию. Соединяющая две точки линия постоянного направления носит название локсодромии. Она совпадает с ортодромией только в тех случаях, когда две точки расположены на экваторе или одном меридиане. Во всех остальных случаях локсодромия длиннее ортодромии.

            Проекция, в которой локсодромии изображаются прямыми линиями, это Меркаторская проекция. В ней создаются морские навигационные карты. Это цилиндрическая проекция. В ней сфера «обёрнута» цилиндром таким образом, что ось цилиндра совпадает с осью вращения Земли, цилиндр либо касается сферы на экваторе, либо «прорезает» сферу по двум равноотстоящим от экватора параллелям. Экватор (или две параллели) – это место истинного масштаба. Параллели и меридианы образуют в ней прямоугольную сетку, причём масштаб резко увеличивается к полюсу, который в принципе в этой проекции отобразить невозможно. Внешний вид Мира в этой проекции очень приятен сердцу русского человека: Кольский полуостров по площади соизмерим с Францией, Новая Земля превосходит Италию, а Северная – Британские острова, Таймыр даже больше Индостана. Ложкой дёгтя служит то, что Аляска по размеру близка половине остальных США (возникает резкое осуждение Александра II за её продажу), а Гренландия чуть меньше Сибири и больше Африки. Все эти «географические фокусы» объясняются просто: масштаб очень сильно увеличивается от экватора к полюсу. Так, на параллели 60º (параллель Санкт-Петербурга) линейный масштаб по сравнению с экватором увеличивается в 2 раза, на параллели 70º (немного севернее Мурманска) – в 2.92 раза, а на параллели 80º (юг Земли Франца-Иосифа) в 5.76 раза. Соответственно масштаб площадей на 60-ой параллели увеличится в 4 раза, 70-й – в 8.55 раз, а на 80-й – в 33.16 раз!

            Может возникнуть вопрос: «Зачем нужна проекция со столь колоссальными искажениями?». Ответ простой – она очень удобна для навигационных целей. Чтобы добраться из точки А в точку Б, достаточно провести на карте в Меркаторской проекции линию между этими точками и измерить угол между этой прямой и вертикальной линией сетки (меридианом), т.е. азимут с точки А на точку Б. Затем остаётся двигаться постоянно по этому азимуту и Вы обязательно попадёте в точку Б. Правда, этот путь будет длиннее, чем по ортодромии.

            Подытожим алгоритм создания кратчайших линий. Сначала она строится в гномонической проекции. Чтобы затем при преобразованиях проекций линия не «съехала в сторону», имеет смысл выполнение операции сгущения вертексов с помощью функции ReturnDensified. Эта функция создаёт новый линейный объект, в котором вертексы расставлены через заданное пользователем расстояние: «Идентификатор нового объекта» =

= «Идентификатор старого линейного объекта». ReturnDensified(«Размер шага»). В результате ни один сегмент нового линейного объекта не будет длиннее, чем «Размер шага». Также эта функция понадобится для создания объектов малой протяжённости. Затем проекция Вида преобразуется в Меркаторскую. Создаётся новый слой одного линейного объекта – близкой к ортодромии ломаной линии. Каждый её сегмент – линия постоянного направления. Штурману или прорабу придётся теперь менять азимут движения в вертексах этой линии. Длина отрезков ломаной определяется из соображений достаточности близости к ортодромии, чтобы с одной стороны увеличение расстояния по сравнению с ортодромией было не существенно, а с другой количество точек смены направления не было чрезмерным. Далее уже к этому линейному объекту применяется функция сгущения вертексов таким образом, чтобы длина сегментов позволяла рассматривать их как отрезки прямой на плоскости. Затем этот каждый сегмент преобразуется в отдельный объект и к слою применяется программа расчёта длин объектов с подгонкой проекции для каждого объекта. Разумеется, если нам нужно получить не протяжённость маршрута, а кратчайшее расстояние между объектами, то программа расчёта длин применяется к первоначальной линии, созданной в гномонической проекции.

            Для наглядности выполним следующий эксперимент. Его можно сделать в копиях проектов world.apr или russia.apr. Представим, что нам нужно проложить курс полёта самолёта из Санкт-Петербурга в Магадан. Оба города расположены на 60-ой параллели. Поэтому первая идея, которая может придти в голову: «Лететь строго на восток». В этом случае локсодромия совпадает с 60-ой параллелью. Установим проекцию Вида на Меркаторскую и создадим новую тему с одним объектом – локсодромией, т.е. прямой линией от Санкт-Петербурга до Магадана. Теперь преобразуем проекцию в Гномоническую. Мы обнаружим, что локсодромия превратилась в кривую и что она отнюдь не является кратчайшим расстоянием. Создадим новую линейную тему – кратчайшего пути в  Гномонической проекции, т.е. ортодромию. Мы увидим, что эта прямая сильно «забирается» на север: она проходит над северной оконечностью полуострова Ямал и островом Диксон в Карском море. Преобразуйте проекцию обратно в Меркаторскую. Вы увидите, что локсодромия снова стала прямой, а ортодромия превратилась в кривую, которая кажется гораздо длиннее локсодромии. Создайте ломаную линию, аппроксимирующую ортодромию – вдоль этой линии должен лететь самолёт.

Задание № 14.1.

Работаем с копией проекта с:\esri\esridata\russia.apr.

1.            Рассчитать с помощью приведенной программы вычисления площадей площадь каждого из регионов Российской Федерации.

2.            Вычислить расстояние от Москвы до каждого региона Российской Федерации.

3.            Вычислить расстояние от Санкт-Петербурга до остальных центров регионов Северо-Западного федерального округа.

Краткие указания к выполнению задания.

Создайте тему одного объекта – Москвы.  В теме «Населенные пункты» выберите Москву и преобразуйте тему в шейпфайл с одним этим объектом. Добавьте созданный шейпфайл в Вид как новый слой. Закройте Вид, в окне Проекта сделайте активным тип документов «Тексты программ», далее нажмите кнопку «Новый». После этого Вам необходимо загрузить из отдельного текстового файла или набрать в ручную программу, измеряющую площади объектов. Откомпилируйте ее и запустите, последовательно выбирайте Вид  «Российская Федерация» и тему «Административные регионы», когда программа Вас об этом спросит. Итак, площади посчитаны и записаны в виртуальную таблицу темы «Административные регионы». Далее Вам необходимо открыть новое окно для следующей программы и загрузить в него или набрать вручную программу измерения расстояний от единственного объекта до многих объектов другой темы. Откомпилируйте ее и запустите, последовательно выбирайте Вид  «Российская Федерация», темы «Москва» и «Административные регионы». Выполните расчёт расстояний в разных проекциях карты. Сравните результаты.

 

Тема 15. Основы программирования на Avenue

                        Когда пользователь вызывает различные опции с помощью интерфейса пользователя, на самом деле он запускает на исполнение системные программы ArcView 3.2, которые написаны на языке Avenue. Как мы уже убедились, пользователь имеет возможность сам писать программы в окне Редактора скриптов и сохранять эти программы во внешних файлах с расширением «ave». Он может также внедрить эти программы в состав системных, хотя это совершенно необязательно: чтобы программу можно было запускать на исполнение необходимо её наличие в списке документов проекта. Разумеется, программа должна быть откомпилирована. Текст программы хранится в проекте, соответственно записывается в файл проекта с расширением «apr», и, как указано выше, может сохраняться в файле с расширением «ave», что не является обязательным. Алгоритмический язык Avenue создан на принципах объектно-ориентированного программирования.

                        Немного обсудим эти принципы. Для этого необходимо вкратце коснуться истории программирования. После изобретения первых цифровых электронно-вычислительных машин первое время программы представляли собой последовательности команд в двоичном коде, что требовало глубоких специальных знаний и больших затрат времени при их разработке. Затем был изобретён язык Assembler, на котором команды для ЭВМ записывались в мнемоническом коде. Эту программу с помощью программы транслятора Ассемблера необходимо перевести в последовательность исполняемых машинных кодов. Ассемблер требует от программиста определить, в каких областях памяти машины держать ту или иную информацию. Поэтому Ассемблер называется языком низкого уровня: он ближе всего к уровню компьютера. Это делает программу очень громоздкой при написании, но зато обеспечивает максимум быстродействия и экономии ресурсов памяти ЭВМ. Затем были изобретены языки высокого уровня, в которых задача распределения информации в памяти машины была «переложена на плечи» самого компьютера. Это сильно упростило написание программ и объём их текстов, но увеличило затраты памяти и снизило быстродействие машины. Если сравнить программиста с главнокомандующим, а программу ЭВМ с выполнением боевой задачи его армией, то в Ассемблере главнокомандующему приходится отдавать приказ каждому рядовому. На языках высокого уровня «приказы отдаются генералам и офицерам»: одна команда на этом языке на уровне компьютера превращается в десятки и сотни команд в исполняемых машинных кодах. Языки высокого уровня подразделяются на языки интерпретирующего и компилирующего типов. В первом случае отдельная команда языка переводится в исполняемый машинный код в памяти машины и выполняется. Таким образом, программа выполняется по отдельным шагам: загрузка команды, перевод в машинный код и исполнение, загрузка следующей команды и т.д. Программа запускается на выполнение из программного пакета, для которого этот язык разработан. Файл последовательностей исполняемых машинных кодов с расширением «exe» в данном случае не образуется. В случае языка компилирующего типа вся программа переводится в последовательность исполняемых машинных кодов, которая записывается в большинстве случаев в файл с расширением «exe». Для запуска этой программы необходимо только наличие операционной системы, а в ряде случаев – ещё и файлов динамически подключаемых библиотек с расширением «dll». Можно привести такой пример. Допустим, Вам необходимо выступить с докладом на научной конференции, рабочий язык которой нам не известен. Можно произнести доклад по-русски, а переводчик-синхронист будет переводить Ваш доклад фразу за фразой. А можно перевести свой доклад ещё дома и произнести его на иностранном языке самому (разумеется, необходимо доеобходимо дбиться маол-мальски (разумеется, знести  выступить с докладом на научной конференции, рабочий язык которой нам не избиться мало-мальски приемлемого произношения). Первый случай иллюстрирует работы программы на языке интерпретирующего типа, второй – компилирующего.

                        Сначала языки высокого уровня разрабатывались на принципах структурного программирования. В этом случае идентификаторы сущностей (переменных) и действия программы (операторы, команды, функции) отделены друг от друга. Однако ещё в языках структурного типа (например, в Паскале) появился тип переменных запись, в которой одна сущность может включать в себя свои разнотипные параметры. Например, имя, отчество, фамилию, год рождения человека и т.д. Когда в состав параметров сущности включили методы её обработки, то появился объектно-ориентированный подход программирования.

                        Стандарт объектно-ориентированного программирования зиждется на «трёх китах»: инкапсуляции, наследовании и полиморфизме.

Инкапсуляция означает соединение в объекте программы сущности (например, координат и мерности пространственного объекта) и методов её обработки.

Наследование означает, что объект программы может порождать объекты-потомки, которые наследуют характеристики объекта-родителя. Так, при запуске на компьютере программного пакета ArcView 3.2 в памяти компьютера создаётся объект приложение ArcView, которое на языке Avenue обозначается av. Этот универсальный объект содержит в себе все объекты интерфейса пользователя и текущего проекта. Обращаясь к нему и его потомкам, можно «добраться» до любых используемых в проекте документов и данных. Разумеется, если программа должна работать с пространственными данными, то её можно строить от обращения к активной теме открытого Вида, однако наиболее универсальным является построение программы Avenue от обращения к объекту av, возвращающего открытый проект ArcView 3.2 (вспомним, что открыт может быть только один проект и мы не можем работать в ArcView 3.2  вне проекта): theProject=av.GetProject. Здесь мы видим инкапсуляцию: объект av содержит в себе методы обработки, в данном случае метод GetProject, возвращающий текущий проект в объект theProject. Последний наследует часть характеристик объекта av, касающуюся документов открытого проекта.

Полиморфизм означает, что благодаря применению к одному и тому же объекту различных методов мы будем получать представление объекта в разных формах, отражающих его различные характеристики.

            Затем в программе следует получить список DocList всех документов проекта: DocList=theProject.GetDocs. Объект типа список (List) представляет собой упорядоченную последовательность каких-либо объектов, возможно, совершенно разнотипных. Чтобы получить необходимый элемент списка, нужно указать его порядковый номер. Номер первого элемента списка – 0! Поскольку нам неизвестно, в каком порядке компьютер расположил в списке DocList документы проекта, то нам придётся в поиске нужных организовать перебор всех. Для этого нам необходимо узнать количество элементов списка NDoc с помощью метода Count: NDoc=DocList.Count. Мы можем работать с документами различных типов: видами, таблицами, диаграммами, компоновками, скриптами (программами), диалогами. Предположим, нам необходимо работать с определённым векторным слоем (темой) электронной карты (вида). В этом случае сначала нам следует выбрать этот вид. Для этого создадим пустой список, в который затем добавим все виды проекта: ViewList=List.Make. Далее организуем цикл по всем элементам списка документов проекта. Цикл начинается с оператора for each, а заканчивается словом end. Между этими двумя операторами расположено «тело цикла», содержащее повторяющиеся операции:

for each dok in 0..(NDoc-1)

    tekdoc=DocList.Get(dok)

    tipdoc=tekdoc.GetGUI

    if (tipdoc="View") then

        ViewList.Add(tekdoc)

    end

end

Переменная dok принимает целочисленные значения от 0 до величины NDoc-1, поскольку если общее число элементов списка равно NDoc, а номер первого элемента – 0, то номер последнего будет на единицу меньше общего количества. В переменную (объект)  tekdoc на каждом шаге цикла поступает текущий элемент списка документов проекта. Затем необходимо определить тип этого документа. Однако названия конкретных документов не отражают тип документа. Здесь нам поможет то обстоятельство, что при открытии документов различных типов интерфейс пользователя принимает соответствующий характерный вид. Метод GetGUI, применённый к любому документу проекта возвращает строковый объект, в котором записано, какому типу документов проекта соответствует графический интерфейс пользователя (Grapher User Interface), связанный с данным документом проекта. Возможные типы ответов: «View», «Table», «Chart», «Layout», «Scripts», «Dialog». Оператор условного перехода «if» выполняет набор операторов между строкой  «if (выражение) then» и строкой «end» только в том случае, если выражение является истинным. В данном случае если графический интерфейс пользователя имеет тип «View», то текущий документ добавляется в список видов.

Теперь нам необходимо выбрать из списка видов нужный. Современные интегрированные среды разработки приложений имеют инструмент для визуального конструирования экранных форм. ArcView 3.2 лишён этой возможности, она появляется в ArcGIS. Вместо этого в Avenue имеются объекты для создания готовых диалоговых окон, в частности MsgBox. Применение к нему метода List позволяет пользователю выбрать элемент списка. У этого оператора следующий синтаксис: в скобках сначала помещается идентификатор списка, затем – маска для выбора объектов (например, если в списке слоёв необходимо выбирать только шейпфайлы, то маска будет "*.shp"), если маска не нужна, то ставится "", затем – титул, т.е. название вверху окна диалога (тоже не обязательно). В нашем случае: theView=MsgBox.List(ViewList, "", "Выберите Вид"). Теперь объект theView содержит тот Вид, в котором содержится интересующий нас слой (Тема).

Следовательно, необходимо получить эту Тему. Сначала получаем список всех слоёв (тем) Вида (электронной карты):  list_of_themes=theView.getThemes. Далее с помощью стандартного диалога выбираем слой: theTheme = MsgBox.List(list_of_themes, "*.shp", "Выберите векторную тему"). До любых данных векторных слоёв можно добраться только через таблицу атрибутов темы Ftab. Это подкласс виртуальных таблиц Vtab. Виртуальными таблицы называются потому, что они формируются из различных файловых источников в памяти машины и их невозможно записать в отдельный файл стандартного формата баз данных. Между ними следующая разница: Ftab содержит, а Vtab – не содержит поле Shape пространственных данных. При работе с Ftab ГИС обращается к данным, содержащимся в файле с расширением «shp» или к файлам покрытия ArcInfo. Разумеется, ГИС обращается также и к файлам, содержащим семантические данные, и к файлам, обеспечивающим взаимосвязь пространственной и семантической информации (для шейпфайлов это файлы с расширением shx). Таблица Vtab формируется только из файлов, содержащих семантическую информацию в реляционных таблицах. Синтаксис работы с обоими типами виртуальных таблиц практически одинаков, есть различия в создании таблиц.

            Если мы работаем с таблицей типа Ftab, то для получения существующей таблицы следует применить метод GetFtab к векторному слою (теме): theFtab = theTheme.GetFtab. Для возможности получения интересующих данных из записей таблицы сначала нужно создать объект – значение определённого поля в конкретной записи. Например, создание идентификатора поля Shape выполняется так: theShapeField = theFtab.FindField("Shape").

Мы можем работать с уже существующей таблицей типа Ftab, при этом сделать её редактируемой и создать в ней новые семантические поля для записи результатов. Чтобы сделать таблицу редактируемой, следует ввести в программу следующий оператор: «Идентификатор данной таблицы типа Ftab».SetEditable(true). Далее следует создать пустой список новых полей, например: fields = List.Make, последовательно добавить в него вновь создаваемые поля в соответствии со следующим синтаксисом: fields.Add(Field.Make("Название поля", Тип поля, Общая ширина поля в знаках, Число знаков после запятой)). Для нечисловых полей число знаков после запятой всегда равно нулю. Например: fields.Add(Field.Make("Rasst_km", #FIELD_DECIMAL , 8, 2)). Далее следует добавить вновь созданные поля в таблицу: «Идентификатор данной таблицы типа Ftab».AddFields(«Идентификатор списка полей») и создать идентификаторы для новых полей таблицы.

            Если Вам необходимо поработать с данными какого-либо векторного слоя проекта, то объект типа Ftab создаётся, как показано выше, путём запроса GetFtab к соответствующей теме. В принципе возможен случай, когда Вам нужно обработать данные каких-либо шейпфайлов или покрытий, которые не образуют тем проекта, но Вам точно известно их местоположение и Вы не хотите добавлять их в качестве слоев в Виды проекта. Такая ситуация может иметь место при обработке большого количества однотипных шейпфайлов или покрытий. В этом случае объект типа Ftab создаётся с помощью метода Make:

«Идентификатор создаваемой таблицы Ftab». Make(«Идентификатор Источника данных – объекта типа SrcName»). Последний создаётся в соответствии следующим образом:

«Идентификатор объекта типа SrcName» = SrcName.Make («Объект типа строка (String), указывающий полный путь к источнику данных, начиная от диска»).

            Часто приходится создавать совершенно новый слой. В этом случае объект типа Ftab создаётся с помощью метода MakeNew. Применение этого метода к уже существующей таблице уничтожает все данные, он применяется исключительно для создания новых таблиц: «Идентификатор новой таблицы FTab» =  FTab.MakeNew («Идентификатор объекта типа FileName», «Класс пространственных объектов создаваемой таблицы»). Объект типа FileName – это представление имени создаваемого шейпфайла. Он может быть создан с помощью метода Make: «Идентификатор объекта типа FileName». Make («Идентификатор объекта типа FileString»). В свою очередь идентификатор объекта типа FileString представляет собой имя создаваемого файла с полным путём к нему. Другой способ создания объекта типа FileName – с помощью метода AsFileName, который преобразует строку в этот объект. Пространственные объекты могут быть следующих классов: Point, PolyLine, Polygon или MultiPoint.

            Иногда есть необходимость создания таблицы типа Vtab – просто реляционной таблицы формата dBASE или текстового, в которую будут записаны результаты анализа векторных слоёв Вида. Создание новой таблицы типа Vtab производится методом MakeNew:

«Идентификатор создаваемого объекта типа Vtab». MakeNew («Название нового файла типа FileName», «Тип файла создаваемой таблицы»). Тип создаваемого файла может быть dBASE, INFO (формат ArcInfo), или DText (текстовой файл).

            Рассмотрим ключевые части кода ещё нескольких весьма полезных программ. Часто возникает необходимость создания слоя типа PolyLine по последовательности точечных объектов. Вообще данная программа была создана одним из авторов данного пособия (В.Ю. Третьяковым) для возможности визуализации результатов специальных ледовых наблюдений, но точно такая же ситуация наблюдается при обработке полевых маршрутов. При выполнении маршрута фиксируются точки поворота и точки смены условий (ландшафтных, биогеографических, почвенных таксонов и т.п.). Координаты точек определяются с помощью систем спутниковой навигации. Далее по ним создаётся тема событий, каждая точка которой является отдельным объектом, семантические характеристики которой отражают условия до следующей точки.

Основной фрагмент программы создания темы линий из темы отдельных точек

Начало программы – «традиционное»: выбор в диалоговом режиме Вида, а в нём – темы точек pointTheme, получение из неё таблицы атрибутов pointFtab.

pointFtab=pointTheme.getftab

pointShape=pointFtab.findfield("Shape")

pointSrcName=pointFTab.GetSrcName

Получение источника таблицы

str_pointFileName=pointSrcName.GetName

Получение имени файла источника

StrLineName="line_"+str_pointFileName

Создание имени нового файла. Разумеется, можно имя нового линейного файла задавать в диалоговом режиме, однако предлагаемый способ сохраняет преемственность имён файлов.

PointFieldsList=pointFtab.GetFields

Создание списка полей темы точек

nPointFields=PointFieldsList.Count

Определение числа полей в списке

LineFieldsList=PointFieldsList.DeepClone

Глубокое клонирование списка

полей. Глубокое клонирование создаёт копию не только самого списка, но и каждого его элемента, чем отличается от простого клонирования. Оно нам необходимо для создания списка полей новой линейной темы, т.к. линейные объекты должны наследовать семантику точечных объектов

LineFieldsList.Remove(0)

Убираем первое поле – Shape, т.к. в новой таблице оно будет создано

AtrNamesList=List.Make

Создание списка имен атрибутивных полей

IdenList=List.Make

Создание списка идентификаторов атрибутивных полей

for each pole in 1..(nPointFields-1)

Цикл по всем атрибутивным полям таблицы точек, первое поле Shape пропущено

   tekpole=PointFieldsList.Get(pole)

Получение текущего поля из списка

   tekName=tekpole.AsString

Превращение его в строковый объект

   AtrNamesList.Add(tekName)

Добавление имени поля в список имен атрибутивных полей

   iden=pointFtab.findfield(tekName)

Получение идентификатора текущего поля

   IdenList.Add(iden)

Его добавление в списка идентификаторов атрибутивных полей

end

Конец цикла

nIdenList=IdenList.Count

Подсчёт числа идентификаторов. Создание новой темы объектов Line (т.е. прямых отрезков) с атрибутикой Point

lineName=StrlineName.AsFileName   

Создание объекта «имя файла»

lineName.SetExtension("shp")

Задание ему расширения "shp"

lineFTab = FTab.MakeNew(lineName, Polyline)

Создание новой атрибутивной таблицы объектов типа Polyline: каждый из них будет состоять из одного объекта Line

nlinefields=LineFieldsList.Count

Подсчёт числа полей в списке атрибутивных полей новой таблицы линейных объектов

lineFTab.AddFields(LineFieldsList)

Добавление списка атрибутивных полей в новую атрибутивную таблицу линейных объектов

lineShape = lineFTab.FindField("Shape")

Получение идентификатора поля Shape новой атрибутивной таблицы линейных объектов

IdenLineList=List.Make

Создание листа идентификаторов атрибутивных полей для новой темы

for each pole in 0..(nLineFields-1)

Начало цикла по всему списку атрибутивных полей создаваемой линейной темы

   teklinepole=LineFieldsList.Get(pole)

Получение текущего поля из списка

   teklineName=teklinepole.AsString

Получение имени поля как строкового объекта

   lineiden=lineFtab.findfield(teklineName)

Получение идентификатора этого поля

   IdenLineList.Add(lineiden)

Его добавление в лист идентификаторов

end

Конец цикла  

nIdenLineList=IdenLineList.Count

Определение числа идентификаторов атрибутивных полей новой линейной темы

Spis_List_V_in_rec=List.Make

Создание списка списков значений атрибутивных полей

Points=List.Make

Создание списка точечных объектов

for each rec_point in pointftab

Начало цикла по записям таблицы точечной темы

   List_V_in_rec=List.Make

Создание списка значений атрибутивных полей в данной записи

   for each atrpole in 0..(nIdenList-1)

Начало цикла получения значений полей записи

       tekiden=IdenList.Get(atrpole)

Получение текущего идентификатора поля

       tekzn = pointFtab.returnvalue(tekiden, rec_point)

Получение значения поля

       List_V_in_rec.Add(tekzn)

Его добавление в список значений полей записи

   end

Конец цикла по полям 

   obj_point = pointftab.returnvalue(pointShape,  

   rec_point) 

Получение объекта - точки

   Points.Add(obj_point)

Добавление точки в список точек

   Spis_List_V_in_rec.Add(List_V_in_rec)

Добавление списка значений атрибутивных полей текущей записи в список

end

Конец цикла по записям таблицы точечной темы

npoints=Points.Count

Определение числа точек

for each tochka in 0..(npoints-2)

Начало цикла по точкам списка от первой до предпоследней

   ntochka=Points.Get(tochka)

Получение текущей точки – начальной точки объекта Line

   ktochka=Points.Get(tochka+1)

Получение следующей точки – конечной точки объекта

   linia=PolyLine.Make({{ntochka,ktochka}})

Создание линии

   rec_line=lineFTab.AddRecord

Добавление новой записи в таблицу линейных объектов

   lineFTab.SetValue(lineShape, rec_line, linia)

Запись в поле Shape таблицы созданной линии

   tekznachlist=Spis_List_V_in_rec.Get(tochka)

Получение списка значений атрибутивных полей

   ntekznlst=tekznachlist.Count

Определение числа значений в списке                       

   for each atrpole in 0..(nIdenLineList-2)

Начало цикла по идентификаторам атрибутивных полей линейной темы

      tekpolelin=LineFieldsList.Get(atrpole)

Получение текущего поля

      teklineiden=IdenLineList.Get(atrpole)

Получение идентификатора текущего поля

      znach=tekznachlist.Get(atrpole)

Получение значения текущего поля

      pole_class = tekpolelin.GetType

Получение типа текущего поля

      if ((Pole_class=#FIELD_BYTE) or  

          (Pole_class=#FIELD_DECIMAL) or

          (Pole_class=#FIELD_DOUBLE) or

          (Pole_class=#FIELD_FLOAT) or

          (Pole_class=#FIELD_LONG) or

          (Pole_class=#FIELD_SHORT)) then

                lineFTab.SetValueNumber

                (teklineiden,rec_line,znach)

Запись значения в таблицу линейной темы в зависимости от типа поля

      else 

          lineFTab.SetValue(teklineiden,rec_line,znach)

      end

 

   end

Конец цикла по идентификаторам

end

Конец цикла по точкам списка

lineFTab.Flush

Запись составляющих атрибутивной таблицы линейной темы в файлы

lineFTab.Refresh

Обновление таблицы по данным на диске

lineName = lineName.AsString

lineSrcName = SrcName.Make(lineName)

lineTheme = Theme.Make( lineSrcName )

lineThemeName = lineSrcName.GetName

nsimv=lineThemeName.Count

Создание линейной темы и её добавление в Вид

lineThemeName = lineThemeName.Left(nsimv-4)

lineTheme.SetName(lineThemeName)lineThemeName

Убираем в названии темы расширение

theView.AddTheme(lineTheme)

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

lineTheme.SetVisible(true)

Установка её видимой 

theView.Invalidate

Обновление изображения Вида

 

Иной встречающийся случай: по последовательности точек создать полигон. Здесь программа существенно упрощается, так как нет необходимости копирования значений семантических полей. Здесь просто следует создать хотя бы одно семантическое поле, например, строковое и записать потом в него идентификатор полигона, например, задаваемый с помощью диалогового окна MsgBox и метода Input: «Идентификатор введённого строкового значения» = MsgBox. Input(«Строка подсказки», «Заголовок диалогового окна», «Строковое значение по умолчанию»). Синтаксис создания полигона ничем не отличается от создания линейного объекта.

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

            Рассмотрим программу создания темы линейных объектов с характеристиками пересекаемых объектов площадной темы и сохранением полей исходной линейной темы.  «Традиционное» начало программы опущено.

Программа пересечения линии и площадных объектов

Theme1 = MsgBox.List(list_of_themes, "*.shp",

"Выберите тему 1")

Ftab1=Theme1.getftab

 

FieldsList1=Ftab1.GetFields

nFields1=FieldsList1.Count

создаем список полей 1-ой темы

IdenList1=List.Make

for each pole in 1..(nFields1-1)

   tekpole=FieldsList1.Get(pole)

   tekName=tekpole.AsString

   iden=Ftab1.findfield(tekName)

   IdenList1.Add(iden)

end

Shape1=Ftab1.findfield("Shape")

создание листа идентификаторов атрибутивных полей

List1=List.Make

создание листа объектов темы 1

SpisListAtr1=List.Make

for each rec_1 in ftab1

   obj1 = ftab1.returnvalue(Shape1, rec_1)

   List1.Add(obj1)

создание списка позаписных списков значений атрибутивных полей темы 1

   List_V_in_rec=List.Make

   for each pole in 0..(nFields1-2)

      tekiden=IdenList1.Get(pole)

      tekzn = ftab1.returnvalue(tekiden, rec_1)

      List_V_in_rec.Add(tekzn)

   end

   SpisListAtr1.Add(List_V_in_rec)

end

nsumobs=List1.Count

создание списка значений атрибутивных полей в данной записи

SumFieldsList=FieldsList1.DeepClone

глубокое клонирование списка полей первой темы

SumFieldsList.Remove(0)

убрали первое поле - Shape

SumIdenList=IdenList1.DeepClone

глубокое клонирование списка идентификаторов полей первой темы

SumObjList=List1.DeepClone

глубокое клонирование списка объектов первой темы

SumSpisListAtr=SpisListAtr1.DeepClone

skl=1

sech=true

while (true)

   if (skl>1) then

      sech=MsgBox.YesNo("Пересечь с очередной темой?",   

               "Пересечение плошадных тем", true)

   end

   if (not sech) then

      break

   end

   Theme2 = MsgBox.List(list_of_themes, "*.shp",

                    "Выберите тему 2")

   Ftab2=Theme2.getftab

глубокое клонирование списка позаписных списков значений атрибутивных полей темы 1

   FieldsList2=Ftab2.GetFields

   nFields2=FieldsList2.Count

создаем список полей 2-ой темы

   CopyFieldsList2=FieldsList2.DeepClone

глубокое клонирование списка полей второй темы

   CopyFieldsList2.Remove(0)

убрали первое поле – Shape

   IdenList2=List.Make

   for each pole in 1..(nFields2-1)

      tekpole=FieldsList2.Get(pole)

      tekName=tekpole.AsString

      iden=Ftab2.findfield(tekName)

      IdenList2.Add(iden)

   end

   Shape2=Ftab2.findfield("Shape")

создание листа идентификаторов атрибутивных полей

   List2=List.Make

создание листа объектов темы 2

   SpisListAtr2=List.Make

   for each rec_2 in ftab2

      obj2 = ftab2.returnvalue(Shape2, rec_2)

      List2.Add(obj2)

создание списка позаписных списков значений атрибутивных полей темы 2

      List_V_in_rec=List.Make

      for each pole in 0..(nFields2-2)

         tekiden=IdenList2.Get(pole)

         tekzn = ftab2.returnvalue(tekiden, rec_2)

         List_V_in_rec.Add(tekzn)

      end

      SpisListAtr2.Add(List_V_in_rec)

   end

   nobs2=List2.Count

создание списка значений атрибутивных полей в данной записи

   n_el_splatr1=SumSpisListAtr.Count

создание списка пересеченных объектов определение числа элементов списка позаписных списков значений атрибутивных полей темы 1

   nsumf=SumFieldsList.Count

определение числа полей

   PeresekObjList=List.Make

создание списка пересеченных объектов

   SpisListPerAtr=List.Make

создание списка позаписных списков значений атриб. полей пересеченных объектов

   sovm=false

   for each obs in 0..(nsumobs-1)

      sum_ob=SumObjList.Get(obs) 

      for each ob2 in 0..(nobs2-1)

         them2_ob=List2.Get(ob2)

         AreaSect=sum_ob.ReturnIntersection(them2_ob)

         prov1=AreaSect.IsEmpty

         if (prov1=false) then

            if (sovm=false) then

                  sovm=true

            end

проверка пересечений объектов суммарного списка с объектами новой темы

            AreaSectList=AreaSect.Explode

            N_polig=AreaSectList.Count

            if (N_polig=1) then

               PeresekObjList.Add(AreaSect)

            else

               for each kusok in 0..(N_polig-1)

                  PoligPart=AreaSectList.Get(kusok)

                  PeresekObjList.Add(PoligPart)

              end

            end

проверка полученного полигона на многосвязность

            for each lst in 0..(n_el_splatr1-1)

               if (lst=obs) then        

                  TekAtrZnList1=SumSpisListAtr.Get(lst)

               end

            end

получение списка значений атрибутивных полей суммарной темы

            for each lst in 0..(nobs2-1)

               if (lst=ob2) then        

                  TekAtrZnList2=SpisListAtr2.Get(lst)

               end

            end

получение списка значений атрибутивных полей пересекаемой темы

           AddAtrZnList=TekAtrZnList1+TekAtrZnList2

сложение двух списков

           CopyAddAtrZnList=AddAtrZnList.DeepClone

           for each kusok in 0..(N_polig-1)

              SpisListPerAtr.Add(CopyAddAtrZnList)

           end

         end

     end

   end

   skl=2

глубокое клонирование суммарного списка

   if (sovm=true) then

пересоздание суммарных списков

      SumObjList.Empty

      SumObjList.Merge(PeresekObjList)

      nsumobs=SumObjList.Count

пересоздание списка объектов

      SumSpisListAtr.Empty

      SumSpisListAtr.Merge(SpisListPerAtr)

пересоздание списка позаписных списков значений атриб. полей

      CopyIdenList2=IdenList2.DeepClone

      SumIdenList.Merge(CopyIdenList2)

пересоздание списка идентификаторов полей

      SumFieldsList.Merge(CopyFieldsList2)

   end

end

пересоздание списка полей

nsumf=SumFieldsList.Count

 

определение числа полей

nsumobs=SumObjList.Count

определение числа объектов

defaultName="пересек.shp"

defaultName=defaultName.AsFileName

SumName=FileDialog.Put(defaultName,"*.shp","Результирующий суммарный шейпфайл")

if (SumName = nil) then

  exit

end

SumName.SetExtension("shp")

SumFTab = FTab.MakeNew(SumName,Polyline)

SumFTab.AddFields(SumFieldsList)

SumShape=SumFtab.findfield("Shape")

создание новой темы объектов пересечения с суммарной атрибутикой

IdenSumList=List.Make

for each pole in 0..(nsumf-1)

   teksumpole=SumFieldsList.Get(pole)

   teksumName=teksumpole.AsString

   sumiden=SumFtab.findfield(teksumName)

   IdenSumList.Add(sumiden)

end

создание листа идентификаторов атрибутивных полей для новой темы

for each obs in 0..(nsumobs-1)

   per_obj=SumObjList.Get(obs)

   rec_sum=SumFTab.AddRecord

   SumFTab.SetValue(SumShape,rec_sum,per_obj)

   tek_ListAtrZn=SumSpisListAtr.Get(obs)

   for each pole in 0..(nsumf-1)

      tekpolesum=SumFieldsList.Get(pole)

      znach=tek_ListAtrZn.Get(pole)

      teksumiden=IdenSumList.Get(pole)

      pole_class=tekpolesum.GetType

      if ((Pole_class=#FIELD_BYTE) or     

          (Pole_class=#FIELD_DECIMAL) or

          (Pole_class=#FIELD_DOUBLE) or

          (Pole_class=#FIELD_FLOAT) or

          (Pole_class=#FIELD_LONG) or

          (Pole_class=#FIELD_SHORT)) then

                SumFTab.SetValueNumber(teksumiden, rec_sum, znach)

      else 

                SumFTab.SetValue(teksumiden, rec_sum, znach)

      end

   end

end

заполнение записей новой темы

SumFtab.Flush

strSumName = SumName.AsString

SumSrcName = SrcName.Make(strSumName )

if (SumSrcName = nil) then

    msgbox.Error( "Invalid SrcName", "")

    exit

end

SumTheme = Theme.Make(SumSrcName)

theView.AddTheme(SumTheme)

SumTheme.SetVisible(true)

theView.Invalidate

 

 

Задание № 15.1.

      Работаем с копией проекта с:\esri\esridata\russia.apr. Предположим, планируется прокладка газопроводов:

  1. Надым – Нумто – Селиярово - Цингалы – Тобольск – Тюмень;
  2. Яптиксале – Лаборовая – Хальмер-Ю – Хорей-Вер – Нарьян-Мар – Архангельск.

Построить их маршруты на карте программным способом.

  1. Построить программно полигон по точкам: Великий Новгород – Вологда – Ярославль – Владимир – Тверь – Смоленск – Псков - Великий Новгород.

 

Тема 16. Редактирование интерфейса проекта

            Как мы уже выяснили, пользователь имеет возможность создания своих скриптов (программ на языке Avenue) в проекте или добавления в проект уже готовых скриптов. Однако запускать скрипты на исполнение из Редактора скриптов не слишком удобно. С другой стороны, гордое, и, в общем-то, верное заявление студента на защите его работы: «Мною разработана ГИС (например, по оценке экологического состояния реки Охты)» часто вызывает недоумение у членов комиссии: ведь не сам же студент создал ArcView 3.2! Чтобы не вызывать подобных нареканий, лучше говорить: «Мною создан ГИС-проект». Однако ArcView 3.2 позволяет пользователю создавать для своих проектов уникальные графические интерфейсы пользователя взамен стандартных, загружаемых по умолчанию, что покажет наличие собственных интеллектуальных достижений.

            Для этого следует при активном окне проекта открыть ниспадающее меню «Проект», а в нём – опцию «Адаптировать». На экране появится диалоговое окно «Настроить». С его помощью Вы можете убирать из интерфейсов существующие меню и кнопки и добавлять новые. Предположим, Вы хотите добавить в интерфейс проекта кнопку, при наведении на которую курсора и нажатии левой клавиши манипулятора «мышь» на выполнение запускалась бы определённая программа. В этом случае в ниспадающем списке «Тип» следует оставить элемент «Project». Это означает, что кнопка будет добавлена в интерфейс, существующий на экране при активном окне проекта. Естественно, Вы можете выбрать в этом списке элемент «View» в этом случае кнопка будет добавлена в интерфейс, появляющийся на экране при открытии одного из Видов проекта. Разумеется, это справедливо и для остальных типов документов ArcView 3.2. Затем в списке «Категория» выберите элемент «Кнопки». В длинной «прорези» диалогового окна будут представлены уже существующие кнопки Панели Инструментов данного интерфейса. Ниже её расположена кнопка «Новая». Нажмите её. В прорези появится кнопка без символов. Внизу диалогового окна расположен перечень характеристик и методов этой кнопки. Наведите курсор в правое пустое поле строки метода «Click» и дважды нажмите левую клавишу манипулятора «мышь». На экране появится диалоговое окно «Диспетчер программ», в списке прокрутки которого в алфавитном порядке (вернее, в порядке  ASCII кодировки) будут расположены все системные программы и откомпилированные программы Редактора скриптов. Выберите название программы, которая должна будет запускаться на исполнение при нажатии на создаваемую кнопку: наведите на него курсор и нажмите левую клавишу манипулятора «мышь» строчка этой программы станет чёрной. Затем нажмите кнопку «ОК». В правое поле строчки «Help» можно занести разъясняющую надпись, которая будет появляться внизу интерфейса при наведении на кнопку курсора. Для этого также следует навести курсор на правое поле этой строчки и дважды нажать левую кнопку «мыши»: появится окно ввода текста «Help», в которое можно ввести подсказку. Аналогично с помощью наведения курсора на правое поле строчки «Icon» и двойного нажатия левой кнопки «мыши» появится «Диспетчер значков», позволяющий поместить на создаваемой кнопке символ из списка прокрутки. Если ни один из символов не удовлетворяет, то нажмите кнопку «Загрузить» на экране появится диалоговое окно «Загрузить значок», с помощью которого можно украсить кнопку изображением из графического файла нескольких типов, среди которых форматы «gif», «tif» и «bmp». Удаление кнопок из интерфейса, естественно, производится с помощью кнопки «Удалить», нажатие на которую приводит к удалению активной кнопки. Кнопка «Разделитель» вставляет промежутки между кнопками.

            Однако для целого набора инструментов лучше подойдёт ниспадающее меню. Для этого в списке «Категория» выберите элемент «Меню», затем сделайте активным то из уже существующих меню, правее которого Вы хотите вставить создаваемое. Нажмите кнопку «Новое меню»: в списке прокрутки меню появится новое с задаваемым по умолчанию именем «Меню». Чтобы изменить его на поясняющее суть набора инструментов, следует традиционным способом изменить содержимое правого поля строки «Label». После этого последовательно вводите опции (элементы) нового меню нажатием кнопки «Новый элемент». Все новые опции меню будут получать наименование «Item». Это название также изменяется с помощью значения в строке «Label». Определение программы, запускаемой при наведении на опцию курсора и двойном нажатии левой кнопки «мыши», как и для кнопок, производится с помощью установки имени выполняемой программы в правом поле строки «Click».


Задание № 16.1.

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

 

Заключение

            Вы познакомились с рядом возможностей, предоставляемых ГИС ArcView 3.2. Это очень хороший инструмент для обработки данных, размещенных на локальном компьютере. Но для выхода в океан сетевой информации он не годится. Здесь нужен сетевой инструмент – ArcGIS. Сказанное отнюдь не умаляет достоинств ArcView 3.2 – ведь для исследований, например, Охтинского водохранилища великолепно подходит моторная лодка типа «Казанка», хотя для выхода в открытое море нужно судно гораздо крупнее, которое невозможно использовать на водохрпанилище.

 

Рекомендованная литература

Третьяков В.Ю. Методические указания по дисциплине «Геоинформационные системы» для высших учебных заведений. СПб.: изд. РГГМУ, 2001. 63 с.

Третьяков В.Ю. Методическое пособие «Геоинформационные системы (ГИС)». СПб: изд. СПбГУ, 2005. 16 с.
СОДЕРЖАНИЕ

Стр.

Введение……………………………………………………………………………………..3                      

Тема 1. Знакомство с ГИС ArcView 3.2……………………………………………………4

Тема 2. Работа с семантическими характеристиками……………………………………14

Тема 3. Геокодирование……………………………………………………………………20

Тема 4. Работа с модулем «Мастер пространственных операций»……………………..22

Тема 5. Выбор темой и создание буферных зон………………………………………… 27

Тема 6. Координатные темы событий…………………………………………………….34

Тема 7. Связывание и соединение таблиц……………………………………………….. 40

Тема 8. Гриды. Пространственная интерполяция. Изолинии…………………………...45

Тема 9. Запросы к гридам. Опции модуля Spatial Analyst……………………………….50

Тема 10. Маршрутные линейные слои и маршрутные темы событий………………….65

Тема 11. Диаграммы и локализованные диаграммы……………………………………..77

Тема 12. Горячие связи…………………………………………………………………….86

Тема 13. Географическая привязка растровых карт……………………………………..88

Тема 14. Картометрические операции……………………………………………………91

Тема 15. Основы программирования на Avenue………………………………………..100

Тема 16. Редактирование интерфейса проекта………………………………………….111

Заключение………………………………………………………………………………..113

Рекомендованная литература…………………………………………………………….113


 

 

 


Учебное издание

 

 

 

 

 

 

 

 

Виктор Юрьевич Третьяков

Денис Евгеньевич Селезнев

 

 

 

 

 

 

 

Применение ГеоИнформационных

Систем в геоэкологических

исследованиях. Часть 1

 

 

 

 

 

 

 

 

 

 

Учебно-методическое пособие

 

 

 

 

 

 

Редактор:                                       О.С. Крайнова.

 

 

 

 

 

 

ЛР №  020309  от 30.19.96.

 

 

Подписано в печать ……..     Формат 60901/16                  Бумага кн.-жур.                      Печать офсетная.

 

Печ. л. ……..                               Уч.-изд. л. ………..               Тираж 300 экз.                   Зак. …

 

 

195196, СПб, Малоохтинский пр. 98. РГГМУ.

 

Отпечатано ………….

 

 

Hosted by uCoz