ISSN 1991-3087
Рейтинг@Mail.ru Rambler's Top100
Яндекс.Метрика

НА ГЛАВНУЮ

Описание рельефа земной поверхности с помощью реляционной модели

 

Воловиков Олег Павлович,

аспирант Кубанского государственного технологического университета,

ведущий специалист ОАО АКБ Уралсиб ЮГ-Банк, г. Краснодар.

 

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

Реальная фигура планеты, естественно, отличается от эллипсоидальной. Физическая поверхность Земли, да и любой планеты настолько сложна, что она не поддается строгому математическому описанию. Наиболее наглядное представление – карта высот этой поверхности над уровнем моря, или геоида – поверхности равного потенциала тяжести, проходящая через начало отсчета высот. Эта поверхность близка к невозмущенной поверхности водной глади океанов и сообщающихся с ними морей [1].

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

Воспользуемся часто употребимым способом задания точки на поверхности геоида при помощи угловых координат. Координаты в плоскости, перпендикулярной оси вращения планеты и проходящей через ее центр, называются долготой, а координаты в плоскости, содержащей ось вращения, называются широтой. Широта может меняться в пределах [-90…90] градусов с юга на север, а долгота в пределах [-180…180] градусов с запада на восток. Длина окружности экватора равна приблизительно 4 * 107 м [3]. Учитывая, что одна угловая секунда составляет 1/3600 градуса, а всего градусов 360, длина дуги в 1 секунду на поверхности Земли вблизи экватора будет выражаться зависимостью

L = 4 * 107 / (360 * 3600)                                                                            (1)

Используя данную формулу, длина дуги в одну угловую секунду окажется равной приблизительно равна 30,86 м. Если же использовать в качестве минимально возможного шага измерения дугу в 1/1000 секунды, то ее длина составит 0,03 метра. Этой точности должно с запасом хватить для решения любых реальных задач (естественно, это достижимо лишь при доступности такой точности в измерительных устройствах). Поставив каждой точке в окрестности минимального шага измерения значение полученной в данной точке высоты над поверхностью геоида, мы получим трехмерную карту поверхности Земли, подробно описывающую ее форму. Работа по составлению таких карт уже ведется некоторое время [2].

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

Рассмотрим отношение Landscape, схема которого приведен в таблице 1.

 

Таблица 1.

Схема отношения Landscape.

Атрибут

Тип данных

Null

Размер, байт

Комментарий

point_id

bigint

нет

8

Идентификатор записи

latitude

int

нет

4

Широта в тысячных долях секунды

longitude

int

нет

4

Долгота в тысячных долях секунды

heigth

smallint

да

2

Высота над уровнем моря в метрах

point_date

datetime

да

8

Дата измерения

next_id_e

bigint

да

8

Идентификатор соседней восточной точки

next_id_w

bigint

да

8

Идентификатор соседней западной точки

next_id_n

bigint

да

8

Идентификатор соседней северной точки

next_id_s

bigint

да

8

Идентификатор соседней южной точки

 

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

K = 648000000 / SLat * 1296000000 / SLon,                                             (2)

где SLat – шаг измерения по широте, SLon – шаг измерения по долготе. Целочисленные коэффициенты соответственно представляют количество точек по широте и долготе при максимально возможном уровне детализации в 1/1000 секунды. Так, при шаге в 1 секунду как по широте, так и по долготе суммарное количество измерений составит примерно 8,4 * 1011 (при этом точность позиционирования составит менее 30 м).

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

Для полноты представления в модель следует ввести следующие константы:

·                    min_latitude – минимальное значение широты,

·                    max_latitude – максимальное значение широты,

·                    min_longitude – минимальное значение долготы,

·                    max_longitude – максимальное значение долготы,

·                    latitude_step – шаг измерения по широте,

·                    longitude_step – шаг измерения по долготе,

·                    earth_radius – средний земной радиус.

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

Определим основные программные объекты базы данных (в целях сокращения типы данных опущены).

Пусть будут заданы следующие процедуры:

