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