Авторизация

Логин:
Пароль:
Восстановить пароль
Регистрация
  • Форум
  • Блоги
  • Контакты
  • Новости
  • Продукты
  • Отрасли
  • Обучение
  • Поддержка
  • События
  • О компании
  • Увеличение скорости отображения классов объектов ArcSDE

    Danny Krouk и Girk Cakmak, ESRI-California

    ArcSDE предоставляет быстрый доступ к данным большого объема для решения задач ГИС-систем. При работе с ГИС удобно, когда данные являются бесшовными, и поэтому они занимают очень большой объем. Но большинство работы проводится с небольшими областями этих больших классов объектов. Одно из важнейших преимуществ ArcSDE состоит в способности решить задачу "предоставить маленькую часть большой области ".

    Однако, что получится, если пользователям ГИС необходимо полностью отобразить свои данные? ArcSDE будет передавать эти данные, но пользователи должны будут ждать, поскольку десятки мегабайт передаются из базы данных их прикладной программе.

    Проблема, как извлечь и передать большой объем данных – довольно сложная. Простых ответов не существует. Однако, ArcSDE имеет малоизвестную процедуру, названную sdegroup, которая может помочь справиться с некоторыми аспектами этой проблемы. Если ваша основная цель состоит в ускорении отображения данных, охватывающих большие пространства, то вам может помочь команда sdegroup. Эта статья описывает, что и как делает команда sdegroup.

    Команда Sdegroup

    Команда Sdegroup позволяет вам создавать обобщенные или сгруппированные копии слоев ArcSDE. Сгруппированные слои выглядят точно так же как исходные слои, но они отображаются быстрее. Ускорение может быть очень существенным. При неофициальном тестировании, слои, полученные при помощи команды sdegroup, отображались от 2 до 10 раз быстрее, чем исходные слои ArcSDE.

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

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

    Ключевые моменты использования sdegroup:

    • Отображаются от 2 до 10 раз быстрее, чем исходные слои ArcSDE.
    • Позволяют иметь только один атрибут.
    • Полигоны могут представляться только как линии.
    • Являются очень полезными для Интернет-приложений.
    • Требуется использование масштабной зависимости.
    • Могут использовать инструменты идентификации.
    • Имеют преимущества для обычных пользователей ГИС.
    • Могут использовать файлы слоев (layer).
    • Требуется, чтобы пользователей ГИС были обучены использованию этих данных.

    Немного подробнее

    Причина того, что слои sdegroup не имеют значимых атрибутов, состоит в том, что команда sdegroup приводит к объединению объектов, которые находятся близко друг к другу в пространстве. Объединение позволяет уменьшить объем хранения данных и ускорить передачу данных клиенту. Например, рассмотрим данные, содержащие информацию о домах. Если дом с номером 10 по улице Центральная расположен в той же ячейке пространственного грида, что и дом номер 15 по улице Парковая, то эти два объекта будут объединены в один. Геометрия будет выглядеть точно так же, как и исходная, но если будет выбран либо дом по ул. Центральная, либо дом по ул. Парковая, в любом случае будет выбран единый сгруппированный объект (который содержит оба дома). В этом случае, первоначальные атрибуты обоих домов не могут полностью соответствовать атрибутам сгруппированных геометрических объектов. Группировка по тайлам пространственного грида является группировкой по умолчанию.

    Однако, есть способ оставить один атрибут для слоя sdegroup. Это может быть полезно, если требуется атрибут для символогии объектов. Например, в слое трубопроводов один атрибут может указывать на область обслуживания. Часто, когда пользователи отображают данные всего слоя, им требуется раскраска трубопроводов по области обслуживания. В отличие от группировки объектов по тайлам пространственного грида, в результате группировки объектов по области обслуживания мы получим группировку всех трубопроводов в каждой области. При этом опускаются незначимые при обзорных видах атрибуты (как, например, диаметр или материал конкретного сегмента). Таким образом, получаем сгруппированные объекты с требуемым атрибутом, что позволяет использовать необходимую символогию.

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

    Есть и другое важное ограничение при работе со слоями sdegroup. Применяя sdegroup к точечному слою, вы получите тоже точечный слой. Применяя sdegroup к линейному слою, вы также получите линейный слой. Применяя sdegroup к полигональному слою, вы получите линейный слой. Да, здесь нет ошибки, полигональные сгруппированные слои создать нельзя, поскольку стандарты Open GIS Consortium (OGC) и SQL Multimedia (SQLMM) утверждают, что полигональные элементы из состава полигонального объекта с несколькими частями (multipolygon) не могут быть пересечены линией или полигоном. Следуя этому ограничению, есть два варианта – разрушить (dissolve) внутренние границы, чтобы создать один большой полигон или представить полигоны в виде линий. Поскольку команда sdegroup представляет полигоны как линии, то, несмотря на то, что команда sdegroup и может применяться к слою земельных участков, вы не сможете получить заливку бывших полигональных объектов сгруппированного слоя. Однако для получения заливки земельных участков вы можете использовать небольшой по объему слой внешних границ этих участков или слой типа землепользования.

    Напомним, зачем стоит применять sdegroup

    После обсуждения некоторых недостатков, повторно покажем преимущества использования sdegroup. Неофициальное тестирование проводилось в Калифорнии, в офисе ESRI в Редлансе. Авторы статьи проводили тесты со слоями ArcSDE, предоставленными пользователями. Размеры слоев (классов объектов) составляли от 1 МБ до 500 МБ или от 2,000 до 800,000 записей (объектов). По сравнению с прорисовкой исходных данных, слои sdegroup обычно прорисовывались от 2.5 до 3 раз быстрее при просмотре всего слоя целиком. При просмотре половины целого слоя слои sdegroup прорисовывались от 8 до 10 раз быстрее.

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

    Представим карту с тремя большими классами объектов. Скажем, каждый уровень отображается в течение 10 секунд, таким образом, каждая перерисовка карты занимает 30 секунд. Использование sdegroup для этих слоев могло бы уменьшить время перерисовки каждого слоя до трех секунд, в результате перерисовка всей карты займет только 10 секунд. При просмотре половины всей карты это различие будет еще значительнее.

    Проектирование для пользователей

    Каждый пользователь хочет более быстрой прорисовки данных. Однако, предоставление пользователям дополнительных слоев без атрибутивных данных может привести к тому, что пользователи будут запутаны. Перед использованием sdegroup необходимо разработать cтратегию, которая позволит пользователям системы нормально работать без необходимости для пользователей знать слишком много о слоях sdegroup.

    Огромное преимущество, от использования слоев sdegroup можно получить в Internet-приложениях. Если вы используете ArcSDE, чтобы предоставлять данные пользователям Интранет/Интернет сетей через ArcIMS, вы уже можете получить высокую производительность. Однако, при прорисовке всей карты целиком, что обычно имеет место каждый раз, когда кто-то открывает сайт и хочет отобразить карту полностью, этому кому-то иногда приходится довольно долго ждать. При проектировании сайта вы можете включать и исходные, и слои sdegroup, и отображать тот или иной слой в зависимости от масштаба карты. Таким образом, исходные данные будут отображаться только при просмотре небольших фрагментов, когда они прорисовываются достаточно быстро, а в остальное время будут использоваться слои sdegroup. Поскольку содержание таблицы содержания меняется динамически, в зависимости от реальных отображаемых данных, то пользователи не будут видеть различия - за исключением того, что улучшится производительность.

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

    Пользователи ГИС, установленных на их собственных компьютерах требуют значительно больших затрат сил. Пользователи ArcMap обычно самостоятельно добавляют классы объектов к картам и также самостоятельно управляют символогией карты, что означает, что слои sdegroup могут принести им некоторые проблемы в освоении. Однако, можно несколько уменьшить эти проблемы, используя файлы слоев (.lyr). Файлы слоев позволяют использовать предварительно настроенную символогию данных и объединять несколько различных данных в один файл слоя (групповой слой) для их дальнейшего использования. Создайте lyr-файл, который включает, и слой sdegroup, и исходный класс объектов, а затем управляйте видимостью этих слоев в зависимости от масштаба отображения.

    Также, пользователям ГИС, установленных на их собственных компьютерах в большей степени необходимы атрибуты классов объектов. Хотя lyr-файлы позволяют пользователям получить доступ к этим атрибутам, но это требует некоторого изменения организации работы. При взаимодействии с этими пользователями, цель администратора должна состоять в разъяснении того, что слои sdegroup могут повысить производительность их работы. Если они поймут это, они смогут немного изменить свой рабочий процесс.

    Некоторые заключительные соображения

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


    Вернуться к списку