之前研究过一段时间用Surfer画等值线,后来项目需要把它改进了一下,做成了一个exe,方便在Java中传参调用。现在有时间整理一下把代码贴出来,也简单解释下,共同探讨改进之。
我把用sufer画等值线的过程写成了一个带参函数。主要参数如下:string DataFile, 用来生成气象站等值线的bln文件及路径;
string BlankFile, 用来白化地区界的bln文件;
string flag, 一个用'0' '1'(我实际传参用的,其它任何字符也都可以) 表示是画等值线还是等值面的字符标志;
string LevelSet, 一个用逗号分隔的表示等级设置的字符串;
string ColorSet,与等级相对应的表示各个等级颜色的字符串;
string StrText, 与等级相对应的注释字符串,我实际没有使用到这个参数;
string OutGraphics,输出图片位置及路径;
string width, 输出图片宽度;
string height,输出图片高度,因为surfer中输出图片高度与宽度已经自动有一个比例了,所以这两个参数只有相对较小的那个起作用。
在下面的代码中对等值线设置已经做了比较精确的控制,当初研究一些细节也花了一段时间,比如GridData的参数设置,精确的rgb颜色控制,symbol属性设置等。其中最重要的还是等级设置。注意,给的数值是设置的等级最小值,所有有些地方要主要假定一些参数值。
另外,surfer输出中文超过六个字符有个乱码字符bug,我在程序中在相应的位置画了个矩形框给遮住了,呵呵!
下面是我用的传参部分的代码:
上面还用到了一个ImageProcess()函数,是用来对图片做了些处理,把它的两边边框与图片本身的距离做了些调整,因为在程序
中给图例留出了空白位置。下面是ImageProcess()函数代码: