本文主要对对XML数据源进行描述。
1. 过程线图形数据描述
使用水文过程线组件的重点在于构建XML数据源,因为所有的过程线对象在数据描述中都将描述为XML数据的一个节点,而对象的包含关系则反映到XML的层次结构上,而对象的属性则反映到对应节点的属性。下面对每个对象以及其常用的属性进行描述:
1.1 图表集合(chartCollection)
我们的设计是一个图表可以包含多个图表(留有接口,但未实现),每个图表可以分布在用户界面的不同空间位置。该对象有一个属性。
l Caption:表示该图表集合的名称,没有实际用途。
1.2 图表(chart)
一个图表即代表一个过程线,如一个水文过程线,一个水位示意图。该对象有3个常用的属性:
l background-color:图表的背景颜色。你可以使用颜色名称,如“red”,“blue”等,也可以使用RGB值(格式是“#RRGGBB”),如用“#FF0000”表示纯红色。以下所有涉及到颜色的属性都具备相同的特性。
l showShortGraduate:图表是否显示小刻度线,默认不显示(New)。
l showVAssistantLine:图表是否显示垂直方向的辅助线,默认不显示(New)。
l showHAssistantLine:图表是否显示水平方向的辅助线,默认不显示(New)。
l isCharacterLineLabel:图表是否在特征值线上做标注,默认做标注(New)。
l caption:过程线图表的标题,这个标题将显示在图表的标题部位,一般在上方。
l type:代表图表的类型。这个属性非常重要,组件将根据这个属性来生成不同专业类型的过程线。其中type的值含义如下:0代表所有时间序列(T-D)的过程线;1代表所有字符序列(S-D)的过程线;2表示水位示意图;3表示所有数值序列(D-D)的过程线;4表示断面示意图。
1.3 坐标系集合(axisCollection)
坐标系集合可以包含多个坐标系,为什么这多个坐标系会在一起,因为他们可以共用一个坐标轴。该对象有一个常用属性:
l position:代表坐标系集合的位置。1代表“共用坐标轴”在下方;2代表“共用坐标轴”在右边;3代表“共用坐标轴”在上方;4代表“共用坐标轴”在左方。下图对相应的位置关系做了图示:
上图中各个坐标轴只表示共用坐标轴的位置,和坐标轴方向无关。
1.4 坐标系(axis)
坐标系里面包含所有在同一坐标系所有数据,一个图表的数据几乎都包含在每个坐标系中,包括特征值线、标注数据、序列线数据。该对象主要有三个属性:
l caption:坐标系的标题,该标题将作为坐标系的标注。
l position:表示坐标系在坐标系集合中的位置。以在1位置的坐标系集合为例,可以有以下四个位置:
l axisColor:坐标系的颜色,包括标注的颜色,用于更明显的区分每个坐标系。
1.5 特征值线集合(lineCollection)
特征值线集合是用于容纳特征值线的对象。该对象目前没有任何属性。
1.6 特征值(line)
特征值线是坐标系中单一y轴方向的数值。在坐标系特征值线是以一条线来表示的,我们可以定义这条线的颜色、粗细等样式。特征值线主要有3个属性:
l caption:特征值的标题,作为区分不同的特征值线。
l linecolor:特征值线的颜色。
l value:特征值线的值,该值将参与整个坐标系的计算与绘制。
1.7 序列线集合(seriesCollection)
序列线集合中可以包含多个序列线,该对象也是用于包容序列线对象。该对象目前没有属性。
1.8 序列线(series)
序列线代表任何一个时间类型,数值类型,字符类型中的任何一种数据序列。她在坐标系中表现为一条折线、一组柱状图。序列线的主要属性有个:
l caption:序列线的标题,该标题将显示在控制栏上,以区别不同的序列线。
l type:代表序列的数据类别,比如0代表T-D类型,该属性目前无效。
l linewidth:[整形]可选属性,默认是1。序列是折线时,它的宽度。
l linecolor:序列线或者柱状图的颜色。
l dotcolor:序列线点的颜色。
l dotstyle:序列线点的样式,不同样式代表不同的点的形状。详见plot。
l seriestype:表示该序列数据的表现样式。0 表示折线;1 表示柱状图
1.9 序列点(plot)
多个序列点组成了序列线,序列点就是每个具体二维数值,序列点在图表上表现成曲线上的一点、柱状图上的一个柱、或者是饼图的一个块。目前主要有以下属性:
l xvalue:表示序列点的x维方向的数值,数值类型:[字符串 | 数值 | 日期]
l yvalue:表示序列点的y维方向的数值,为数值类型。
l plotStyle:代表序列点的样式,原则上这些样式可以无限扩充,我们可以利用这种特性来标注特殊的点,如水位的极值点。目前存在的样式是:当序列线是柱状图时,0 表示平面柱状图,1 为立体柱状图,默认为0;当序列线是折线时,0表示 (实心圆)1表示 (空心圆) 2表示 (实心矩形)3表示 (空心矩形)4表示 (向上实心箭头)5表示 (向下实心箭头)在实际应用中效果如下:
折线图
柱状图
l plotColor:表示每个点的颜色。
1.10 标注集合(lableCollection)
标注集合类似于序列线,但是它不是用来参与坐标系计算,主要用来标注一些相关的特性,如河道横断面。相关的标注数据根据实际需要来确定,可能差别也比较大。
过程线组件可以嵌入到Java应用程序中使用,可以作为一个图片服务提供者来调用,也可以通过Applet来展示。下面介绍通过Applet如何实现过程线的应用。
2.1 通过Applet来展示过程线
我们以IE作为Applet运行容器来看看一个水文过程线如何实现。
首先,客户端应该具备Java程序的运行库,至少安装JRE1.4版本以上的Java运行环境。我们在IE中实现的脚本如下所示:
<applet code="org.hualin.water.line. TimeChartApplet.class" codebase = "." class="" width="700" height="500">
<PARAM NAME = ARCHIVE VALUE = "zehualine.jar" >
<PARAM NAME = url VALUE = "http://localhost/shuiwen.xml" >
</applet>
部分参数说明如下:
1、蓝色部分的org.hualin.water.line. TimeChartApplet表示该Applet运行的类,目前我们有以下几个类提供服务(以后将合并成为一个类):
l LevelChartApplet:用于生成水位示意图;
l StingChartApplet:用于生成字符串类型的过程线,如河道的水面线;
l TimeChartApplet:用于生成时间类型的过程线,如水文过程线,雨洪过程线;
l TransectChartApplet:用于生成河道,水库等的横断面图;
l XYChartApplet:用于生成数值类型序列的过程线,如库容曲线;
2、红色部分的width和height属性表示Applet界面的宽度和高度。Applet展示界面会根据这个大小自动伸展。
3、参数部分的url参数是本过程线唯一要输入的参数,即给本过程线提供的XML数据的XML数据源。本例子中的shuiwen.xml是用来生成水文过程线的XML数据。XML的数据是根据过程线对象来组织的。可以参考附带的XML示例。
提供XML的格式一定要正确,否则Applet将不能正确的显示。对于如何提供XML数据,不同的平台有不同的实现方式,在此不在说明
下面是一个水文过程线的xml数据样例:
<?xml version='1.0' encoding='gb2312'?>
<chartCollection caption="致强过程线">
<chart backgroup-color="#336699" caption="柳沟水库(水库)水文过程线" type="0">
<axisCollection caption="" position="1">
<axis caption="水位(米)" position="1" axisColor="#FF0000">
<lineCollection>
<line caption="设计洪水位" linecolor="#AA5500" value="372.79" />
<line caption="正常高水位" linecolor="#30055AA" value="373.1" />
<line caption="死水位" linecolor="#005AA" value="359.5" />
<line caption="历史最高水位" linecolor="#Ae45A" value="0" />
</lineCollection>
<seriesCollection>
<series caption="水位(米)" type="1" linewidth="4" linecolor="#FF0000" dotcolor="" dotstyle="" calculate="true" seriestype="0">
<plot xvalue="2004-7-1 8:00:00" yvalue="368.85" plotStyle="4" />
<plot xvalue="2004-7-2 8:00:00" yvalue="368.64" plotStyle="5" />
<plot xvalue="2004-7-3 8:00:00" yvalue="368.42" plotStyle="0" />
<plot xvalue="2004-7-4 8:00:00" yvalue="368.29" plotStyle="0" />
<plot xvalue="2004-7-5 8:00:00" yvalue="368.2" plotStyle="0" />
<plot xvalue="2004-7-6 8:00:00" yvalue="368.11" plotStyle="0" />
<plot xvalue="2004-7-28 8:00:00" yvalue="367.46" plotStyle="0" />
<plot xvalue="2004-7-29 8:00:00" yvalue="367.39" plotStyle="0" />
<plot xvalue="2004-7-30 8:00:00" yvalue="367.38" plotStyle="0" />
<plot xvalue="2004-7-31 8:00:00" yvalue="367.28" plotStyle="0" />
<plot xvalue="2004-8-1 8:00:00" yvalue="367.23" plotStyle="0" />
<plot xvalue="2004-8-2 8:00:00" yvalue="367.11" plotStyle="0" />
<plot xvalue="2004-8-3 8:00:00" yvalue="366.79" plotStyle="0" />
<plot xvalue="2004-8-4 8:00:00" yvalue="366.74" plotStyle="0" />
<plot xvalue="2004-8-5 8:00:00" yvalue="367.03" plotStyle="0" />
<plot xvalue="2004-8-6 8:00:00" yvalue="367.06" plotStyle="0" />
<plot xvalue="2004-8-7 8:00:00" yvalue="366.93" plotStyle="0" />
<plot xvalue="2004-8-8 8:00:00" yvalue="367" plotStyle="0" />
<plot xvalue="2004-8-9 8:00:00" yvalue="366.97" plotStyle="0" />
<plot xvalue="2004-8-10 8:00:00" yvalue="366.79" plotStyle="0" />
<plot xvalue="2004-8-11 8:00:00" yvalue="366.63" plotStyle="0" />
<plot xvalue="2004-8-12 8:00:00" yvalue="366.5" plotStyle="0" />
<plot xvalue="2004-8-13 8:00:00" yvalue="366.27" plotStyle="0" />
<plot xvalue="2004-8-14 8:00:00" yvalue="366.39" plotStyle="0" />
<plot xvalue="2004-8-15 8:00:00" yvalue="366.65" plotStyle="0" />
<plot xvalue="2004-8-16 8:00:00" yvalue="366.91" plotStyle="0" />
<plot xvalue="2004-8-17 8:00:00" yvalue="367.13" plotStyle="0" />
<plot xvalue="2004-8-18 8:00:00" yvalue="367.18" plotStyle="0" />
<plot xvalue="2004-8-19 8:00:00" yvalue="367.08" plotStyle="0" />
<plot xvalue="2004-8-20 8:00:00" yvalue="366.89" plotStyle="0" />
<plot xvalue="2004-8-21 8:00:00" yvalue="366.81" plotStyle="0" />
<plot xvalue="2004-8-22 8:00:00" yvalue="366.85" plotStyle="0" />
<plot xvalue="2004-8-23 8:00:00" yvalue="366.83" plotStyle="0" />
<plot xvalue="2004-8-24 8:00:00" yvalue="366.8" plotStyle="0" />
<plot xvalue="2004-8-25 8:00:00" yvalue="367" plotStyle="0" />
<plot xvalue="2004-8-26 8:00:00" yvalue="367.17" plotStyle="0" />
<plot xvalue="2004-8-27 8:00:00" yvalue="367.35" plotStyle="0" />
<plot xvalue="2004-8-28 8:00:00" yvalue="367.58" plotStyle="0" />
<plot xvalue="2004-8-29 8:00:00" yvalue="367.76" plotStyle="0" />
<plot xvalue="2004-8-30 8:00:00" yvalue="367.84" plotStyle="0" />
<plot xvalue="2004-8-31 8:00:00" yvalue="367.94" plotStyle="0" />
</series>
</seriesCollection>
</axis><axis caption="流量(立方米/秒)" position="4" axisColor="#0000FF">
<lineCollection>
</lineCollection>
<seriesCollection>
<series caption="流量(立方米/秒)" type="1" linewidth="1" linecolor="#0000FF" dotcolor="" dotstyle="" seriestype="0" fluxable="true">
<plot xvalue="2004-7-3 8:00:00" yvalue="10.88" plotStyle="0" />
<plot xvalue="2004-7-4 8:00:00" yvalue="11.8" plotStyle="0" />
<plot xvalue="2004-7-5 8:00:00" yvalue="13.89" plotStyle="0" />
<plot xvalue="2004-7-6 8:00:00" yvalue="11.46" plotStyle="0" />
<plot xvalue="2004-7-9 8:00:00" yvalue="3.94" plotStyle="0" />
<plot xvalue="2004-7-10 8:00:00" yvalue="6.94" plotStyle="0" />
<plot xvalue="2004-7-11 8:00:00" yvalue="8.1" plotStyle="0" />
<plot xvalue="2004-7-12 8:00:00" yvalue="15.28" plotStyle="0" />
<plot xvalue="2004-7-13 8:00:00" yvalue="22.22" plotStyle="0" />
<plot xvalue="2004-7-14 8:00:00" yvalue="29.98" plotStyle="0" />
<plot xvalue="2004-7-15 8:00:00" yvalue="25.81" plotStyle="0" />
<plot xvalue="2004-7-16 8:00:00" yvalue="30.67" plotStyle="0" />
<plot xvalue="2004-7-17 8:00:00" yvalue="31.13" plotStyle="0" />
<plot xvalue="2004-7-18 8:00:00" yvalue="37.15" plotStyle="0" />
<plot xvalue="2004-7-19 8:00:00" yvalue="40.28" plotStyle="0" />
<plot xvalue="2004-7-20 8:00:00" yvalue="53.43" plotStyle="4" />
<plot xvalue="2004-7-21 8:00:00" yvalue="33.33" plotStyle="0" />
<plot xvalue="2004-7-22 8:00:00" yvalue="34.26" plotStyle="0" />
<plot xvalue="2004-7-23 8:00:00" yvalue="32.64" plotStyle="0" />
<plot xvalue="2004-7-24 8:00:00" yvalue="37.62" plotStyle="0" />
<plot xvalue="2004-7-25 8:00:00" yvalue="45.14" plotStyle="0" />
<plot xvalue="2004-7-26 8:00:00" yvalue="37.5" plotStyle="0" />
<plot xvalue="2004-8-11 8:00:00" yvalue="16.78" plotStyle="0" />
<plot xvalue="2004-8-12 8:00:00" yvalue="8.92" plotStyle="0" />
<plot xvalue="2004-8-13 8:00:00" yvalue="20.94" plotStyle="0" />
<plot xvalue="2004-8-14 8:00:00" yvalue="27.66" plotStyle="0" />
<plot xvalue="2004-8-15 8:00:00" yvalue="31.13" plotStyle="0" />
<plot xvalue="2004-8-16 8:00:00" yvalue="29.63" plotStyle="0" />
<plot xvalue="2004-8-17 8:00:00" yvalue="25.36" plotStyle="0" />
<plot xvalue="2004-8-18 8:00:00" yvalue="19.22" plotStyle="0" />
<plot xvalue="2004-8-19 8:00:00" yvalue="12.73" plotStyle="0" />
<plot xvalue="2004-8-20 8:00:00" yvalue="19.57" plotStyle="0" />
<plot xvalue="2004-8-21 8:00:00" yvalue="23.6" plotStyle="0" />
<plot xvalue="2004-8-22 8:00:00" yvalue="18.98" plotStyle="0" />
<plot xvalue="2004-8-23 8:00:00" yvalue="13.89" plotStyle="0" />
<plot xvalue="2004-8-24 8:00:00" yvalue="18.86" plotStyle="0" />
<plot xvalue="2004-8-25 8:00:00" yvalue="11.69" plotStyle="0" />
<plot xvalue="2004-8-26 8:00:00" yvalue="20.83" plotStyle="0" />
<plot xvalue="2004-8-27 8:00:00" yvalue="24.07" plotStyle="0" />
<plot xvalue="2004-8-28 8:00:00" yvalue="27.2" plotStyle="0" />
<plot xvalue="2004-8-29 8:00:00" yvalue="24.31" plotStyle="0" />
<plot xvalue="2004-8-30 8:00:00" yvalue="29.28" plotStyle="0" />
<plot xvalue="2004-8-31 8:00:00" yvalue="25.93" plotStyle="0" />
</series>
</seriesCollection>
</axis></axisCollection></chart></chartCollection>