定義
VisAD(算法開發的可視化)是用於數字數據的互動式和協作可視化以及分析的 Java 組件庫。
介紹
VisAD(算法開發的可視化)是用於數字數據的互動式和協作可視化以及分析的 Java 組件庫。威斯康星大學的 Space Science and Engineering Center (ssec)、University Corporation for Atmospheric Research (UCAR) Unidata Program、位於 Urbana-Champaign 的 Illinois 大學的 National Center for supercomputer Applications (NCSA) 以及澳大利亞氣象局的開發人員由於希望使其先進的可視化技術對科學家的日常工作有用而協作創建了 VisAD。
VisAD 使用了 Java 2 的一些特性,包括用於可視化的 Java3D 和 Java2D、用於分布對象的 RMI 和用於連結到舊算法的 JNI。(VisAD 的分析和可視化代碼是純 Java 代碼,但它確實支持到以其它語言編寫的用戶原有代碼的 JNI 連線。)事實上,它的數學數據模型可以套用到任何數字數據;支持用戶、數據源和科學規範間數據共享;提供對那些不依賴於存儲格式和位置的數據的透明訪問。它可以訪問 netCDF、FITS、HDF-EOS、McIDAS、Vis5D、GIF、QuickTime、TIFF、ASCII 和 JPEG 檔案格式的數據。它的顯示模型支持互動式 3-D、數據溶合、多個數據視圖、直接操作、協作和虛擬現實。數據分析和計算與可視化集成在一起以支持計算指導和其它複雜的互動模式。VisAD 是設計用來支持更寬範圍的用戶界面,從簡單的數據瀏覽器 Applet 到可以使多組科學家協作開發數據分析算法的複雜應用程式。
VisAD 分發版包括原始碼(還有以 .jar 檔案表示的已編譯類)文檔和幾個來自地球科學、天文學和其它學科的樣本應用程式。還包括 VisAD Spread Sheet,它使得無需編寫任何應用程式代碼就可以訪問許多 VisAD 的特性。
VisAD 的當前版本是 2.0,可以自由獲得,由 GNU Lesser General Public License (LGPL) 特許。
使用示例
import visad.*;
import visad.java2d.DisplayImplJ2D;
import java.rmi.RemoteException;
import java.awt.*;
import javax.swing.*;
/**
VisAD指南示例 P1_01
第一個指南示例.根據MathType( time -> height )而描述的一個方程式
height = f(time), 這個方程式描述了一條簡單的線
這個方程的表達式如下: height = 45 - 5 * time^2,
我們現在擁有height的值,而time是一個連續的獨立的具有值的變數
在程式中我們在Set中設定它的值
運行程式"P1_01"
*/
public class P1_01{
// Declare variables
// The quantities to be displayed in x- and y-axis
private RealType time, height;
// The function height = f(time), represented by ( time -> height )
private FunctionType func_time_height;
// Our Data values for time are represented by the set
private Set time_set;
// The Data class FlatField, which will hold time and height data.
// time data are implicitely given by the Set time_set
private FlatField vals_ff;
// The DataReference from the data to display
private DataReferenceImpl data_ref;
// The 2D display, and its the maps
private DisplayImpl display;
private scalarMap timeMap, heightMap;
// The constructor for our example class
public P1_01 (String []args)
throws RemoteException, VisADException {
// Create the quantities
// Use RealType(String name)
time = new RealType("time");
height = new RealType("height");
// Create a FunctionType, that is the class which represents our function
// This is the MathType ( time -> height )
// Use FunctionType(MathType domain, MathType range)
func_time_height = new FunctionType(time, height);
// Create the time_set, with 5 integer values, ranging from 0 to 4.
// That means, that there should be 5 values for height.
// Use Integer1DSet(MathType type, int length)
time_set = new Integer1DSet(time, 5);
// Those are our actual height values
// Note the dimensions of the array:
// float[ number_of_range_components ][ number_of_range_samples]
float[][] h_vals = new float[][]{{0.0f, 33.75f, 45.0f, 33.75f, 0.0f,} };
// Create a FlatField, that is the class for the samples
// Use FlatField(FunctionType type, Set domain_set)
vals_ff = new FlatField( func_time_height, time_set);
// and put the height values above in it
vals_ff.setSamples( h_vals );
// Create Display and its maps
// A 2D display
display = new DisplayImplJ2D("display1");
// Create the ScalarMaps: quantity time is to be displayed along x-axis
// and height along y-axis
// Use ScalarMap(ScalarType scalar, DisplayRealType display_scalar)
timeMap = new ScalarMap( time, Display.XAxis );
heightMap = new ScalarMap( height, Display.YAxis );
// Add maps to display
display.addMap( timeMap );
display.addMap( heightMap );
// Create a data reference and set the FlatField as our data
data_ref = new DataReferenceImpl("data_ref");
data_ref.setData( vals_ff );
// Add reference to display
display.addReference( data_ref );
// Create application window, put display into it
JFrame jframe = new JFrame("My first VisAD application");
jframe.getContentPane().add(display.getComponent());
// Set window size and make it visible
jframe.setSize(300, 300);
jframe.setVisible(true);
}
public static void main(String[] args)
throws RemoteException, VisADException
{
new P1_01(args);
}
}