МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ ОПТИМАЛЬНОЕ УПРАВЛЕНИЕ
УДК 681.327
МЕТОДЫ ПОВЫШЕНИЯ ЭФФЕКТИВНОСТИ СИСТЕМ ВОСПРОИЗВЕДЕНИЯ КАРТОГРАФИЧЕСКИХ ДОКУМЕНТОВ
© 2008 г. Ю.Л. Кетков 1,г, З.А. Матвеев 1
1 Нижегородский госуниверситет им. Н.И. Лобачевского 2 НИИ прикладной математики и кибернетики Нижегородского госуниверситета им. Н.И. Лобачевского
ket@city.ru, matveev@tecomgroup.ru
Поступила в редакцию 11.03.2008
Разработаны и исследованы алгоритмы оптимизации времени просмотра цифровых электронных карт большого размера.
Ключевые слова: алгоритм, оптимизация, картографический документ.
Введение
Бурное развитие цифровой картографии за последние годы привело к появлению довольно большого числа ГИС различного назначения. Среди наиболее известных отечественных разработок - комплексы автоматизированных картографических систем, созданных в НИИ прикладной математики и кибернетики (НИИ ПМК) Нижегородского государственного университета. Упомянем только некоторые из них -АСОИМК [1], предназначенная для создания цифровых навигационных морских карт, КАРТ-ДОК [2], используемая для визуализации и подготовки к изданию тематических цифровых карт (топографические карты и планы разных масштабов, морские путевые и навигационные карты, промерные планшеты и др.), универсальная система создания, хранения и обработки ГИС «Терра» [3].
Важной задачей в системах такого рода является контроль полноты и качества соответствующих цифровых моделей карт. В большинстве случаев исходным материалом для создания электронных карт являются стандартные тиражные оттиски, при подготовке которых существует довольно много отступлений от регулярных правил. Например, допускается изменять характеристики шрифтов, отступать от типовых размеров дискретных знаков, варьировать шаг
расположения заполнителей линейных знаков, выносить надписи в местах большой насыщенности документа и т.п. В результате картографический документ после оцифровки и автоматического распознавания отличается от своего оригинала, а автоматическое отображение цифровой модели добавляет свою долю артефактов. Поэтому электронные карты обязательно должны контролироваться как с помощью автоматических средств, так и путем визуального просмотра. Это особенно необходимо в случае подготовки издательских оригиналов цифровых карт, т.к. твердые (бумажные) копии еще не потеряли своей актуальности.
Требования, предъявляемые руководствами по изданию карт, достаточно высоки. Это и точность воспроизведения линейных знаков и контуров площадных знаков (не хуже 0.1-0.2 мм), и недопустимость наложения близко лежащих объектов, и соблюдение цветовой гаммы, и использование только фиксированных шрифтов, и многое другое. Для соблюдения установленных правил редактору-картографу приходится тщательно исследовать каждый фрагмент изображения. С учетом размеров листов карт (габариты морских карт могут достигать порядка 1000 мм) и габаритов просматриваемых объектов (минимальная высота некоторых надписей составляет 1-1.2 мм) на экране дисплея приходится отображать фрагменты электронной кар-
ты с увеличением в 4-8 раз. Когда размер файла с графическим изображением электронной карты достигает нескольких десятков и сотен Мбайт, быстродействие системы отображения становится решающим фактором. Однако оперативность многих современных графических систем, работающих как с растровыми, так и с векторными изображениями такого размера, оставляет желать лучшего.
В настоящей работе рассматриваются алгоритмы и методы повышения эффективности систем отображения, ориентированных на воспроизведение изображений картографических документов, представленных в векторном формате HP-GL/2. Именно в таком виде формируется изображение электронных карт современными версиями системы КАРТ-ДОК, работающими под управлением Windows XP.
1. Основные этапы формирования графического образа электронной карты
ГИС, разрабатываемые в НИИ ПМК, базируются на отраслевом стандарте семантического описания цифровых карт, хранящегося в специализированных графических базах данных (СГБД). С целью повышения информативности электронной карты при одновременном ограничении на объем информации в СГБД хранится семантическое описание картографических объектов в соответствии с установленной схемой их классификации. Для каждой предметной области разрабатывается свой классификатор, напоминающий по форме универсальную десятичную классификацию (УДК), используемую в библиотечном деле. Каждый объект листа карты в СГБД идентифицируется классификационным кодом и порядковым номером. Семантическое описание объекта включает необходимое количество числовых и текстовых атрибутов, его логические взаимосвязи с другими объектами и минимально необходимый набор координат. С целью сокращения общего объема хранимой информации в СБГД не заносятся типовые конфигурации условных знаков, стандартные характеристики шрифтов. Для линейных знаков (автомагистрали, железно-дорожные пути и т.п.) в СБГД хранятся только координаты узловых точек осевой линии. Поэтому при создании графического образа электронной карты подсистема визуализации пользуется многочисленными таблицами для формирования недостающей информации.
Работа подсистемы визуализации строится по следующей схеме:
1) формирование условий отбора отображаемых объектов;
2) извлечение из СБГД описания очередного отображаемого объекта;
3) анализ семантического описания и воссоздание недостающих графических данных;
4) формирование файла с графическими образами отображаемых объектов;
5) переход к п.2 до исчерпания всех объектов, удовлетворяющих условиям отбора;
6) воспроизведение фрагмента графического файла с заданным коэффициентом масштабирования, принадлежащего окну просмотра.
На этапе создания цифровой карты условия отбора позволяют редактору-картографу визуально проконтролировать любой объект, оценить взаимное расположение тех или иных групп объектов и выделенных цветовых слоев. Однако на заключительном этапе из СБГД должны быть извлечены все элементы содержания, и воссозданы недостающие компоненты оформления (рамка и зарамочное оформление, картографическая сетка и т.п.).
При организации визуального контроля ряд пунктов описанной выше схемы может выполняться однократно. К ним относятся процедуры извлечения информации из СБГД, их анализа и преобразования в соответствующие записи графического файла. Добиться существенного выигрыша времени на этих этапах довольно сложно. Однако просмотр содержимого графического файла, масштабирование различных его фрагментов и навигация по смежным фрагментам - операции массовые, требующие активного взаимодействия с пользователем. Любые задержки в их исполнении отрицательно сказываются на эффективности внедрения соответствующей системы визуализации.
В первых версиях системы КАРТ-ДОК, функционировавших под управлением MSDOS, предпринимались определенные шаги по повышению качества изображения и сокращению времени визуализации фрагментов цифровых карт. Для отображения электронной карты на экране дисплея был разработан внутренний векторный формат представления графических образов. Идея этого формата напоминает современный байт-код. Каждая графическая команда была представлена цифровым кодом, упрощавшим переход к соответствующей процедуре GDI (Graphics Device Interface). Все числовые данные, необходимые для воспроизведения соответствующего графического примитива, были переведены в целочисленный машинный формат (единица измерения принималась равной 0.1 мм). Оставалось только учесть коэффициент масштабирования (вместо вещественных коэффициентов использовалось умножение на целое число km и деление на целое число kd с
последующим округлением), и это позволяло сохранить качество изображения при любых увеличениях. Правда, увеличение исходного изображения не сопровождалось соответствующим изменением толщины линий. Основные задержки процесса визуализации были связаны с тем, что задача отсечения части изображения, не попадавшей в окно просмотра, решалась средствами устаревшей графической библиотеки BGI. Поэтому графический файл интерпретировался целиком при каждой смене кадра просмотра.
Для получения полноцветного тиражного оттиска или формирования расчлененных по цветам издательских оригиналов была предусмотрена еще одна версия программы КАРТ-ДОК, которая формировала графический файл на языке HP-GL/2 (Hewlett-Packard Graphics Language) - общепринятом промышленном стандарте для большинства плоттеров разных производителей.
В процессе адаптации системы КАРТ-ДОК к среде Windows было принято решение отказаться от сопровождения двух мало отличающихся между собой версий программных комплексов. А в качестве формата результирующего графического файла был принят стандарт HP-GL/2 ([4]). Его можно непосредственно использовать для управления серийными большеформатными плоттерами (воспроизведение цветных оттисков) и специализированными прецизионными фотоплоттерами (подготовка издательских оригиналов и заливочных шаблонов). Однако для решения задач контроля качества и модификации электронных карт необходимы удобные средства визуализации изображений в графических файлах. Именно этим объясняется повышенный интерес к созданию различного рода программ просмотра файлов в формате HP-GL и поиску путей повышения их быстродействия при работе с файлами очень большого размера.
2. Предварительный анализ
Образ электронной карты в формате HP-GL представляет собой линейную графическую программу (без циклов и ветвлений), ориентированную на управление плоттером и содержащую достаточно длинную цепочку команд вида:
CD [p1, p2, ...] ,
где CD - двухсимвольный код графической команды, p1, p2, ... - обязательные или необязательные числовые параметры, записанные в символьном формате. В качестве параметров могут выступать целочисленные и/или вещест-
венные координаты, радиусы окружностей, углы, характеристики пишущего узла и др. Таким образом, электронная карта в формате НР-вЬ это - обычный текстовый файл, каждая строка которого представлена графической командой, содержащей к символов (среднее значение к порядка 25). Можно встретить файлы, не содержащие обычных разделителей (шестнадцатеричные коды 0D 0А - «возврат каретки» и «перевод строки»), и тогда в файле находится одна очень длинная строка (Windows ХР допускает обработку строк длиной до 4 Гб).
Наиболее многочисленную группу в файле представляют команды воспроизведения различных графических примитивов - отрезков прямых той или иной толщины, залитых и не залитых окружностей, дуг, круговых и эллиптических секторов, фрагментов кубических парабол. Особенно много таких примитивов порождается при обработке надписей. Аппаратура плоттеров, как правило, не содержит графические описания кириллических шрифтов, поэтому каждую русскую букву приходится формировать из достаточно большого количества графических примитивов. При этом надо учитывать, что дизайн российских карт, отсчитывающий свою историю от времен правления Петра I, предполагает использование только для топографических карт 26 различных символьных наборов.
Для листов топографических карт со средней нагрузкой объем соответствующего графического файла колеблется в диапазоне от 5 до 30 Мб и может содержать порядка 106 команд. Получив от пользователя заказ на отображение соответствующего фрагмента листа (а при увеличении в 8 раз дисплей позволяет отобразить на экране участок карты размером примерно 3x2.5 см), программа визуализации должна просмотреть все команды в графическом файле, и воспроизвести их на экране с соответствующим масштабным коэффициентом. На полном листе карты таких фрагментов от 100 до 1000, и к некоторым из них приходится обращаться не по одному разу. Кроме отображаемого фрагмента на экране должен находиться еще и уменьшенный вариант полного листа (окно навигации), по которому пользователь может определить положение текущего фрагмента. Поэтому лобовой вариант интерпретации команд графического файла представляется крайне неэффективным.
Сформулируем ряд проблем, решение которых позволило бы повысить эффективность системы отображения при обработке графических файлов большого размера.
Проблема 1. Можно ли уменьшить размеры графического файла? Единственный путь, который представляется нам возможным, заключается в максимальном использовании режима относительных координат в графических командах. В языке HP-GL предусмотрены две команды - PA (Plot Absolute) и PR (Plot Relative), обеспечивающие переход в режим абсолютных и относительных координат соответственно. Если учесть, что по умолчанию единицей измерения длины является 1/40 мм, то совершенно очевидно, что символьная запись абсолютных координат точки требует порядка 8-12 цифр. В режиме относительных координат позиция очередной точки задается в смещениях относительно текущего положения пишущего узла, что потребует всего 2-4 цифры. Таким образом, длина самой массовой команды PD x,y; (Pen Down - перемещение в заданную точку с опущенным пером) может уменьшиться с 10-16 символов до 6-8 символов (т.е. почти в 2 раза). Естественно, что решение указанной проблемы возлагается не на программу просмотра, а на программу подготовки графического файла по содержимому СБГД.
Проблема 2. Необходимо ли при многократных просмотрах фрагментов одной и той же карты каждый раз заниматься синтаксическим анализом текстового файла и преобразованием графических команд из символьного представления в соответствующие машинные форматы? Ответ очевиден - нет! Такую интерпретацию следует проделать один раз и при просмотре новых фрагментов нужно обрабатывать информацию, полученную при первичном анализе. Следовательно, решение второй проблемы заключается в создании подходящего формата внутреннего представления, исключающего повторение проделанной работы.
Следует отметить также, что введение подобного внутреннего представления позволяет заблаговременно (на этапе открытия файла) вычислить различные дополнительные характеристики объектов (площадь, взаимосвязи с другими объектами и пр.), которые при работе с фрагментом электронной карты позволяют ускорить его обработку.
Проблема 3. Есть ли необходимость воспроизводить всё множество графических команд электронной карты при просмотре её фрагмента? С одной стороны, возможно при каждом изменении коэффициента масштабирования растеризовать всю карту целиком, сохраняя её в виде промежуточного растрового изображения. Однако в этом случае возрастёт объём оперативной памяти компьютера, исполь-
зуемой для хранения промежуточного растра. Кроме того, при любом изменении масштаба карты будет выполняться генерация растрового представления всей карты заново, что повлечёт существенные временные потери.
Альтернативный подход основывается на идее динамического отбора графических команд, в зависимости от параметров запрашиваемого фрагмента (степень увеличения и положение на листе карты). Например, можно при каждом изменении масштаба обрабатывать только те объекты, которые пересекаются с указанным кадром (двумерное отсечение). Можно предложить и некоторые другие критерии отбора. Например, при малом коэффициенте увеличения вполне целесообразно отбрасывать те объекты, которые заведомо не будут различимы глазом (генерализация карты). При этом, непосредственное применение названных критериев не всегда достаточно эффективно.
Проблема 4. Как ускорить доступ к нужной информации при отборе графических команд, отображающих объекты, принадлежащие заданной области? К решению этой проблемы ведут два пути. Во-первых, в состав таблиц с внутренним представлением можно включить различные данные, упрощающие поиск. В роли таких данных обычно выступают некоторые характеристики графического объекта, например координаты его «точки привязки» (той точки, в которую пишущий узел переводится перед началом построения объекта). Другой путь заключается в индексировании внутренних данных, т.е. в построении системы указателей (индексов), обеспечивающих прямой доступ к графическим данным, привязанным к регулярным окнам просмотра.
Отметим, что при рассмотрении каждого из этих подходов, необходимо определиться с термином «объект». Нужно ли считать таковым объект в смысле классификатора соответствующей предметной области или абстрагироваться от такой содержательной трактовки и перейти на уровень простейших графических примитивов? В первом случае количество объектов существенно уменьшится, при этом появится тематическая зависимость. И хотя введение тематической зависимости является несомненным преимуществом, для её поддержки может потребоваться, чтобы программа подготовки графического файла перед формированием образа очередного картографического объекта заносила в HP-GL файл команду-комментарий (благо в версии HP-GL/2 такая команда с кодом СО появилась), по которой можно было автоматически определять точку привязки. Во
втором случае точка привязки и другие характеристики определяются элементарно, но зато количество объектов возрастает на один-два порядка.
Проблема 5. За счет чего можно ускорить процедуру отсечения графических команд, воспроизводящих объекты, не попадающие в кадр просмотра? Дело в том, что только точка привязки объекта не позволяет судить об его принадлежности к заданному окну просмотра. Картографический объект может быть линейным и достаточно протяженным или площадным с размерами, превышающими габариты окна просмотра, в которое попадают какие-то фрагменты объекта. Даже графический примитив, соответствующий длинному отрезку прямой, может начинаться за пределами окна просмотра, но, тем не менее, пересекать кадр. Существует довольно много алгоритмов отсечения, описанных в литературе, но в нашей задаче имеется достаточно важная специфика - приходится анализировать принадлежность окну просмотра не одного отрезка или его части, а множества мелких отрезков, образующих ребра ломаных или расположенных достаточно близко друг к другу (например, в случае аппроксимации контуров букв). В этом случае затраты на процедуру отсечения можно сократить примерно вдвое за счет того, что результаты анализа конца текущего отрезка можно учесть при анализе положения начала следующего отрезка.
Проблема 6. Можно ли сэкономить время просмотра при переходе к соседнему фрагменту, граничащему с текущим по одной из четырех границ? Плавная навигация по соседним областям листа карты - один из достаточно распространенных режимов работы редактора-картографа. В простейшем случае можно разбить лист карты на фиксированное число прямоугольных фрагментов и вести просмотр любого из них. Однако это не очень удобно. Во-первых, иногда желательно менять коэффициент масштабирования как в сторону увеличения, так и в сторону уменьшения. Во-вторых, скачкообразный переход к новому фрагменту не позволяет проанализировать структуру карты в районе границ смежных фрагментов. При плавной навигации возникает желание воспользоваться частью ранее полученного растрового изображения и заново воспроизвести только обновленную часть кадра. Таким образом можно примерно на 30% сократить время формирования следующего кадра и снизить неприятный эффект скачкообразного перехода к следующему изображению.
Ниже анализируются результаты реализации предложенных идей в различных версиях программ визуализации, разработанных З.А. Матвеевым во время обучения в магистратуре и аспирантуре ННГУ.
3. Предобработка исходного файла
Выше отмечалось, что синтаксический анализ исходного файла может быть выполнен однократно с целью создания более удобного внутреннего формата представления данных. При многократных сеансах работы с одним и тем же листом карты данные внутреннего формата могут быть сохранены с целью повторного их использования. Этап предварительной обработки исходного файла выполняется интерпретатором Parser, единственным входным аргументом которого является очередная графическая команда языка HP-GL/2 - cmd! .
Одна из задач интерпретатора - распознать символьный код графической операции, преобразовать значения параметров команды из символьного представления в целочисленный машинный формат.
Вторая задача заключается в объединении смежных команд в группы, соответствующие понятию абстрактного графического объекта и формированию атрибутов этого объекта. Выше упоминалось, что понятие объекта может варьироваться от тематически зависимого картографического объекта со всеми его характеристиками до элементарного примитива, представленного единственной командой языка HP-GL. На наш взгляд, может быть предложена некоторая промежуточная модель, представленная группами следующих графических команд (см. также [5-6]):
1) группа установочных команд, задающих цвет и толщину пишущего узла, а также тип окончания линии, влияющий на характер сопряжения смежных отрезков (такую группу может представлять и единственная команда выбора пера SP - Select Pen);
2) группа полигонов (ломанных и залитых областей), включающая в себя последовательности команд PD и полигоны, формируемые с использованием команды PM;
3) группа криволинейных объектов типа дуга, окружность, сектор а также залитые фигуры. При задании команд, соответствующих объектам этой группы, не используются координаты точек контура. Вместо этого используются некоторые геометрические характеристики объекта: его точка привязки, радиус и т.д. По данному признаку к этой группе можно также отнести группу команд LB (текстовые метки).
Рис. 1. Внутреннее представление: иерархия классов и пример экземпляра древовидной структуры данных (диаграмма объектов и соответствующая диаграмма классов ЦМЬ)
Команды управления пером (PD и PU). Команды этой группы используются как координатная основа для команд группы полигонов.
Группировка команд осуществляется иерархически. При этом, например, объекты из группы полигонов всегда являются дочерними по отношению к объектам из группы управления пером.
Можно привести следующие аргументы в пользу предлагаемой классификации. Во-первых, действие установочных команд распространяется на достаточно большой участок графической программы и их нельзя игнорировать при воспроизведении просматриваемого фрагмента карты. Во-вторых, выделение указанных групп в тексте исходной программы не представляет особого труда. В-третьих, применение второй группы содействует более эффективному использованию процедур GDI. Известно, что обращение к системной программе воспроизведения ломаной линии Polyline намного эффективнее, чем использование многократных вызовов функции LineTo. А в исходных файлах цепочки команд PD Xi, у, составляют подавляющее большинство. Наконец, цепочки такого вида могут быть сжаты примерно вдвое за счет перехода к относительным координатам (при условии, что в исходной программе использовались абсолютные координаты) и исключению повторения кода PD.
К атрибутам описанных выше абстрактных графических объектов мы относим координаты (хгуг) точки привязки (т.е. положение пишущего узла перед воспроизведением объекта) и габаритный прямоугольник - минимальный ограничивающий прямоугольник rect (MBB - Minimal Bounding Box). Параметрами последнего являются координаты двух его противоположных вершин. Использование MBB в подавляющем большинстве случаев выполняет роль грубого критерия при решении задачи отсечения видимых объектов. Можно привести ряд примеров, когда окно вывода принадлежит MBB, но соответствующий объект не видим. Например, объектом является окружность большого диаметра, а окно вывода находится внутри нее. Или MBB образован единичным отрезком, проходящим по одной из диагоналей, а окно вывода целиком разместилось в одном из треугольников. Однако количество объектов такого рода на листах карт ничтожно мало.
Преобразование параметров команды и их иерархическая группировка выполняются с учётом того, что в дальнейшем при просмотре объекта и отборе нужных объектов необходимо обеспечить быстрый доступ к произвольному
объекту. Общая схема иерархической группировки графических объектов представлена на прилагаемом рис. 1.
Как видно из рисунка, графические объекты второй и третьей групп располагаются на одном уровне; это обусловлено их сходством с точки зрения дальнейшего индексирования, а также тем, что в некоторых случаях объекты третьей группы могут быть преобразованы в полигональные объекты. Отметим также, что в целях оптимизации на практике не создаются экземпляры объектов типа Vertex (объекты 3 уровня); вместо этого используется специальный алгоритм обработки отрезков.
При построении описываемой иерархической структуры данных для каждого объекта (за исключением объектов нижнего уровня) заблаговременно вычисляются точки привязки и MBB. При этом MBB объектов n-1 уровня определяется как минимальный прямоугольник, включающий MBB всех дочерних объектов n уровня.
4. Индексация объектов
во внутреннем формате
Предварительная обработка данных позволяет выполнять дальнейшее эффективное индексирование картографических документов при просмотре увеличенных фрагментов карты. При этом в качестве выходных данных алгоритма индексирования выступает специализированная структура данных, называемая индексом, содержащая номера тех графических объектов, которые удовлетворяют одному или нескольким критериям отбора.
Индекс строится динамически. Это означает, что для каждого нового окна просмотра индекс очищается и заполняется заново на основе выбранного критерия. При этом внутреннее представление индекса также является иерархическим (см. рис. 1). Это позволяет, в частности, минимизировать число операций отсечения объектов, т.к. если объект верхнего уровня не попадает в индекс (лежит целиком вне окна просмотра) - отпадает необходимость в индексировании всего множества его дочерних объектов, т.к. все они также заведомо не попадают в индекс. Аналогично, если объект верхнего уровня лежит целиком внутри окна отсечения, нет необходимости применять критерий отсечения для всех его дочерних объектов, т.к. очевидно, что каждый из них попадает в индекс.
Для объектов, расположенных на первых двух уровнях иерархии основным критерием отбора является пересечение MBB объекта с
Таблица
Сравнительный анализ разработанного ПО и сторонних программных продуктов (тестовая конфигурация: PC на базе Intel Core Duo T2130, 1.86GHz, 1Gb RAM; размер рабочей области приложения «1400*800 пикселей): время отображения в мс; приведены усредненные данные; для View Companion Pro даны оценочные значения
Увеличение Разработанное ПО SPlot32 (v4.10) View Companion Pro (v 3.10)
Параллельная версия | Последовательная
Карта A (объём: 29 Mb, 2.1 млн. HP-GL команд, 429 объектов 1 уровня, 59 тыс. г] рафических объектов 2 уровня)
1х 920 1250 8700 5500
2х 320 560 6800 5200
4х 125 125 4600 2400
Карта В (объём: 19.5 МЬ, 1.546 млн ИР-ОЬ команд, 15331 объект 1 уровня, 388 тыс. графических объектов 2 уровня)
1х 1200 1325 9200 7300
2х 640 780 9900 6000
4х 290 330 14500 7000
текущим окном просмотра; и при индексировании выполняется двумерное отсечение ограничивающих прямоугольников. А в случае, если MBB объекта второго уровня лежит на границе окна просмотра - выполняется уточняющий шаг: двумерное отсечение дочерних объектов третьего уровня (отрезков). При этом для определения принадлежности очередной точки окну просмотра используется информация о предыдущей точке, полученная на предыдущем шаге согласно алгоритму, описанному в [7].
Наряду с анализом взаимного расположения объектов и окна отсечения, при построении индекса учитываются относительные размеры объектов. Если при данном значении коэффициента масштабирования объект является неразличимым на экране дисплея (его площадь или периметр меньше некоторых наперёд заданных величин) - он также не заносится в индекс. В данном случае уже используется критерий генерализации.
На практике, в целях оптимизации возможны некоторые отклонения от описанной схемы. Например, если пользователь выполняет два последовательных запроса на отображение фрагментов с увеличением п и 2п соответственно (без сдвига окна просмотра), при переходе от одного фрагмента к другому индекс не очищается, т.к. индекс, построенный при первом запросе, уже содержит все необходимые идентификаторы объектов - и остаётся лишь отбросить те, из них, которые не принадлежат новому фрагменту. Другая особенность используемого подхода заключается в том, что для залитых областей на практике не выполняется уточняющее индексирование, т.к. двумерное отсечение залитой области само по себе является трудоёмкой задачей.
Не все разработанные алгоритмы оптимизации просмотра укладываются в схему предобработки и последующего индексирования карты. Например, существенный прирост производительности был достигнут за счёт реализации сформулированной в разделе «Предварительный анализ» идеи совмещения смежных фрагментов карты.
Кроме того, в рамках разрабатываемого ПО удалось снизить время отображения на 20-25% за счёт использования параллельной модификации алгоритма просмотра, ориентированной на получившие в последнее время широкое распространение многоядерные процессоры. Наконец упомянем, что на основе анализа узких мест программы были применены различные методы низкоуровневой оптимизации: использование внутреннего менеджера памяти; кеширование идентификаторов команд; использование целочисленной арифметики при изменении масштаба карты; а также алгоритмы эффективного динамического переключения цветовых схем.
Выводы
Применение изложенных выше подходов позволило достичь высокой степени эффективности при просмотре электронных карт, используемых в комплексах автоматизированных картографических систем НИИ ПМК. Реализация алгоритмов предобработки, индексирования, генерализации изображения, параллельной версии алгоритма фрагментации и принципа совмещения растра позволила существенно уменьшить время построения фрагмента изображения и изображения в целом.
Достигнутые показатели оказались значительно выше показателей сторонних коммерческих программных продуктов (см. [9-10]), пред-
назначенных для решения аналогичных задач. Как видно из приведённой таблицы, при однократном увеличении выигрыш по сравнению со сторонними продуктами составил порядка 5-6 раз, что было достигнуто благодаря использованию внутреннего представления карты и применению критерия генерализации. Наибольший же выигрыш достигается при 4-8 кратном увеличении просматриваемого изображения (время отображения фрагмента меньше в 10-25 раз), что было обусловлено в свою очередь применением алгоритмов индексирования карты.
Список литературы
1. Васин Ю.Г., Башкиров О.А., Кетков Ю.Л. и др. Автоматизированная система обработки информации морских карт (АСОИМК) // 3-я Вс. конф. «Методы и сред. обработки сложной графической информации». Горький, 1988.
2. Васин Ю.Г., Кетков Ю.Л., Куракина И.М. КАРТ-ДОК: система визуального контроля, обновления и подготовки к изданию цифровых топографических карт и планов городов // Всероссийская конф. КОГРАФ-98. Н. Новгород, 1998.
3. Vasin Yu.G., Yasakov Yu.V. GIS Terra: A graphic database management system // Pattern Recognition and Image Analysis. 2004. V. 14, No 4. Р. 579-586.
4. The HP-GL/2 and HP RTL: Reference Guide. A Handbook for Program Developers.
5. Матвеев З.А. О некоторых алгоритмах просмотра цифровых карт в формате HPGL // Информационные технологии: Труды НГТУ. Н. Новгород, 2005. Т. 56. Вып. 2. С. 56-62.
6. Матвеев З.А. О некоторых задачах разработки программного обеспечения просмотра электронных карт // Известия академии инженерных наук им. А.М. Прохорова. Бизнес-Информатика / Под ред. Ю.В. Гуляева. Москва-Н. Новгород: ТАЛАМ, 2006. Т. 17. C. 176-177.
7. Кетков Ю. Л., Кирьянов С. К. Нижегородский университет, оптимизация времени отображения векторных графических изображений большого размера: Труды 11 Междунар. конф. «Графикон-2001». Н. Новгород, 10-15 сентября 2001.
8. Юань Фень. Программирование графики для Windows (+CD). СПб.: Питер, 2002.
9. Novy A. SPLOT - The Plotter Simulator v4.x for Win32. (http://www.swplot.com)
10. ViewCompanion. Standard and Pro Versions. Quick Reference. 2004. (http://www.softwarecompa-nions. com/vcpro. html).
11. Гамма Э., Хелм Р., Джонсон Р., Влисси-дес Дж. Приёмы объектно-ориентированного программирования. Паттерны проектирования. СПб: Питер, 2004. 366 с
12. Guting R.H. An introduction to spatial database systems // VLDB Journal. 1994. 3(4). Р. 357-399.
METHODS INCREASING THE EFFICIENCY OF CARTOGRAPHIC DOCUMENT PRESENTATION SYSTEMS
Yu.L. Ketkov, Z.A Matveev
Preview optimization algorithms for large digital electronic maps have been developed and studied.