Эльдар Мамедов, DATA+
Новая модель данных
Что такое модель, наверное, знают многие. Определений этого понятия достаточно много, и, в зависимости от конретной сферы применения, определения этого понятия будут различаться. Но в любом случае основа одна. Модель это способ описания.
В развитии геоинформационных систем все более и более усложняются процессы обработки пространственной информации, и также возрастает потребность интеграции этой информации с другими системами, назначение которых различно. Очень часто интеграция с такими системами как раз является наиболее сложным процессом. Скажем, это не только вопрос технический, благо сейчас для этого существует масса возможностей, но также и идеологический.
В данной статье мы попытаемся рассмотреть методы организации, хранения и работы с пространственной информацией, которые на сегодняшний день могут существенно облегчить жизнь специалисту, перед которым стоит задача построения информационной системы, работающей с пространственной информацией.
Мы все хорошо знакомы со старыми методами хранения и представления географических данных. Рассмотрим несколько моделей, которые на сегодняший день получили широкое распространение в различных сферах.
Модель данных САПР
Данная модель — одна из первых, с помощью которой начали создавать цифровой картографический материал. Ее основой являются точки, линии и полигоны. Данные хранятся в виде файлов. С ними также может быть связана некоторая атрибутивная информация, но основой все же являются векторные данные, которые только графически описывают местность на карте.
Модель данных ГИС первого поколения (модель данных покрытия)
В данной модели пространственная информация скомбинирована с атрибутами. Графические данные хранятся в специальных индексированных двоичных файлах, оптимизированных для быстрого отображения и доступа к ним, а атрибутивные данные хранятся в таблицах, причем число записей в таблицах равно числу графических объектов в двоичных файлах. Связь между этими двумя типами данных осуществляются с помощью поля общего идентификатора.
Также в данной модели имеется возможность использования топологических отношений между векторными объектами. Например, описание линии осуществляется следующим образом: каждый линейный объект имеет начальную и конечную узловые точки, а также вершины, которые образуют этот линейный объект. В файле топологии линейных объектов содержится информация о том, какие узловые точки содержит линия, и какое направление она имеет соответственно этим точкам. Линия может иметь общую узловую точку с другой линией, что также отмечено в файле топологии. Тем самым обеспечивается связность между отдельными линейными объектами (дугами). Далее, эта же линия может являться границей полигонов или частью одного полигона. Соответственно в файле топологии также указывается информация о том, какие полигоны находятся справа и слева от линии.
Полигональные объекты, в свою очередь, также содержат информацию о линейных объектах дугах, из которых они сформированы. За счет этих базовых отношений поддерживается не только связность между различными линейными и полигональными объектами, но также обеспечивается возможность задать более сложные топологические отношения. Например, топологию маршрутной сети, которая может быть сформирована из отдельных участков — дуг (сегментов маршрута). То же относится и к другим объектам — полигональным или точечным.
Эта возможность усложнять топологические отношения позволяет повысить эффективность процесса анализа географических данных.
Также в модели данных покрытия пользователь может изменять структуру атрибутивных таблиц объектов и связывать их с таблицами внешних баз данных.
Несмотря на то, что графические и атрибутивные данные хранятся раздельно, данная модель позволяла осуществлять корректный ввод и анализ графической информации. Скажем, это была первая ступень к созданию новой модели хранения и представления данных — модели БГД.
Для расширения возможностей и создания своих функций посредством написания пользовательских программ использовался встроенный язык AML. Это было очень удачное решение, поскольку язык AML был достаточно прост в освоении, а названия команд этого языка повторяют стандартные функции, которые пользователь обычно выполнял в тех или иных ГИС задачах. Было создано немало удачных решений и целых систем, которые базировались на приложениях, написанных на этом языке.
Но по мере усложнения процесса обработки данных и увеличения их объемов стало очевидно, что функции и поведение объектов уже недостаточно описывать листингами программ на AML.
Модель данных Базы Геоданных
В ArcGIS представлен новый подход к хранению и представлению географических данных — объектно-ориентированная модель данных, названная базой геоданных.
С помощью этой модели пользователь может создавать объекты с новыми качествами и, тем самым, как бы моделировать объекты реального мира. Напомним, что в модели данных покрытия пользователь может описывать только геометрию объекта и его характеристику, где описание его поведения возможно только с помощью дополнительных созданных пользователем программ, что ограничивало возможности анализа и обработки, например анализ разных типов объектов в реальном времени и т.д.
Объекты, хранящиеся в базе геоданных, то есть являющиеся частью физической модели, также имеют свое описание в логической модели данных. То есть, при работе с БГД пользователь одновременно работает с двумя моделями: физической и логической, что позволяет поддерживать не только геометрическую связанность объектов, но также и их связанность на объектном уровне (рис. 1).
Рис. 1
Более того, модель данных БГД позволяет реализовать те типы поведения географических объектов, для которых ранее требовалось писать отдельный код (приложение). Реализация этих типов поведения основывается на доменах и правилах проверки корректности объектов, а также на базе многих других функций, которые обеспечивает ArcGIS. А написание кода необходимо только на этапе описания специализированного поведения.
Для того, чтобы понять важность этого новшества, давайте рассмотрим ряд методов, иллюстрирующих отдельные задачи, решаемые при помощи пространственных объектов.
Пример №1
При добавлении пользователем нового объекта требуется точное описание этого объекта. При использовании модели данных покрытия необходимо было сверяться с письменными требованиями по занесению той или иной информации об объектах. При использовании доменов в БГД пользователь может заранее задать для каждого типа объектов соответствующую ему описательную информацию. Земельный участок , например, может быть жилым, сельскохозяйственным или промышленным. При занесении информации пользователь просто выбирает эти типы землепользования из списка.
Пример №2
Размещение объекта A в пределах или на заданном расстоянии от объекта B запрещено. В этом случае отрабатывается операция пространственного анализа в реальном времени. Ранее пользователь сначала размещал объекты, затем проверял правильность их размещения путем пространственной выборки. Требовалось выполнить ряд операций для выявления ошибки (пользователь не был застрахован от ошибки на этапе выполнения этого анализа). В случае БГД оператор лишь добавляет новый объект, а заранее описанное правило, которое включает пространственную выборку с заданными параметрами, исключает неверные объекты.
Пример №3
Геометрия объекта должна соответствовать его типу, то есть при редактировании зданий пользователю требуется, например, чтобы у зданий были прямые углы, а у природных объектов границы плавно переходили друг в друга (рис. 2).
Рис. 2
Пример №4
Модель коммунальных сетей. Пользователю необходимо, чтобы концы труб разного диаметра были соединены специальным переходным элементом, а для соединения двух и более труб применялись специальные соединительные элементы.
При вводе объектов сети в модели данных БГД отрабатываются сразу 2 типа топологических отношений: геометрические и объектные. В данном случае геометрическая топология контролирует связанность между линейными объектами (трубами) и точечными объектами (соединительными элементами), а объектная топология контролирует правильность установки параметров и правильность создания соединителей между трубами в каждом конкретном случае (рис. 3).
Рис. 3
Несколько ключевых особенностей БГД
-
Унифицированное хранилище данных
Данные могут храниться на сервере, что позволяет всем пользователям обращаться к ним (естественно, приоритеты доступа может задать администратор), а также локально на вашем компьютере. При этом, локальная БГД сохранит всю структуру данных и наследует правила и свойства всех объектов, заданные в БГД на сервере.
-
Организация процесса редактирования и ввода новой информации
При моделировании БГД пользователь может ввести правила, которые в дальнейшем позволят избежать многих ошибок и неточностей, а специальные инструменты проверки корректности ввода данных позволят выявить ошибки, допущенные ранее.
- Работа с интеллектуальными объектами
Пользователь работает не просто с обычными точками, линями и полигонами, информация о которых хранится в таблицах. В БГД пользователь может оперировать такими понятиями, как объекты реального мира, устанавливать и настраивать свойства и взаимоотношения объектов. Например, вместо точек можно работать с трансформаторами, а вместо линий — с трубами. При этом каждая труба будет «знать» через какой переходник она соединяется с трубой другого типа.
- Объекты имеют более богатый контекст
Пользователь может через топологические отношения определить не только качества объектов, но их взаимосвязь между собой. Определенные пользователем отношения объектов, как обычные так и пространственные, позволяют вам, например, узнать, что произойдет с пространственными объектами, если переместить связанный с ними пространственный объект, и как изменится содержание объекта (атрибутивная информация), если изменить характеристики связанного с ним другого объекта.
- Пространственные объекты могут отображаться на картах динамически
Отображение объекта может изменяться по результатам анализа или взаимодействия с другими объектами. Отслеживая состояние соседних объектов, с каждым типом или даже каждым из объектов можно связывать свой собственный инструментарий, который позволит более точно смоделировать характер природного явления, или отображать сложные схемы городских коммуникаций, используя при этом свои методы для их отображения.
- Наборы пространственных данных непрерывны
БГД позволяет хранить очень большие объемы данных. Например листы топографических карт можно хранить не полистно, как в случае модели данных покрытий, где рационально каждый лист топокарты записывать в отдельное покрытие, а в виде общего тематического слоя, сшитого из многих листов. При этом множество операторов могут обращаться к таким тематическим слоям карты и редактировать их одновременно. Конфликты, возникающие при изменении одних и тех же данных, можно разрешить, не вставая со своего рабочего места.
Многие функции, описанные выше, можно реализовать и с помощью стандартных ГИС приложений. Но в большинстве случаев пользователю придется писать большой объем кода. Используя БГД, Вы получаете базу, в которой уже заложен принцип построения интеллектуальных пространственных объектов. Эти объекты могут имитировать поведение реальных объектов.
Пользователю предоставляется богатый стандартный инструментарий, и в большинстве случаев нет необходимости писать дополнительно программы. Если все же требуются инструменты и средства анализа, которые отличаются от тех, что включены в ArcGIS, то при создании новых инструментов и своих сложных функций можно облегчить задачу расширения стандартной объектной модели ArcGIS, взяв за основу уже существующие объекты.
Внутри Базы Геоданных
Содержимое базы геоданных представлено на рис. 4.
Рис. 4
Данные в Базе Геоданных
Сама база геоданных может храниться как локально, так и на сервере, используя в качестве хранилища данных известные коммерческие РСУБД, такие как IBM DB2, Informix, Oracle, SQL Server. Подробнее об этом Вы можете прочитать в статье, посвященной специальному клиент-серверному приложению ArcSDE, которое позволяет хранить данные в формате БГД на сервере.
Локальная версия БГД с той же структурой, что и на сервере, может храниться и на настольном компьютере в виде файла Microsoft Access (*.mdb). Но при этом пользователь лишается таких возможностей как многопользовательский доступ к данным.
Объекты в БГД хранятся в связанных реляционных таблицах. Некоторые таблицы являются совокупностями объектов, другие отвечают за отношения между этими объектами а также за правила проверки корректности и домены атрибутов. ArcGIS управляет целостностью таблиц, и с помощью объектов доступа к географическим данным предоставляет пользователям объектно-ориентированную модель данных.
Во многих случаях пользователям не нужно знать все тонкости хранения и организации данных. Для этого в ArcGIS есть специальное приложение ArcCatalog, которое позволяет создавать, изменять и настраивать структуру БГД.
Важной особенностью новой модели данных является то, что Вы можете в любое время перейти от стандартного представления данных в ГИС (линий, точек и полигонов) к более интуитивно понятному объектному представлению. И, например, вместо точек использовать опоры, вместо линий — дороги, а вместо полигонов — здания, то есть более реалистично отображать обстановку.
Пользователям предоставлены неограниченные возможности по расширению свойств стандартных классов объектов. Используя такое понятие, как наследование, пользователь может создать новый класс объектов, который дополняет возможности родительского класса новым поведением и взаимодействием. Например, используя стандартный класс линейных объектов, можно создать новый класс, где геометрия объекта зависит, к примеру, от его положения и его атрибутивного наполнения. При этом, новые объекты сохраняют ту же производительность и функциональность, что и их родители.
Внутри БГД объекты хранятся в таблицах
Каждый пространственный объект имеет форму, которая хранится в специальном поле, описывающем его геометрию (поле типа geometry).
В БГД могут храниться следующие типы объектов: Точки или мультиточки; Полилинии — наборы сегментов, которые могут составлять одну или несколько цепочек; Полигоны — кольца или наборы колец, которые могут быть разобщены или вложены друг в друга. Кольцо — это замкнутая цепочка сегментов без самопересечений. Сегменты могут описываться с помощью отрезков прямых, дугами окружностей или эллипсов, кривыми Безье. Каждый из этих типов хранится отдельно в своем классе пространственных объектов, что позволяет более правильно описывать их поведение. Также в БГД могут храниться классы отношений и объектные классы (таблицы).
Как видно из схемы (рис. 4), эти классы группируются в наборы. В отличие от покрытий, в наборе классов можно хранить сколь угодно много одинаковых по типу классов пространственных объектов. Также наборы классов используются для более правильной организации данных, для логического и физического деления разнородных по содержанию объектов, что в принципе не мешает использовать и редактировать их совместно.
Рис. 5
В наборах классов могут храниться классы, связанные между собой, например, геометрической сетью или общей системой координат и пространственной привязкой, а также классы, объединенные по тематике.
Пространственные объекты имеют пространственную привязку, которая может задаваться на каждый класс пространственных объектов отдельно или же на группу объектов, если они хранятся в наборе классов. Каждый из пространственных объектов может иметь атрибуты, которые хранятся в столбцах таблицы класса пространственного объекта.
Пространственные объекты имеют подтипы. Все пространственные объекты группируются в классы пространственных объектов. Каждый класс пространственных объектов может быть разбит на подтипы. Подтип — это дополнительная классификация объектов в пределах одного класса. Например различные типы зданий: жилое, нежилое, строящееся. Через подтипы пользователь может более точно управлять такими параметрами, как домены и правила.
Когда полезно применять подтипы?
Если Вам необходима четкая классификация данных уже на начальном этапе моделирования БГД, то подтипы необходимы. Например, если требуется создать настроенное поведения для каждой группы объектов внутри одного объектного класса.
Если Вы хотите, чтобы разные группы внутри одного и того же объектного класса имели разные наборы атрибутов. Или, например, Вам нужно, чтобы часть групп одного класса пространственных объектов была доступна для редактирования, а другие — нет, плюс Вы хотите «разбросать» эти группы по разным версиям БГД (о них речь пойдет позже) для совместного редактирования данных. Во всех подобных случаях использование подтипов поможет повысить эффективность работы и увеличить скорость работы БГД.
Атрибуты пространственных объектов могут быть ограничены. Часто перед пользователями стоит задача, в которой обязательным условиям является ввод информации в соответствии с некоторыми правилами. Так, при редактировании наборов данных по дорожной сети должны быть соблюдены некоторые правила, например, разные типы дорог должны иметь разные записи в таблице. Причем атрибутивные записи объектов должны точно соответствовать группе, к которой эти объекты принадлежат. Желательно также исключить возможность ошибок при занесении информации о дорогах. Чтобы исключить или хотя бы уменьшить вероятность появления ошибок ввода, в базе геоданных можно заранее определить наборы допустимых значений атрибутов и правила их редактирования. Пользователь может установить их как для каждого поля всего класса пространственного объектов, так и для каждого подтипа в отдельности, то есть настроить ряды или диапазоны допустимых значений, которые называются доменами. Домены кодированных значений, в которых перечисляются конкретные значения атрибута, используются для описания отдельных типов объектов. Домены диапазонов, в которых определяются диапазоны значений, описывают свойства объектов, такие как их диаметр или высота, для которых допустим непрерывный диапазон значений (рис. 6).
Рис. 6
Пространственные объекты следуют заранее определенным правилам. Правило связанности задает допустимые сочетания значений атрибутов. Например, можно задать такое правило, что в главную реку впадают только притоки первого порядка, или что шоссе может соединяться с грунтовой дорогой только через специальный переходный элемент (рис. 7, 8).
Рис. 7
Рис. 8
Правила отношений между объектами ограничивают число объектов, участвующих в отношении, — они позволяют ограничить количество соединительных элементов на трубе, задать правило, что у земельного участка может быть только один владелец, и т.д.
Правила разделения пространственных объектов типичны для задач в ряде прикладных областей. Например, при разбиении земельного участка пользователю необходимо, чтобы некоторые параметры этого участка изменялись пропорционально значениям частей, получившихся при его разбиении, другая информация сохранялась, а ряд атрибутов был бы присвоен по умолчанию. В БГД при разделении объектов все эти требования учитываются, и пользователь по своему усмотрению для каждого поля атрибутивной таблицы объекта может задать нужное правило.
Правила объединения пространственных объектов. При объединении объектов возможны следующие правила комбинирования значений атрибутов: Значение по умолчанию, Суммарное значение и Среднее взвешенное значение.
Правила проверки корректности данных следуют заранее определенным требованиям и обеспечивают целостность на основе правил взаимоотношений и правил связанности, а также доменов.
Пространственные объекты могут иметь топологию. Многие типы пространственных объектов связаны между собой не только обычными отношениями, но и пространственными. Вот самое простое отношение: полигоны земельных участков должны плотно прилегать друг к другу, не должно быть зазоров или перекрытий. Образующийся при этом двумерный граф называется плоской топологией.
В ArcInfo 8 кроме топологии, унаследованной от предыдущих версий этого программного продукта, добавлена измененная сетевая топология, которая описывает не только связанность элементов в сети, но и управляет их поведением в зависимости от ситуации. По сути, это наглядный пример реализации нового объектно-ориентированного подхода.
Пространственные объекты можно наделить новыми качествами. Используя открытость системы и пользуясь технологией COM, пользователь может добавить новую функциональность объектам и приложению, в котором эти объекты используются. Для этого можно использовать стандартные языки программирования Visual Basic, C++, Delphi, Visual Basic for Applications.
Написание собственного кода позволяет, например, добавить такое сложное поведение, как реакция при редактировании объектов, нестандартная геометрия или специальные методы отображения объектов. Но в большинстве случаев Вам не придется писать заново многие строки кода, нужно будет только расширить существующие возможности объектной модели.
Вот небольшой пример создания новых объектов в Базе ГеоДанных (рис. 9).
Рис. 9