ГИС

Ольга Блинкова, Алексей Сонькин

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

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

Таким образом, когда дело касается значительных объемов информации и большого количества пользователей, хранение географических данных в СУБД становится оправданным.

MapInfo, ESRI и СУБД

Оба ключевых игрока рынка геоинформационных систем - компании MapInfo (www.mapinfo.com) и ESRI (www.esri.com) - работают с большинством известных производителей СУБД, таких, как Oracle, IBM, Informix и Microsoft.

ГИС от MapInfo совместимы с СУБД Oracle, IBM и Informix; взаимодействие с Microsoft SQL Server пока ограничено возможностью хранить только точечные объекты. По словам Бориса Рубцова, ведущего программиста российского партнера компании MapInfo “ЭСТИ-Мап”, версия SpatialWare, позволяющая хранить в MS SQL Server любые пространственные данные для ГИС MapInfo, ожидается в январе 2001 г.

Что же до геоинформационных продуктов от ESRI, то они работают с СУБД Oracle, IBM DB2, Informix и Microsoft SQL Server без всяких ограничений.

Методы хранения и извлечения пространственной информации ГИС MapInfo и ESRI в различных промышленных СУБД значительно различаются, поскольку возможности последних в плане работы с пространственными данными неодинаковы. Одна из наиболее полных реализаций системы хранения пространственных данных осуществлена при использовании объектно-реляционной СУБД компании Informix, о которой есть смысл рассказать подробнее.

Серверы баз данных Informix

Сделаем небольшой экскурс в историю создания сервера баз данных Informix Universal Server 9.x (www.informix.com/iif2000/), предназначенного для хранения любых типов данных пользователя, в том числе и географической информации (spatial.informix.com). Этот продукт был выпущен компанией Informix в 1996 г. и стал результатом слияния кодов чисто реляционного сервера Informix Dynamic Server 7.x и объектной СУБД Illustra, разработанной одноименной компанией - детищем Майкла Стоунбрейкера (Michael Stonebraker), известного в мире специалиста в области систем управления базами данных.

Illustra была великолепно реализована с объектной точки зрения, но возможности ее масштабирования хромали. Informix Universal Server объединил производительность Informix Dynamic Server 7.x и объектный подход СУБД Illustra, взяв лучшее от каждого из продуктов. Первые версии линейки 9.х, получившейся в результате слияния, позволили успешно реализовать прикладные системы для работы с большими текстовыми архивами с возможностью контекстного поиска по документам; системы хранения и распознавания отпечатков пальцев; системы хранения пространственной информации и многое другое.

В 1999 г. был выпущен новый продукт линейки Informix Universal Server - Informix Dynamic Server.2000 (компания несколько раз меняла маркетинговое название); он позиционируется как полноценный реляционный сервер баз данных, предназначенный для реализации любых ответственных приложений. Таким образом, в 1999 г. трехлетний переход к новой технологии, позволяющей, в частности, работать и с географической информацией, был завершен.

Сервер Informix Dymanic Server.2000 позволяет создавать и поддерживать принципиально новые типы данных: если в классических СУБД можно работать с полями типа integer, float, boolean и т. д., то в рамках IDS.2000 существует возможность создавать собственные пользовательские типы данных, для которых разрабатываются соответствующие функции, хранящиеся в виде разделяемых библиотек. Одна из самых интересных особенностей заключается в том, что новые функции работают в адресном пространстве сервера и, следовательно, не имеют никаких отличий от тех, что заложены в сервер изначально и доступны через SQL-интерфейс. Например, определив такой тип пространственных данных, как полигон, можно определить и функции, вычисляющие, скажем, площадь этого полигона. Для двух полигонов можно определить функции сравнения - пересекаются ли они и если да, то какова их общая часть, и т. д.

Проблемы индексирования

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

Базы очень большого объема в геоинформатике не редкость, и если запросы к ним направлять напрямую, без индексирования, то среднее время их выполнения будет астрономическим. Поэтому необходимость использования специальных методов индексирования пространственных данных является очевидной. Практически все производители систем хранения пространственной информации реализуют в своих продуктах специфические системы индексирования - такие, как Grid File, Quad-tree или R-tree.

Методы пространственного индексирования пространственной информации, хранящейся в СУБД, как правило, сводятся к делению пространства, содержащего географические объекты, на некоторые условные квадраты или прямоугольники. Такая схема позволяет при обработке запроса выполнять двухуровневый поиск: сначала из базы через индекс с помощью приблизительного алгоритма выбираются потенциальные объекты, а потом к предварительно отобранному множеству применяются более сложные алгоритмы, позволяющие точно определить нужные объекты. В СУБД Informix Universal Server реализован более изощренный метод индексирования пространственных данных - индекс R-Tree, разработанный для создания индексов одно-, двух- или трехмерных пространственных объектов и комбинированных данных, которые обрабатываются как многомерные (как, например, сведения о доме, включающие число этажей, комнат, общую и жилую площадь и т. д.). С помощью этого метода можно индексировать и диапазонные данные (скажем, телевизионные программы, передаваемые в период с 9:00 до 10:30). Индекс R-Tree обеспечивает также двухуровневое выполнение запроса, но при этом он не делит пространство на условные равные квадраты, а вписывает каждый объект (или группу объектов) в свой собственный прямоугольник. Прямоугольник может включать как объекты, так и другие прямоугольники (см. схему).

Схема индекса R-Tree

Пространственные модули

Модули СУБД Informix Universal Server, позволяющие подключить к серверу БД новые типы данных вместе с функциями, с ними работающими, и соответствующими системами индексации, называются DataBlade (название родилось из аналогии с лезвиями в бритвенном станке, которые можно легко менять). Для сервера Informix 9.x существует три различных DataBlade-модуля для хранения пространственных данных в Informix Universal Server:

- модуль системы работы с пространственными данными, реализованный компанией ESRI;

- SpatialWare DataBlade компании MapInfo;

- модуль, разработанный собственно компанией Informix, - Geodetic DataBlade. Он работает со сферической (геоидной) моделью земли, в то время как предыдущие два модуля - с плоскими проекциями. Этот модуль разрабатывался специально для NASA.

ESRI DataBlade

Модуль ESRI DataBlade разработки ESRI и входит в состав ArcSDE, но продается под названием Informix Spatial DataBlade компанией Informix, распространяющей этот продукт и осуществляющей первую линию поддержки (в сложных случаях проблемы решают специалисты ESRI). Он используется либо самостоятельно в качестве отдельного продукта, либо как часть интегрированной системы в составе ESRI ArcSDE.

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

С Ольгой Блинковой можно связаться по адресу: blinkova@pcweek.ru, а с Алексеем Сонькиным - по адресу: alexei.sonkin@informix.ru.