Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ГИС.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
2.66 Mб
Скачать

Решение технологических проблем

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

  Хранение пространственных данных. Одним из первых встает вопрос об организации хранения и внесения изменений в пространственные данные. Сложность данной проблемы заключается в объемах данных, с которыми придется оперировать; ведь речь идет не о сотне или тысяче пространственных объектов, а о сотнях тысяч и миллионах. Естественно, что нельзя подойди к решению этой проблемы упрощенно: завести линейный список объектов, при запуске программ загружать весь этот список в ОЗУ, а при сохранении записывать список из памяти компьютера на жесткий диск. При недостатке вычислительных ресурсов (производительность процессора, объём оперативной памяти), что всегда имеет место в ГИС, необходимо применить весьма изощрённые структуры данных и реализовать эффективные способы манипулирования большими объёмами данных с учётом их размещения на всех уровнях иерархии компьютерной памяти. Напомним, что реляционная модель плохо подходит для эффективного манипулирования пространственными данными.

Рассмотрим несколько вариантов организации хранения пространственных данных.

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

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

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

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

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

Рис.3

 Для определения местонахождения объекта по его номеру необходима таблица, состоящая из двух столбцов: "номер объекта", "номер сектора".

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

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

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

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

  3. необходимо вводить блокировку одновременному изменению одного объекта со стороны нескольких клиентов;

  4. создание новых объектов требует генерации уникальных идентификаторов независимо от того, какой клиент инициировал создание объекта.

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

В операционной системе Windows для использования технологии "клиент/сервер" удобнее всего использовать штатный для этой операционной системы механизм DCOM (Distributed Component Object Model), являющийся сетевым расширением технологии COM (Component Object Model). Приложение, построенное в соответствии с принципами COM, предоставляет доступ к своим функциям в виде набора интерфейсов (интерфейсом в COM называется таблица, содержащая адреса функций). DCOM позволяет общаться приложениям не только в пределах одного компьютера, но и в пределах локальной компьютерной сети.

Общая структура сервера данных ГИС и схема взаимодействия клиентов с сервером приведена на рис.4.

Рис.4

Контекст связи предназначен для обеспечения взаимодействия клиента с сервером и хранения информации, специфичной для конкретного клиента (рис.5).

Рис. 5

Диспетчер вызовов обеспечивает синхронизацию вызовов функций сервера со стороны клиентов (постановку в очередь одновременных вызовов со стороны нескольких клиентов).

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

Подсистема блокировок предназначена для предотвращения одновременного внесения изменений в один объект со стороны нескольких клиентов (рис.6).

Рис. 6

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

  1. один из клиентов посылает на сервер запрос на внесение изменений в общие данные (рис. 7а);

  2. сервер производит необходимые изменения в данных (рис. 7б);

  3. после внесения изменений сервер формирует пакет оповещений (протокол изменений) и помещает копию пакета в очередь оповещений каждого контекста связи (рис. 7в);

  4. сервер оповещает каждого клиента о поступлении оповещений посредством функций интерфейса взаимодействия с клиентом (рис. 7г);

  5. к аждый клиент получает от сервера пакеты оповещений, хранящиеся в очереди оповещения в контексте связи (при получении пакетов оповещений сервер автоматически удаляет их из очереди) (рис. 7д);

  6. каждый клиент обрабатывает полученные оповещения, приводя в актуальное состояние свои оперативные данные (рис. 7е).

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

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

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

Рис. 8

После определения структуры распределенных данных в процессе работы с данными программное обеспечение ГИС автоматически формирует пакеты изменений для всех субъектов распределенной системы (рис.9а). При помощи специальных утилит ГИС происходит обмен пакетами изменений между субъектами распределенной системы (рис.9б).

Рис. 9

Одной из ключевых проблем распределенных систем является генерация уникальных идентификаторов для новых объектов. Решить эту проблему может помочь специальный механизм идентификации объектов в распределенной среде. Все множество идентификаторов разделяется на группы идентификаторов, каждой из которых присваивается глобальный уникальный идентификатор ГУИД (генерацию таких идентификаторов обеспечивают штатные функции операционной системы Windows). Любая база данных ГИС сопровождается таблицей групп идентификаторов, элементы которых используются в базе данных (рис.10а). Идентификаторы объектов состоят из двух частей: индекса группы идентификаторов и номера идентификатора в пределах группы (рис.10б). Одна из групп идентификаторов базы данных используется для генерации новых идентификаторов (рис.10в). При переполнении номеров идентификаторов в пределах этой группы, система создает новую группу идентификаторов с новым ГУИД и сбрасывает номер объекта в пределах группы в начальное состояние. С этого момента созданная группа используется для генерации новых идентификаторов.

Рис. 10

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

Рис. 11

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

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

  1. механизм встраивания модулей расширения в ГИС (рис.12а);

  2. интерфейс прикладного программирования, обеспечивающий доступ к ключевым функциям и объектам ГИС со стороны внешних приложений (рис.12б);

  3. набор универсальных элементов управления (OCX) для встраивания функциональности ГИС в другие приложения (рис.12в);

  4. набор элементов ActiveX или классов языка Java для встраивания функций ГИС в прикладные системы, проектируемые по технологии Internet/Intranet (рис.12г).

Рис. 12