Использование стандарта SVG для визуализации данных в Интернет

Богомолов Н.А., Ковалев А.Д., Синицын М.Н

Долгое время в Интернет отсутствовал общепризнанный стандарт представления двумерной векторной графики. В сентябре 2001 года консорциумом W3C был принят такой стандарт, получивший название SVG - Scalable Vector Graphics. Синтаксис SVG основан на стандарте XML. Таким образом, для обработки SVG-документа могут использоваться любые средства работы с XML документами. SVG включает в себя богатые базовые графические возможности, сравнимые с имеющимися в пакетах CorelDraw и Adobe Illustrator:

  • произвольные заливки, включая штриховку, градиентные заливки, заливку заданным растром или произвольным фрагментом векторного (SVG) изображения,
  • разнообразные стили линий - линии произвольной толщины, штриховые, с различными стилями угловых и конечных точек,
  • возможность использования кубических (обычных) и квадратичных кривых Безье,
  • любой фрагмент изображения может быть сделан полупрозрачным (с заданной степенью прозрачности),
  • хотя это не оговорено явно в стандарте, имеющиеся реализации поддерживают вывод на экран в режиме так называемого антиалиасинга, в котором наклонные линии выглядят заметно менее "зазубренными" (меньше сказывается пиксельная структура изображения),
  • возможность использования преобразований, типичных для растровых изображений (размытие, попиксельное наложение изображений в разных режимах, различные варианты изменения цвета отдельных пикселей изображения),
  • богатая шрифтовая многоязыковая поддержка, за счет использования UNICODE в одном SVG документе могут присутствовать тексты на разных языках,
  • возможность расположения текстовых строк вдоль произвольных кривых,
  • возможность объявить произвольный фрагмент изображения самостоятельным объектом и использовать его многократно путем указания только ссылки, без его повторного описания,
  • встроенные развитые средства анимации, позволяющие без дополнительного программирования в реальном времени менять практически любые атрибуты фрагмента изображения или его отдельных объектов (координаты, цвета, прозрачность, коэффициенты трансформации и т.д.),
  • встроенная поддержка каскадных таблиц стилей (CSS).

Важной характеристикой стандарта SVG является то, что объектная модель SVG документа основана на принятом консорциумом W3C в 2000 году стандарте DOM (Document Object Model) Level 2. Это дает возможность использования стандартных языков (Java, JavaScript и других) для начального построения и произвольного манипулирования любыми составляющими элементами изображения (SVG документа). Составной частью стандарта SVG является и модель событий DOM Level 2 Events. Эта модель позволяет достаточно легко реализовывать с помощью SVG интерактивные графические изображения.

Для просмотра документов SVG в Интернет браузере нужно установить дополнительный plug-in модуль. В настоящее время наиболее распространен модуль просмотра SVG, разработанный фирмой Adobe (SVG Viewer 3.0). Можно предположить, что вскоре модуль просмотра SVG будет входить в стандартную поставку браузера, так же как модули просмотра файлов в форматах PDF и FLASH. При установленном модуле просмотра, файлы в формате SVG можно открывать в Интернет браузере как независимые документы, их можно также включать в состав HTML документа с помощью тэгов <IMAGE> и <EMBEDDED>. Что касается распространенных графических пакетов, то в настоящее время формат SVG поддерживают продукты фирм Corel и Adobe.

Стандарт SVG активно развивается при участии ведущих разработчиков ПО (Microsoft, Adobe, Corel и др.). Последней утвержденной версией стандарта SVG является в версия 1.1 (январь 2003 года), в январе 2004 года ожидается утверждение версии 1.3. Это позволяет сделать вывод о том, что стандарт SVG и сопутствующие программные средства будут в обозримом будущем активно развиваться и все более широко использоваться. Подробнее о планах развития SVG и имеющейся поддержке можно узнать на http://www.w3.org/Graphics/SVG.

Ближайшими конкурентами SVG можно назвать форматы VML и FLАSH. Разработанный в Microsoft формат VML (Vector Markup Language) также основан на XML и близок по концепции, возможностям и даже по названиям тэгов к SVG. Это формат в 1998 году был представлен консорциуму W3C для стандартизации, но был отвергнут в пользу SVG. Судя по отсутствию свежей информации на сайте Microsoft, формат VML больше не развивается и не поддерживается никем кроме самой Microsoft.

Формат FLАSH в настоящее время более широко распространен в Интернет чем SVG. Он применяется в основном для создания небольших анимированных роликов. Это объясняется ориентацией формата FLАSH на публикацию в Интернет анимаций и наличием развитых инструментальных средств создания FLASH фильмов. К числу недостатков формата FLASH по сравнению с SVG следует отнести следующее:

  • формат FLASH не утвержден в качестве стандарта,
  • он обладает более "бедными" базовыми графическими возможностями,
  • встроенный язык сценариев ActionScript, обладает существенно меньшими возможностями, для создания интерактивных изображений, чем встроенный в SVG JavaScript.
Приведем несколько ссылок на наиболее интересные Интернет ресурсы, связанные с SVG:
  • http://www.w3.org/Graphics/SVG - базовый для SVG сайт, содержащий полную документацию, планы развития, список поддерживающих SVG программ, ссылки на другие связанные с SVG сайты,
  • http://www.w3.org/TR/SVG11 - подробное описание стандарта SVG версии 1.1,
  • http://www.adobe.com/svg - описание возможностей документация и примеры использования разработанного в Adobe модуля просмотра SVG файлов
  • http://www.carto.net - сайт посвящен использованию формата SVG для представления в Интернет картографической информации.

В течение нескольких последних лет авторы разрабатывают инструментальные программные средства представления в Интернет разнородной территориально привязанной информации. Созданные средства основаны на разработанном авторами развитом клиентском ПО, обеспечивающем в том числе динамическую генерацию на компьютере клиента сложных интерактивных векторных изображений - интерактивных тематических карт, диаграмм и т.д. В существующей в настоящее время версии ПО графика нижнего уровня реализована средствами Java.

Получающий все большее распространение формат SVG обладает рядом преимуществ по сравнению с Java в части динамического создания сложных интерактивных векторных изображений:

  • существенно большие графические возможности SVG по сравнению с Java,
  • возможность использования для подготовки изображений профессиональных графических пакетов (CorelDraw, Adobe Illustrator),
  • возможность получения созданных в процессе работы WEB-приложения изображений в векторном виде для последующей вставки в документы пользователя или печати с полным использованием разрешающей способности принтера,
  • уменьшение объема ПО, пересылаемого на клиентский компьютер в процессе работы WEB-приложения, за счет исключения графических процедур нижнего уровня.

В этом году была исследована возможность использования SVG в качестве базы для динамического создания интерактивных тематических карт. Опыт создания альфа версии клиентского ПО, основанного на SVG, показал многочисленные положительные свойства и удобство этого формата для динамического создания сложных интерактивных изображений в среде Интернет браузера. Доклад подготовлен при поддержке РФФИ, грант № 02-07-90236.