Применение геоинформационных систем в геоэкологических исследованиях |
Страница 43 из 49
Расчёты протяжённостей пространственных объектов в ГИС 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, в котором создаётся список Видов проекта, опущен. Перед запуском программы в Свойствах Вида уже должны быть установлены те единицы карты, в которых должны быть рассчитаны площади объектов и расстояния между объектами. Программа расчёта площадей объектов с изменениями параметров проекции Данный вариант программы осуществляет расчёт площадей на карте в Стереографической проекции, применяемой для визуализации Северного Ледовитого океана и прилегающих территорий. В случае применения программы к Видам с другой проекцией следует модифицировать программу. Если же изменениями масштаба в пределах карты можно пренебречь, то программа упрощается, из неё удаляется блок, ответственный за пересчёт параметров проекции. Выбор Вида с помощью диалогового окна:
В случае необходимости расчётов длин линейных объектов необходимо только изменить названия полей результатов и функцию ReturnArea на ReturnLength.
|