Сервер пространственных данных ArcSDE

Некоторые аспекты использования

Игорь Стрельцов, DATA+

Эта технология была впервые представлена ESRI в 1995 году, когда появилась первая версия программного продукта SDE. В то время ни одна из СУБД (систем управления базами данных) не предоставляла возможности управления пространственной информацией, и простое хранение векторных данных в РСУБД представлялось громадным шагом вперед. За прошедший период этот продукт приобрел много нового. В первую очередь, это новые функции, надежность работы и новое название. Итак, на что способен сервер пространственных данных ArcSDE в настоящее время? С какими СУБД и клиентами он работает, насколько быстро, надежно и удобно? И вообще, зачем это все нужно? Начнем с ответа на последний вопрос.

В каких случаях нужен ArcSDE

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

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

ArcSDE – сервер пространственных данных

Вполне возможно, вы уже видели или слышали это определение, но, думаю, полезно немного пояснить. В буквальном переводе SDE (Spatial Database Engine) звучит как «двигатель пространственных данных». В действительности, ArcSDE представляет собой интерфейс-надстройку над СУБД для использования последней в качестве хранилища пространственной информации. Посредством ArcSDE осуществляется быстрый доступ к нужной части огромных массивов информации из ГИС-приложений.

При использовании ArcSDE пространственные данные хранятся как стандартные данные СУБД (как правило, в двоичном формате). За их надежное хранение, разграничение доступа, резервирование и, в ряде случаев, за синхронизацию отвечает сама СУБД. А вот за быструю передачу клиенту требуемой части пространственных данных и за предоставление возможности грамотного многопользовательского редактирования этих данных отвечает ArcSDE. Этот программный продукт может работать на различных СУБД: Oracle8i, Oracle9i (как Standart, так и Enterprise Edition с Oracle Spatial), MS SQL Server, Informix и DB2. ArcSDE устанавливается на различные операционные системы: Windows 2000/2003 Server, Red Hat Linux, SUN Solaris, HP UX, AIX, IRIX. Если к этому добавить еще и возможность установки ArcSDE отдельно от РСУБД, то количество платформ еще больше увеличивается.

Возможности текущей версии ArcSDE 9.0

Поддерживаемые клиенты

Продукты ESRI: ArcGIS 9.0 (ArcReader, ArcView, ArcEditor, ArcInfo, ArcGIS Engine, ArcGIS Server) и приложения, построенные на их основе, ArcIMS 9.0 (а через него и простые web-браузеры), ArcView GIS 3.3, ArcExplorer JAVA 4.0.x, приложения пользователей, написанные на MapObjects, MapObjects Java и ArcObjects. Программные продукты других фирм: ERDAS Imagine, MicroStation,  AutoCAD. При работе ArcSDE на Oracle Spatial возможно взаимное использование географических данных вышеуказанными программами и MapInfo, GeoMedia и др. Поскольку атрибутивные данные лежат в обычных таблицах СУБД, то для доступа к ним можно использовать любые приложения, имеющие доступ к данным в СУБД (рис. 1).


Рис.1

Быстрое отображение пространственных данных

Эта функция является, пожалуй, самой главной при выборе системы ArcSDE в качестве хранилища данных. Благодаря этому пользователи системы могут хранить огромные наборы данных в одном неразрывном классе объектов с возможностью быстрого доступа к части этих данных. Что имеется в виду под словом «огромный»? Например, класс объектов, состоящий из десятков миллионов полигонов. Размер эквивалентного шейп-файла составляет десятки гигабайт. При файловом хранении, пожалуй, ни одна система не обеспечит более-менее приличного доступа к таким данным, а связка ArcGIS+ArcSDE справляется с этим весьма успешно. Объясняется это достаточно просто – ArcSDE использует так называемый «пространственный индекс».

Быстрый поиск необходимых данных должен основываться на индексации. В случае атрибутивных данных все просто – средствами самой СУБД эта индексация проводится и участвует в поиске. В случае пространственных данных такой тип индексации не подойдет, поэтому задача пространственного индексирования ложится на сервер ArcSDE. При загрузке пространственных данных создаются служебные таблицы пространственного индекса, с помощью которых и происходит быстрый поиск необходимых клиенту данных. При любом отображении части пространственных данных осуществляется выборка с использованием этих индексных таблиц. Естественно, от грамотного выбора размера пространственного индекса зависит производительность системы. О критериях выбора вы можете узнать в разделе технической поддержки сайта DATA+.

Многопользовательская работа

Основными клиентами ArcSDE являются продукты семейства ArcGIS. Именно при их использовании проявляются многие преимущества «сервера пространственных данных»:

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

