Главная страница Visual 2000 · Общий список статей

Пакет Surfer — обработка и визуализация двумерных функций

Андрей Колесов, Ольга Павлова

© 1999, Андрей Колесов, Ольга Павлова
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале "КомпьютерПресс" № 2/99 (компакт-диск).

Загрузить все рисунки, прилагаемые к статье (архивный файл — 268 Кб)


Версия Surfer 5.0...
А. Построение цифровой модели поверхности
Б. Вспомогательные операции с поверхностями
В. Визуализация изображений поверхности
Макросредства управления пакетом
Новшества Surfer 6.0


Версия Surfer 5.0...

Версия Surfer 5.0 для Windows 3.x была выпущена в 1994 г. Год спустя, одновременно с выходом Windows 95, вышел пакет Surfer 6.0, который был представлен двумя вариантами: 32-разрядным для работы в среде Windows NT/95 и 16-разрядным для Windows 3.1. При установке пакета пользователь может выбрать нужную версию программы сам или доверить это инсталляционной программе, которая определит конфигурацию системы и сделает выбор версии автоматически. Описание пакета мы построим таким образом: расскажем сначала о возможностях версии 5.0, а потом — о новшествах Surfer 6.0.

Основным назначением Surfer является обработка и визуализация двумерных наборов данных, описываемых функцией типа z=f(x,y). Логику работы с пакетом можно представить в виде трех основных функциональных блоков:

а) построение цифровой модели поверхности; б) вспомогательные операции с цифровыми моделями поверхности; в) визуализация поверхности.

А. Построение цифровой модели поверхности

При всей эффектности графической визуализации данных изюминкой подобных пакетов, безусловно, является реализованный в них математический аппарат. Дело в том, что не получив ясного ответа на вопрос: "Какой метод заложен в основе преобразования данных и где можно увидеть оценку достоверности всех этих преобразований?", пользователь (в данном случае, скорее всего, научный работник), возможно, уже не будет интересоваться всеми остальными достоинствами программы.

Цифровая модель поверхности традиционно представляется в виде значений в узлах прямоугольной регулярной сетки, дискретность которой определяется в зависимости от конкретной решаемой задачи. Для хранения таких значений Surfer использует собственные файлы типа GRD (двоичного или текстового формата), которые уже давно стали своеобразным стандартом для пакетов математического моделирования.

В принципе возможны три варианта получения значений в узлах сетки, все они реализованы в пакете:

  1. по исходным данным, заданным в произвольных точках области (в узлах нерегулярной сетки), с использованием алгоритмов интерполяции двумерных функций;
  2. вычисление значений функции, заданной пользователем в явном виде; в состав пакета входит достаточно широкий набор функций — тригонометрических, Бесселя, экспоненциальных, статистических и некоторых других (рис. 1);
  3. переход от одной регулярной сетки к другой, например при изменении дискретности сетки (здесь, как правило, используются достаточно простые алгоритмы интерполяции и сглаживания, так как считается, что переход выполняется от одной гладкой поверхности к другой).

Кроме того, разумеется, можно использовать готовую цифровую модель поверхности, полученную пользователем, к примеру, в результате численного моделирования (это достаточно частый вариант использования пакета Surfer в качестве пост-процессора).

Первый вариант получения сеточной модели чаще всего встречается в практических задачах и именно алгоритмы интерполяции двумерных функций при переходе от нерегулярной сетки к регулярной являются "изюминкой" пакета.

Дело в том, что процедура перехода от значений в дискретных точках к поверхности является нетривиальной и неоднозначной, для различных задач и типов данных требуются разные алгоритмы (вернее, не "требуются", а "лучше подходят", т.к. на 100%, как правило, ни один не годится). Таким образом, эффективность программы интерполяции двумерных функций (это относится и к проблеме одномерных функций, но для двумерных все гораздо сложнее и разнообразнее) определяется следующими элементами:

  1. набором разнообразных методов интерполяции;
  2. возможностью исследователя управлять различными параметрами этих методов;
  3. наличием средств оценки точности и достоверности построенной поверхности;
  4. возможностью уточнить полученный результат на основе личного опыта эксперта с учетом разнообразных дополнительных факторов, которые не могли быть отражены в виде исходных данных.

