Развитие идеологии ГИС, необходимость поддержания совместимости версий и систем, понимание того, что пространственная структура объекта не всегда соответствует его логической структуре, обусловили присутствие в современных ГИС черт как гибридных, так и интегрированных систем
В промышленных СУБД используются в основном следующие методы индексирования пространственных областей:
— квадродерево (quadtree) — последовательное деление координатной плоскости на четыре части;
— R-дерево — иерархическая пространственная структура, в ее «листьях» (листовых узлах) каждый пространственный объект представлен минимальным охватывающим его прямоугольником со сторонами, параллельными координатным осям (MBR), каждый из которых в свою очередь служит дочерним нелистовым узлом следующего уровня иерархии вплоть до корня R-дерева — «экстента» полного набора объектов;
— GRID — одноуровневая структура, сетка квадратов или прямоугольников.
Детали построения пространственного индекса изложены в работах [4, 9, 10]. Все рассматриваемые в них конструкции основаны на разделении пространства на прямоугольные области. Для квадродеревьев строится система прямоугольников путем последовательного деления первого прямоугольника (включающего всю изучаемую территорию) на четыре части вертикальной и горизонтальной линиями, а затем аналогично каждого из получившихся (если в их пределах находится достаточно большое число пространственных объектов) и т. д.
В статье [10] основное внимание уделено наиболее распространенным в геоинформационных системах R- и R+-деревьям, в [4] наряду с R-деревьями рассматриваются квадродеревья и GRID-структуры, основанные на регулярной системе разбиения.
Рис. 6 и 7 из [9] наглядно объясняют процедуру формирования R-деревьев и GRID-индексирования.
Рис. 6. Формирование R-дерева: а) деление пространства директивными и минимальными ограничивающими прямоугольниками; б) граф соответствующего R-дерева
Пространственные запросы
Особое место при работе с пространственной информацией занимают пространственные запросы. Для их создания используются специальные языки. Как правило, это различные версии и диалекты языка SQL, однако в некоторых ГИС используется язык QBE (Query By Example — язык запросов по примеру (образцу), предназначенный для пользователей, не являющихся программистами). Во многих ГИС пользователь создает пространственные запросы, настраивая параметры соответствующих диалогов или мастеров. Обычно для создания пространственных запросов используются расширения языка SQL.
Для понимания состояния стандартизации и реализации SQL в современных СУБД целесообразно ознакомиться со статьей [11], где довольно подробно изложены особенности стандарта языка SQL и его версии SQL89, описаны некоторые черты версии SQL92, приведена сводка различий этих стандартов, кратко дана сводка возможностей SQL3. Основные выводы изложены автором [11] в начале статьи: «…в разных СУБД, производители которых объявляют их соответствующими стандарту SQL, достаточно часто реализуются немного разные языки. Частично это объясняется недостатками самого стандарта, частично — историческими и конъюнктурными обстоятельствами. К сожалению, такова текущая реальность, и к ней нужно приспосабливаться».
Подробно языки пространственных запросов рассмотрены в третьей части работы [12].
Следует заметить, что в ГИС пространственные запросы стали использоваться довольно давно (по меркам истории ГИС). Так, в системе MapInfo среди операторов, которые можно использовать в SQL-запросе, существуют: Contains, Within, Intersects и их разновидности.
Рис. 7. Формирование пространственного индекса на основе регулярной сетки (GRID-индексирование)
В руководстве пользователя к MapInfo 6.0, изданном в мае 2000 г. (в сентябре 2008 г. вышла русифицированная версия MapInfo 9.5), о географических операторах, которые могут быть использованы для выбора пространственных объектов, сказано следующее: «В MapInfo имеется несколько географических операторов. Они используются для выбора объектов на основании их взаимного расположения в пространстве. С географическими операторами в
MapInfo используется специальное ключевое слово: «obj», или «object». Оно определяет, что MapInfo должно вычислить значение на основании графических объектов, а не соответствующих им в таблице числовых полей.
Имя географического оператора указывается между географическими объектами; выбрать его можно в списке «Операторы» (см. таблицу).
Различие между Contains и Within, с одной стороны, и Contains Entire и Entirely Within, с другой, состоит в том, что Contains и Within основаны на анализе центроида объекта, а Contains Entirely и Entirely Within — на анализе всего объекта.
При этом следует помнить, что MapInfo выполняет простые операции «Содержит» (Contains) и «Внутри» (Within) гораздо быстрее, чем «Содержит полностью» (Contains Entire) и «Полностью внутри» (Entirely Within).
Пересечение (Intersect) — единственный географический оператор, рекомендуемый для использования в команде «Выбрать», так как Contains, Contains Entire, Within и Entirely Within работают обычно с объектами, которые содержатся в двух разных таблицах. Эти операторы больше всего подходят для задания условия выбора в команде SQL «Запрос». А оператор Intersect может работать с объектами из одного набора, например, таблицей областей или улиц».
Набор операторов аналогичного назначения в GeoMedia Professional [13] несколько отличен и зависит от используемой СУБД. Для СУБД Access он включает пространственные операторы: Касаются — выбирает объекты, которые касаются определенных объектов произвольным способом (встык, перекрываются, содержат и/или содержатся в определенных объектах).
Содержат — выбирает объекты, которые содержат определенные объекты. Выбираемые объекты могут касаться, но не перекрывать границы определенных объектов. Точки не могут содержать другие элементы.
Содержатся в — выбирает объекты, которые полностью находятся в пределах определенных объектов. Выбираемые объекты могут касаться, но не перекрывать границы определенных объектов.
Полностью содержат — выбирает объекты, которые содержат определенные объекты. Выбираемые объекты не могут касаться или перекрывать границы определенных объектов. Точки не могут содержать другие элементы.
Полностью содержатся в — полностью находятся в пределах определенных объектов. Выбираемые объекты не могут касаться или перекрывать границы определенных объектов.
Перекрывают — выбирает объекты, которые перекрывают определенные объекты.
Граничат с — выбирает объекты, которые граничат с определенными объектами, касаясь, но не перекрывая их.
Пространственно равны — выбирает объекты того же типа, что и определенные, имеющие ту же форму и занимающие то же положение.
На расстоянии — выбирает объекты, какая-либо часть которых будет находиться в пределах указанного расстояния относительно определенных объектов. Например, если начальная или конечная точки линейного объекта попадают в пределы заданного расстояния относительно определенных объектов, линейный объект будет выбран.
При формировании пространственного запроса к хранилищу на базе СУБД Oracle могут использоваться следующие пространственные операторы:
Touch — границы объектов пересекаются, а внутренние области — нет.
Disjoint — границы и внутренние области объектов не пересекаются.
Overlap Boundary Disjoint — внутренняя область одного объекта пересекается с границей и внутренней областью другого объекта, но не пересекается с рассматриваемым объектом. Такая ситуация возникает, например, когда линия начинается вне пределов полигона, а заканчивается в его пределах.
Overlap Boundary Intersect — границы и внутренние области двух объектов пересекаются.
Equal — два объекта имеют одни и те же границу и внутренние области.
Contains — внутренняя область и граница одного объекта полностью находится в пределах другого объекта.
Inside — внутренняя область и граница одного объекта полностью находится вне пределов другого объекта.
Covers — внутренняя область одного объекта полностью содержится в пределах внутренней области другого объекта, их границы пересекаются.
Covered By — внутренняя область одного объекта полностью содержится вне пределов внутренней области другого объекта.
Any Interact — любое пересечение объектов.
Реализация СУБД
Вопросы реализации работы с базами пространственных данных в СУБД и ГИС затронуты в аналитическом обзоре [14], где говорится, что «…абсолютными лидерами на рынке коммерческих SQL-ориентированных СУБД являются системы Oracle, IBM DB2 и Microsoft SQL Server. В 2007-2008 гг. вышли новые версии этих продуктов: Oracle 11g, DB2 v.9, SQL Server 2008». В этих версиях реализовано много полезных новшеств, в том числе обеспечивающих работу с пространственными данными.
Фирмы Oracle и Microsoft функции файловой системы встроили в СУБД. По утверждению разработчиков, эти системы обладают высокой надежностью и эффективностью.
Одним из важных новшеств в СУБД Oracle является поддержка «темпоральных» (временны'х) баз данных, т. е. баз данных, позволяющих сохранить информацию об изменении объектов во времени, все срезы их истории. В результате пользователь должен получить возможность восстановить информацию на любой из зафиксированных в БД моментов времени. Тем, кто работает в области экологии, геологии, градостроительства, понятно, насколько это важно [15, 16].
Средства поддержки пространственных типов данных (геоинформационных и мультимедийных) появились еще в Oracle 8 и DB2 Universal Database. Microsoft включил поддержку пространственных типов только в SQL Server 2008. Эти данные реализуются с помощью некоторых конструкций, основанных на встроенных типах данных, что провоцирует снижение эффективности при работе с ними.
В обзоре [14] также рассмотрены две СУБД, которые относятся к классу свободно доступных — MySQL и PostgreSQL.
Список литературы
1. ДеМерс М.Н. Географические информационные системы. Основы: Пер. с англ. — М.: «Дата+», 1999. — 589 с.
2. Мамедов Э.Э. База геоданных // ArcReview. — 2001. — № (4)19. — С. 3–5 (доступна по адресу http://www.dataplus.ru/Arcrev/Number_19/PDF/p3.pdf ).
3. Лященко А., Иванченко С., Смирнов В. Концептуальные модели геопространственных данных // Инженерная геодезия. — Киев: КНУБА, 2005. — Вып. 51 (доступна по адресу http://gki.com.ua/DyWP/bindata/_0003659_path.pdf ).
4. Лященко А. Реляционные модели и пространственная индексация геоданных // Инженерная геодезия. — Киев: КНУБА, 2000. — Вып. 43. — С. 139–150 (доступна по адресу http://gki.com.ua/DyWP/bindata/_0003661_path.pdf ).
5. Андрианов В.Ю. Стандарты и ESRI // ArcReview. — 2006. — № 2 (37) (доступна по адресу http://www.dataplus.ru/arcrev/number_37/5_standarts.html ).
6. Андрианов В.Ю. Стандарты в ИПД // ArcReview. — 2006. — № 2 (37) (доступна по адресу http://www.dataplus.ru/arcrev/number_37/5_ipd.html ).
7. Борисенков Д.В., Ха-рин В.Н. Краткий обзор стандартов поддержки ГИС в реляционных СУБД и вариантов их реализации // Технология клиент-сервер. — 2005. — № 3 (доступна по адресу http://www.linter.ru/ru/press-centre/publications/71 ).
8. Зейлер М. Моделирование нашего мира. Руководство ESRI по проектированию базы геоданных. — Нью-Йорк: ESRI Press, 1999. — 254 c.
9. Лященко А., Смирнов В., Ципенко О. Исследование специальных методов доступа к базам геопространственных данных // Современные достижения геодезической науки и производства: Сб. науч. тр. — Львов: Лига-Прес, 2004. — С. 221–313 (доступна по адресу http://gki.com.ua/DyWP/bindata/_0003660_path.pdf ).
10. Захаров А.Ю. Построение пространственного индекса с использованием квадро- и
R-деревьев // Исследования по информатике: Сб. тр. / ИПИ АН РТ. — 2001. — Вып. 3. — С. 133–138 (доступна по адресу http://ipian.kazan.ru/ru/index.shtml?90 ).
11. Кузнецов С.Д. Стандарты языка реляционных баз данных SQL: краткий обзор. — http://
www.citforum.ru/database/articles/art_2.shtml .
12. Шекхар Шаши, Чаула Санжей. Основы пространственных баз данных: Пер. с англ. — М.: КУДИЦ-ОБРАЗ, 2004. — 336 с. (ч. 3 доступна по адресу http://www.citforum.ru/database/articles/spatial ).
13. GeoMedia Professional 6.0: Руководство пользователя [электр. ресурс].
14. Кузнецов С.Д., Гри-нев М.Н. Ландшафт области управления данными: аналитический обзор. — http://citforum.ru/database/data_management_overview .
15. Oracle Spatial 10g — опция обеспечения пространственных данных. — http://www.citforum.ru/database/oracle/spatial10g .
16. Пивоваров А.А. Стратегия корпорации Oracle в области хранения и анализа пространственных данных // Семинар «Партнерство с РДТЕХ: бизнес-возможности использования технологии Oracle Spatial в работе с пространственными данными»: Презентация к докладу. — http://www.rdtex.ru/download/060208_Pivovarov.pdf .