Рассмотрим подробнее эти функции и рабочие процессы, которые можно организовать на их основе. Любое редактирование многопользовательской базы геоданных с использованием ArcEditor или ArcInfo (ArcView может только читать данные из таких баз) происходит в так называемой «версии». То есть создается некое хранилище, в которое записываются все изменения, а пользователь получает данные как из основных, неизмененных таблиц, так и из таблиц, содержащих изменения. Версия (то есть хранилище изменений + неизмененная информация) может быть общей (все имеют полный доступ к версии), защищенной (все могут читать данные, но только хозяин может вносить изменения) и частной (только хозяин имеет доступ к версии). В зависимости от задач, с помощью версий с различным доступом можно организовать различные технологические процессы. Самый простой – процесс, при котором все редактируют одну версию (рис. 2).


Рис.2

При этом нередко могут возникать конфликты – ситуации, когда разные пользователи одновременно вносят различные изменения в один и тот же объект. Разрешение конфликта в таком случае ложится на пользователей системы, точнее на того, кто последним сохраняет свои изменения. Чтобы избежать таких затруднительных положений (обычно принятие решения — всегда затруднительное положение), можно использовать распараллеливание правок между несколькими потоками. Соответственно, и «вести» эти потоки будут различные пользователи. По окончании какого-либо периода (день, неделя, месяц) администратор или начальник подразделения будет объединять изменения из этих потоков в одну общую версию (рис. 3), вся работа по разрешению конфликтов будет перекладываться на него. Но на то он и начальник. Это только два простых примера работы с версиями. На самом деле их может быть гораздо больше. Например, версия может быть использована и для создания временнЫх «слепков» с базы данных (рис. 4).


Рис.3

Также хочется подчеркнуть роль автономного редактирования. Эта функция позволяет для изменения картографической информации, находящейся в ArcSDE, использовать ArcView. То есть, выгрузить данные с помощью ArcEditor или ArcInfo в персональную Базу геоданных (mdb-файл) и передать ее на исправление в ArcView, а затем перенести измененную информацию обратно в общую базу. Это позволяет сильно снизить затраты на программное обеспечение.


Рис.4

Также можно осуществлять многопользовательское редактирование данных и из ArcView 3.х, но при этом работает другой механизм редактирования – блокировочный. При открытии сеанса редактирования одним из клиентов все объекты изменяемого класса объектов, попавшие в область отображения, блокируются, и никто другой не сможет их изменить до окончания первого сеанса. Более того, другие пользователи не смогут даже открыть свой сеанс редактирования на тот же класс объектов, если объекты, заблокированные первым пользователем, попадут в их область отображения. Кроме того, ArcView 3.х не имеет доступа к таким объектам базы геоданных, как атрибутивные домены (области заранее заданных значений), растровые данные, топологические отношения, аннотации и др. Не говорю уже о том, что в этом случае придется забыть и о «версиях».

Доступ к данным по сетям общего пользования

Эта возможность позволяет обращаться к данным и редактировать данные удаленным клиентам без непосредственного доступа к файлам. Это очень удобное решение при наличии развитой сети крупной распределенной корпорации.

Нововведения в следующих версиях ArcSDE

Репликация данных

В настоящее время репликацию данных (перенос изменений из одной базы в другую) можно производить только средствами самой СУБД, либо с помощью продуктов третьих фирм. В некоторых случаях сделать грамотную репликацию подобным образом затруднительно или почти невозможно. Это может случиться, когда обе базы или, в особенности, одни и те же классы объектов в различных базах подвергаются различным изменениям. Разобраться какие изменения принимать, а какие отвергать становится очень трудно. В ArcSDE версии 9.1 появится возможность репликации данных с использованием инструментария ArcGIS. То есть вы сможете использовать единый интерфейс для разрешения конфликтов.

Развитие модели данных

Развитие модели данных базы геоданных происходит постоянно. В версии 8.3 появилась полигональная топология и хранение растров в JPEG-сжатии. В версии 9.0 выделился отдельный класс объектов – каталоги растров с дополнительными свойствами. Само хранение растров стало более удобным и интегрированным в общую структуру данных. Еще одно удобное нововведение в 9.0 – хранение растров внутри векторного класса объектов, то есть возможность хранения иллюстрации для любого векторного объекта без создания горячих связей к целой куче отдельных растров. Правда, все эти возможности доступны только в среде ArcGIS, которая развивается еще более стремительно, чем ArcSDE.

Заключительное замечание

Как вы, вероятно, знаете, на веб-сайте ESRI есть много полезной информации обо всех программных продуктах этой компании, в том числе и об ArcSDE. Очень много там и того, о чем даже и не подозреваешь. Например, на support.esri.com в разделе технических статей есть документы о распределении табличных пространств базы геоданных (multiuser_ai8.pdf), о построении корпоративной системы (System Design Strategies.pdf). Среди бесплатных скриптов на arcscripts.esri.com появилась программа для скрытия недоступных пользователю наборов классов (Detritimizer). Регулярно посещая эти ресурсы, и вы, вполне возможно, найдете именно то, что долго искали.