Пакет Surfer 5.0 предлагает своим пользователям семь алгоритмов интерполяции: Крикинг (Kriging), Инверсные Расстояния (Inverse Distance), Минимизация Кривизны (Minimum Curvature), Радиальные Базовые Функции (Radial Basis Functions), Полиномиальная Регрессия (Polynomial Regression), Метод Шепарда (Shepard's Method, представляющий собой комбинацию метода Инверсных расстояний со сплайнами) и Триангуляция (Triangulation). Расчет регулярной сетки теперь может выполняться для файлов наборов данных X,Y,Z любого размера, а сама сетка может иметь размеры 10000*10000 узлов.

Увеличение числа методов интерполяции позволяет значительно расширить круг решаемых задач. В частности, метод Триангуляции может быть использован для построения поверхности по точным значениям исходных данных (например, поверхность земли по данным геодезической съемки), а алгоритм Полиномиальной Регрессии — для анализа тренда поверхности.

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

Кроме того, имеется встроенный графический редактор для ввода и коррекции значений данных сеточной области, при этом пользователь сразу видит результаты своих действий в виде изменения карты изолиний (рис. 3). Для целого класса задач (особенно связанных с описанием природных данных), которые, как правило, невозможно описать точной математической моделью, эта функция является часто просто необходимой.

Ввод данных выполняется из файлов форматов [.DAT] (Golden Software Data), [.SLK] (Microsoft SYLK), [.BNA] (Atlas Boundary) или простого текстового ASCII файла, а также из электронных таблиц Excel [.XLS] и Lotus [.WK1, .WKS]. Исходная информация может также вводится или редактироваться с помощью встроенной электронной таблицы пакета, при этом возможны дополнительные операции с данными, например сортировка, а также преобразование чисел с помощью задаваемых пользователем уравнений.

В начало статьи

Б. Вспомогательные операции с поверхностями

В Surfer для Windows реализован большой набор дополнительных средств преобразования поверхностей и различных операций с ними:

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

В начало статьи

В. Визуализация изображений поверхности

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

  1. получение изображения путем наложения нескольких прозрачных и непрозрачных графических слоев;
  2. импорт готовых изображений, в том числе полученных в других приложениях;
  3. использование специальных инструментов рисования, а также нанесение текстовой информации и формул для создания новых и редактирования старых изображений.

Использование многооконного интерфейса позволяет выбрать наиболее удобный режим работы. В частности, можно одновременно видеть числовые данные в виде электронной таблицы, карту, построенную на базе этих данных, и справочную информацию из текстового файла (рис. 4).

В Surfer 5.0 в качестве основных элементов изображения используются следующие типы карт:

  1. Карта изолиний (Countour Map). В дополнение к уже традиционным средствам управления режимами вывода изолиний, осей, рамок, разметки, легенды и пр. здесь реализована возможность создания карт с помощью заливки цветом или различными узорами отдельных зон (рис. 5). Кроме того, изображение плоской карты можно вращать и наклонять, использовать независимое масштабирование по осям X и Y.
  2. Трехмерное изображение поверхности (3D Surface Map). Для таких карт используются различные типы проекции, при этом изображение можно поворачивать и наклонять, используя простой графический интерфейс. На них можно также наносить линии разрезов, изолиний (рис. 6), устанавливать независимое масштабирование по осям X, Y, Z, заполнять цветом или узором отдельные сеточные элементы поверхности.
  3. Карта исходных данных (Post Map). Эти карты используются для изображения точечных данных в виде специальных символов и текстовых подписей к ним. При этом для отображения числового значения в точке можно управлять размером символа (линейная или квадратичная зависимость) или применять различные символы в соответствии с диапазоном данных (рис. 7). Построение одной карты можно выполнять с помощью нескольких файлов.
  4. Карта основы (Base Map). Это может быть практически любое плоское изображение, полученное с помощью импорта файлов различных графических форматов: AutoCAD [.DXF], DOS Surfer [.BLN, .PLT], Atlas Boundary [.BNA], Golden Software MapViewer [.GSB], Windows Metafile [.WMF], USGS Digital Line Graph [.LGO], Bitmap Graphics [.TIF], [.BMP], [.PCX], [.GIF], [.JPG], [.DCX], [.TGA] и некоторых других. Эти карты могут быть использованы не только для простого вывода изображения, но также, например, для вывода некоторых областей пустыми. Кроме того, при желании эти карты можно использовать для получения границ при выполнении расчетов поверхности, ее преобразовании, рассечении и пр.

С помощью разнообразных вариантов наложения этих основных видов карт, их различного размещения на одной странице можно получить самые различные варианты представления сложных объектов и процессов. В частности, можно очень просто получить разнообразные варианты комплексных карт с совмещенным изображением распределения сразу нескольких параметров (рис. 8). Все типы карт пользователь может отредактировать с помощью встроенных инструментов рисования самого Surfer.

Очень эффектным и удобным для анализа является также представление нескольких карт виде объемной "этажерки". Причем это может быть как различное представление одних наборов данных, например, трехмерное изображение плюс цветная карта изолиний (рис. 9), так и серия разных наборов, например, площадное распределение одного параметра на разные моменты времени или нескольких различных параметров (рис. 10).

Все эти возможности представления изображений могут быть очень полезны при сравнительном анализе влияния различных методов интерполяции или их отдельных параметров на вид результирующей поверхности (рис. 11).

Отдельно следует затронуть проблему использования русских шрифтов. Дело том, что шрифты SYM, поставляемые с пакетом, естественно, не русифицированы, поэтому приходится пользоваться шрифтами Windows типа TrueType. Но для некоторых режимов вывода изображений они не подходят, например, при выводе текста под углом символы иногда искажаются до неузнаваемости. В этом случае лучше применять векторные шрифты SYM с начертанием одинарной линией (они всегда хорошо видны), а в готовом виде имеются только латинские. Однако существует достаточно простое решение этой проблемы.

В версии Surfer для DOS имелась специальная утилита ALTERSYM для создания собственных наборов шрифтов SYM (к сожалению, она исчезла в версии для Windows, поэтому можно воспользоваться DOS-овской версией). Но она позволяет создавать и редактировать только основной набор символов (ASCII-коды 32-127). Мы в свое время решили эту проблему для версии DOS следующим образом: написали утилиту, которая создает полный набор символов (1-255) из файлов-заготовок, созданных программой ALTERSYM, с которым прекрасно работают модули вывода VIEW и PLOT. Этот подход вполне годится и для Windows-версии Surfer.

Полученные графические изображения можно вывести на любое печатающее устройство, поддерживаемое Windows, или выдать в файл формата AutoCAD [.DXF], Windows Metafile [.WMF], Windows Clipboard [.CLP], а также HP Graphics Language [.HPGL] и Encapsulated PostScript [.EPS]. Двухсторонний обмен данными и графикой с другими Windows-приложениями может выполняться также через Буфер Обмена Windows. Кроме того, графические изображения, подготовленные в Surfer, можно экспортировать в пакет MapViewer, наложить на него карту территории и получить карту распределения этого параметра на конкретной территории (рис. 12 и 13).

В начало статьи

Макросредства управления пакетом

В Surfer 5.0, созданном еще в 1994 г., почти одновременно с офисными пакетами Microsoft Office 4.0 была реализована объектная компонентная модель на основе поддержки механизма OLE 2.0 Automation (то, что сегодня называется ActiveX). Это обеспечивает возможность интегрированного применения Surfer в качестве ActiveX-сервера в комплексных системах обработки данных и моделирования.

На любом языке, который также поддерживает этот механизм (например Visual Basic, C++ или Visual Basic for Applications), можно написать управляющий макрофайл для Surfer. В частности, с помощью набора макрофайлов можно выполнять в автоматическом режиме некоторые часто повторяющиеся задания. Или же такой файл может формироваться в процессе выполнения какой-либо прикладной расчетной программы для автоматической обработки и визуализации данных.

Например, следующая функция, написанная на VB, выполняет создание карты изолиний и вставку ее изображения в электронную таблицу с именем "Sheet1":

Function MakeMap()
  ' определение переменной Surf в качестве объекта
  Dim Surf as Object
  ' установка соответствия между переменной Surf
  ' и программой Surfer
  Set Surf = CreatObject("Surfer.App")
  GrdFile$ = "c:\winsurf\demogrid.grd" ' имя входного GRD-файла
  ' выполнение макрокоманд пакетом Surfer
  Surf.MapCountour(GrdFile$) ' построить карту изолиний
  Surf.Select                              ' выделить изображение
  Surf.EditCopy                         ' скопировать выделенное изображение
                                                 ' в Буфер Обмена
  ' это уже команда Excel — вставить изображение из
  ' Буфера Обмена в текущую позицию таблицы Sheet1
  Worksheets("Sheet1").Picture.Paste
End Function

Смысл этой процедуры достаточно понятен. Сначала переменная Surf определяется как объект и ей ставится в соответствие пакет Surfer (Surfer.App). Далее идут команды, которые VBA уже интерпретирует как обращение к функциям Surfer (их названия соответствуют командам, которые пользователь выбирает в режиме диалога), выполняющимся через механизм ActiveX.

Кроме того, пакет Surfer имеет собственный макроязык, который фактически является разновидностью VBA и который используется для написания управляющих запросов в специальной программе SG Scripter (файл GSMAC.EXE). Например, с помощью такой простой программы можно реализовать макрокоманду, которая автоматически выполняет построение карт изолиний для одного набора исходных данных, используя все семь методов интерполяции:

' создание объекта Surfer
Set Surf = CreateObject("Surfer.App")
' построение карты каждым методом интерполяции
' для файла исходных данных DEMOGRID.DAT
For Method = 0 to 6
  ' открыть новый документ рисования
  Surf.FileNew()
  ' расчет GRD-файла текущим методом интерполяции
  If Surf.GridData("DEMOGRID.DAT", GridMethod=Method,_
        OutGrid="SAMPLE") = 0 Then End
  ' построение карты изолиний
  If Surf.MapContour("SAMPLE") = 0 Then End
Next

Запуск в автоматическом режиме подобных заданий, которые представлены в виде программы, написанной в GS Scripter, можно выполнить либо из командной строки:

c:\winsurf\gsmac.exe /x task.bas

либо из любого приложения командой SHELL:

SHELL ("c:\winsurf\gsmac.exe /x task.bas")

(ключ /x указывает на необходимость автоматического выполнения программы task.bas).

Программа GS Scripter может также использоваться для управления любыми другими программами, поддерживающими ActiveX (например для работы с MS Office).

В начало статьи

Новшества Surfer 6.0

Как мы уже говорили, Surfer 6.0 представлен 16-разрядной и 32-разрядной версиями. Но кроме этого появилось несколько полезных функциональных расширений. В первую очередь следует отметить возможность использования еще двух типов карт фоновой основы при построении плоских изображений: Image Map (Карта Изображения) и Shaded Relief Map (Затененная Карта Рельефа).

Встроенные средства рисования Image Map делают процедуру создания цветных карт достаточно простой и быстрой. При этом можно использовать многоцветное заполнение изображений, в том числе с помощью цветовых комбинаций, созданных самим пользователем.

Но особенно впечатляют возможности карты Shaded Relief Map, позволяющий получать непосредственно в среде Surfer изображения типа высококачественных фотографий (рис. 14), которые можно применять как для совместного использования с картами изолиний, так и автономно. При этом пользователь может управлять всеми параметрами, необходимыми для создания наиболее выразительных изображений, включая местоположение источника света, относительный градиент наклона, тип затенения и цвет. У пользователя пакета появилось также больше возможностей по визуализации данных и компоновке различных изображений на одном экране (рис. 15 и 16).

Расширен набор вспомогательных операций при обработке цифровой поверхности. Используя новые функции Grid Calculus (Обработка Регулярной Сетки), можно определять наклон, кривизну и линию горизонта обзора в конкретной точке поверхности, а также вычислять первые и вторые производные для функций Фурье и спектрального анализа. А дополнительные средства Grid Utilities позволяют преобразовывать, смещать, масштабировать, вращать и зеркально отображать данные в GRD-файлах (формат для хранения значений в узлах регулярной сетки). После этого можно сделать любую выборку подмножества набора данных по номерам столбцов и колонок или просто произвольных узлов сетки.

С точки зрения математического аппарата построения поверхности очень важным представляется реализация еще одного алгоритма интерполяции — Ближайший Сосед (Nearest Neighbor), а также трех уровней вложения вариограмм, что позволяет создавать более 500 результирующих комбинаций.

Созданные ранее изображения на основе различных типов карт (Contour Map, Shaded Relief Map, Post Map, Image Map) можно использовать в качестве шаблона путем подстановки в уже существующие карты нового GRD-файла. Кроме того, теперь, объединив сначала в одно изображение несколько слоев различных карт, можно разделить их потом на исходные элементы и переделать на основе новых данных.

Из чисто сервисных функций следует выделить возможность занесения данных оцифровки линий границ и произвольных точек с экрана прямо в ASCII-файл, а также автоматическое создание легенды для различных типов точек карты Post Map. В качестве цифровой модели поверхности теперь можно импортировать файлы формата Digital Elevation Model (DEM) прямо из Internet (или любого другого источника информации). И наконец, новые форматы экспорта данных позволяют сохранять изображения карт практически во все растровых форматах (PCX, GIF, TIF, BMP, TGA, JPG и многие другие).

В начало статьи