oldi

Продукты фирмы Golden Software для ученых и инженеров

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

Этапы большого пути

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

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

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

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

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

   Новшества Surfer 6.0

Этапы большого пути

Небольшая американская фирма Golden Software (http://www.goldensoftware.com), названная так по имени города Голден в штате Колорадо, где она находится, существует с 1983 года и занимается разработкой пакетов научной графики. Ее первый программный продукт Golden Graphics System, выпущенный в том же году, предназначался для обработки и вывода изображений наборов данных, описываемых двухмерной функцией типа z=f(y,x). Впоследствии этот пакет получил название Surfer, которое сохранилось за ним до нынешних времен. А через два года появился пакет Grapher, предназначенный для обработки и вывода графиков наборов данных и функций типа y=f(x).

Именно эти пакеты для DOS были очень популярны (конечно же, в виде нелегальных копий) в конце 80-х среди советских специалистов, занимающихся различными аспектами математической обработки данных, в первую очередь в рамках широкого круга наук о Земле, таких как геология, гидрогеология, сейсмика, экология, метеорология, а также в других смежных областях.

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

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

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

По версии, услышанной в 1994 году на Международной конференции по аналитическим моделям геофильтрации в Индианаполисе, автором Surfer и основателем компании был аспирант-гидрогеолог одного из американских университетов. «Геологические» корни продуктов фирмы представляются почти очевидным фактом.

Вообще-то, город Голден — мал да удал. В нем находятся известный центр подготовки специалистов в области наук о земле Colorado School of Mines и его дочерняя фирма International Ground Water Modeling Center (Международный центр по моделированию подземных вод), которая занимается также созданием, тестированием и распространением гидрогеологических программ (в том числе предоставленных независимыми разработчиками).

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

В 1990 году фирма объявила о прекращении развития версий для DOS и о начале разработки программных продуктов для Windows. В 1991 году появился новый пакет MapViewer (инструмент для анализа и визуализации географически распределенной числовой информации и построения информативных тематических карт — Thematic Mapping Software), а затем вышли Windows-версии уже известных пакетов: в 1993 году — Grapher 1.0, а в 1994 году — Surfer 5.0. В 1996 году был выпущен еще один новый продукт — Didger (оцифровка графической информации), который очень удачно дополнял функциональность других программ Golden Software.

Здесь, однако, следует подчеркнуть, что, прекратив развитие версий для DOS, фирма продолжала их поддержку до 1995 года: продажа лицензионных копий, консультации и пр. Такое уважительное отношение к пользователю (продавать то, что нужно клиенту, а не работать по принципу «бери что есть»), согласитесь, встречается сегодня нечасто.

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

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

Сейчас фирма Golden Software предлагает четыре продукта для Windows 95/98/NT: Surfer 6.0, Grapher 2.0, MapViewer 3.0 и Didger 1.0. Именно о них и пойдет речь в нашем обзоре.

 

В начало

В начало

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

Версия Surfer 5.0 для Windows 3.x была выпущена в 1994 году. Год спустя, одновременно с выходом Windows 95, вышел пакет Surfer 6.0, который был представлен двумя вариантами — 32-разрядным для работы в среде Windows NT и Windows 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 любого размера, а сама сетка может иметь размеры 10 000х10 000 узлов.

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

При этом обеспечены широкие возможности по управлению методами интерполяции со стороны пользователя. В частности, наиболее популярный в обработке экспериментальных данных геостатистический метод Крикинга теперь включает возможность применения различных моделей вариограмм, использования разновидности алгоритма со сносом, а также учета анизотропии. При расчете поверхности и ее изображения можно также задавать границу территории произвольной конфигурации (рис. 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. Карта изолиний (Contour 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 и PLOT1 . Этот подход вполне годится и для 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).

Расширен набор вспомогательных операций при обработке цифровой поверхности. Используя новые функции 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 и многих других).

Продолжение следует

КомпьютерПресс 2'1999