·                    insert_point(@latitude, @longitude, @heigth, @point_date), параметры соответственно: широта, долгота, высота, дата измерения. Процедура должна осуществлять вставку записи о факте измерения в отношение Landscape, проверяя координаты точки на непротиворечивость минимально и максимально возможным значениям.

·                    check_neighbours(@point_id). Единственный параметр этой процедуры задает идентификатор точки, для которой она будет определять и устанавливать идентификаторы ее соседей с каждой из 4 сторон (с запада, востока, юга и севера). В случае, если с какой-либо стороны соседняя точка не найдена, то необходимо установить null-значение. Процедура должна вызываться всякий раз после вызова процедуры insert_point.

Пусть будут заданы следующие функции:

·                    point_coordinates(@point_id) – функция, возвращающая таблицу из одной строки и двух столбцов, содержащих координаты указанной точки.

·                    find_vertex(@latitude, @longitude) – функция, возвращающая идентификатор точки по заданным координатам. Если таковой не найдено, должно быть возвращено null-значение.

·                    altitude(@point_id) – возвращает высоту поверхности в заданной точке.

После заполнения отношения Landscape путем вызова процедуры insert_point для каждого факта измерения станет возможно использование полученных данных для анализа. Например, для того чтобы определить высоту над уровнем моря в точке, координаты которой известны (и данные высоты были получены и занесены в базу), достаточно будет выполнить запрос вида

select altitude(find_vertex(@latitude, @longitude)),

где @latitude и @longitude соответственно широта и долгота задаваемой точки.

Как уже упоминалось выше, общее количество измерений для составления подробной карты высот для достаточно большой территории будет большим. Каждая запись в отношении в матрице высот занимает 58 байт, не считая служебной информации. В этом можно убедиться, просуммировав значения столбца «Размер» в таблице 1. Тогда общий объем только одного отношения Landscape может превысить значений в 1 терабайт, а это весьма много для современных систем обработки данных.

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

Определим атрибут point_id как первичный ключ отношения Landscape. Это позволит однозначно использовать значения этого поля как идентификационные и, кроме того, автоматически создаст по нему уникальный индекс. Очевидным фактом является также то, что совокупность атрибутов latitude и longitude является кандидатом на первичный ключ. Действительно, для любой точки поверхности, имеющей координаты lat (широта) и lon (долгота), не существует какой-либо другой точки (с такими же lat и lon) в данной модели. Поэтому для этих атрибутов полезно будет создать составной уникальный индекс. Эти два индекса позволят оперативно получать информацию и какой-либо точке или выбирать массив точек по заданным минимальным и максимальным значениям широты и долготы. Возможно, целесообразно также создать индексы и по остальным полям отношения, например height. Однако, не стоит забывать о том, что избыточные индексы опасны чрезмерным замедлением производительности при операциях обновления отношения [3].

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

·                    прокладка курсов в самолетовождении (навигация),

·                    расчет зоны покрытия радиосети,

·                    оптимизация маршрутов движения транспортных средств с учетом рельефа (проектирование дорог),

·                    выявление зависимостей между ландшафтом местности и предметом исследования какой-либо научной области.

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

 

Литература.

 

1. Пантелеев В.Л. Теория фигуры Земли. Московский государственный университет им. М.В.Ломоносова, Физический факультет. Курс лекций. Москва, 2000. Лекция 1.

2. Официальный сайт NASA Shuttle Radar Topography Mission: http://www2.jpl.nasa.gov/srtm/

3. Гарсиа-Молина, Гектор, Ульман, Джеффри, Д., Уидом, Дженнифер. Системы баз данных. Полный курс. – М.: Издательский дом «Вильяме», 2003. С. 584 – 592.

 

Поступила в редакцию 06.10.2008 г.

2006-2019 © Журнал научных публикаций аспирантов и докторантов.
Все материалы, размещенные на данном сайте, охраняются авторским правом. При использовании материалов сайта активная ссылка на первоисточник обязательна.