登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 chengxf 于 2015-9-15 17:19 编辑
Suefer等值线图中使用的色谱文件和层级文件 对于Surfer软件中用到的色谱文件(.clr)和层级文件(.lvl),是两种和填充有关的文件,不少朋友没有搞清楚它们的区别,所以在等值线着色操作时有时候不知所措。 先来讲一下色谱文件(ColorMap),后缀为.clr,英文是Color Spectrum File。它经常用来为等值线图进行彩色填充。它是一个颜色的分布频谱,也可能是多种颜色等级的渐变。这都是通过一系列具有相关颜色的定位点来确定的。这些定位点我们称之为锚点,锚点之间的过渡颜色,采用内插值方式获得。 下面的对话框中软件采用了一个色谱文件Geology2.clr。 我们可以在这个对话框中作各种修改,比如说增删锚点数,更改某些锚点的颜色,选择某个锚点或全部锚点的不透明度,颠倒各锚点的排列顺序等等(具体看以前发表的教程)。然后点击“保存”按钮 ,我们将保存的文件取名为:MyGeology2.clr。现在来看看它是怎样的文件。 用“记事本”打开MyGeology2.clr,原来是如下的格式: 它就是一个标准的ASCII码文件,基本格式是:第一行是标题信息,后续的各行,每行就是一个锚点,指明了该锚点所在位置(第一列),颜色(第2、3、4列),以及不透明度(第5列) 第一行是标题信息,ColorMap表示这是一个色谱文件,2 1(2和1之间有一个空格)表示该文件的版本,该例是版本2的色谱文件。版本1的色谱文件,缺少第5列的信息,因为它没有各个锚点的不透明度信息,第一行的标题信息是这样的:ColorMap 1 1。 下面各行是锚点信息,有几个锚点,就有几行。 先说第一列,是锚点在整个色谱中所处位置的百分比。最小是0,最大是100,这两个锚点是不能少的,就是说,描述锚点的各行,至少有两行。有人理解为等值线的层级值,就错了。如果我们的色谱锚点有3个,那么除了0和100以外,还有一个锚点,不一定是50,也可能是20,78等等。上面我们的例子中,9个锚点位置也不是平均分配的,间隔有大有小。对于任何一个等值线图,如果采用色谱文件来着色,那么程序总是将当前的等值线的最小值分配为第一个锚点,而等值线的最大值分配为最后一个锚点,就是0% 和100% 这两个锚点。中间的其他锚点,也都是按百分比来确定位置。举例来说,某等值线图的最小等值线值为-20,最大等值线值为120,中间每间隔20画一条等值线,中间就有0、20、40、60、80、100六条等值线。那么,值为40的等值线应该填充什么颜色呢?算一下:(40-(-20))/(120-(-20))=42.8%,很明显,应该采用色谱文件的42.8% 的那个颜色。尽管在这个位置可能没有锚点,但是这不会妨碍程序从色谱文件中确定该取什么颜色。例子中的其他等值线,也照此办理获得自己相应的颜色。 从上面的叙述中你应该知道,为什么类似的几幅等值线图,采用同样的色谱文件,但是在同一个等值线等级中会出现不同的颜色。这是因为每幅图的等值线范围不同,虽然是同一个等值线等级,但它在每一幅图中所处的位置的百分比不同,导致了填充着色的不同。如果你要实现同一个等级在不同的图中填充的颜色都一致,那就应该采用后面讲到的层级文件。 还是回到色谱文件。值得注意的是,色谱文件中可以允许有重叠的锚点,例如下面这个例子: 这例中,有四个锚点,处于中间位置有两个,它们的位置相同,同处在50%的位置上,但是它们的颜色不相同,这就使得该色谱在中间位置可以看到有明显的颜色突变。如下图: 第2、3、4列,表示的是颜色,依次是红(R)、绿(G)、蓝(B),它们的取值范围是0到255,这是一种颜色的饱和度描述,255表示最浓。由此可以知道,0 0 0表示白色,255 255 255表示黑色。在这之间,排列组合可以有256x256x256=1677.7216万种颜色。 第5列,表示不透明度。取值范围也是0到255,0表示该锚点完全透明,255表示该锚点完全不透明。 最后,要说明的是,列和列之间,用一个空格来隔开。 知道了色谱文件的结构,我们就可以根据自己的要求,自行设计自己的彩色色谱了。相信应该没有什么困难。如果你是在色谱对话框中设计修改的话,最后点击保存就可以获得自己的色谱文件了,这样做的优点是直观、可视化,所见即所得。如果你直接在“记事本”中编辑,也可以得到你要的色谱文件,这样做的优点是精确、简便、快速,但做完保存以后记得更改文件的后缀名为clr。 下面再说说层级文件。层级文件记录了等值线图(还有3D线框图)的分层要略,英文称为Level Files,后缀名是.lvl。 层级文件应用在Surfer的两种图形中,一个是等值线图,另一个是3D线框图。它们使用同样的后缀名。 先说说等值线图的层级文件。 在等值线“层次”属性的“分层方法”中我们如果选择“高级设置”,再点击“编辑层次”按钮,那么就会出现一个层次对话框,如下图: 对于等值线图,层级文件包含了等值线的分层层次、线条的特性、填充的颜色、标注出现的频率以及刻线的相关信息。层级文件包含了图形的高级设置等值线层级对话框页面上的所有信息。当在图形上定义好自定义的等值线层次和颜色以后,你可以将这些层次和颜色信息保存到一个层级文件中。一个层级文件可以被任何其他等值线图和3D线框图调用。但是,并非层级文件的所有信息都可以在一个三维线框图中得到使用。例如,你通过等值线图层次对话框保存的等值线层级文件,其中的填充颜色、等值线标注以及刻线的相关信息都将被忽略。 在3D线框图的“Z层次”属性中可以调出该层次编辑框: 而对于3D线框图,.lvl文件所包含的信息有线条属性中的Z值分层和颜色区带。当在图形的Z值分层页面或者颜色区带页面上定义好自定义的分层和线条的颜色属性以后,你就可以将分层和彩色信息保存到一个层级文件中。该层级文件可以被任何一个3D线框图或等值线图所调用。 从以上描述中可以看到,用于3D线框图的层级文件,其中的内容相比等值线图所用的层级文件要少一些。但是它们之间还是可以互相通用,等值线图创建的层级文件应用到3D线框图上时,某些信息将被忽略;而3D线框图创建的层级文件应用到等值线图上时,因某些信息缺失而不得不采用默认值。 下面说说层级文件的格式。 层级文件用来指明Surfer软件的各种图形中的层级以及属性的数据。它是一个每行为一条记录的ASCII码文件。在行内,每个字段之间用逗号或者空格隔开。注释是由单引号开头的一行文字,单引号可以是在一行的开头,也可以在每条记录的结尾处。 层级文件分三种格式,分别是LVL1、LVL2和LVL3。 第一种是最简单的形式,每条记录只有单一的高程值。例如,下面的层级文件可以被用来指定对数间隔的等高线图: 层级文件的第二种形式,以开头第一行关键字标识“LVL2”指明。此后的每一行一条记录,一般是如下格式(每个字段所代表的含义): Level Flags LColorLStyle LWidth FFGColor FBGColor FPattern FMode FScale FType Level:层级,层级的Z值; Flags:标志,0为正常,无标注、无刻线;1为仅有标注;2为仅有刻线;3为有标注和刻线; LColor:颜色,表示层级线条的颜色,颜色必须用双引号括起来; LStyle:样式,表示层级线条的样式,必须是样式列表中的名称之一,并要用双引号括起来; LWidth:宽度,表示层级线条的粗细,宽度单位是密耳(千分之一英寸); FFGColor:前景色,表示填充的前景颜色,颜色必须用双引号括起来; FBGColor:背景色,表示填充的背景颜色,颜色必须用双引号括起来; FPattern:图案,显示在对话框内的填充样式名称中的一个图案,该名称必须用双引号括起来; FMode:背景模式,取值1时表示透明,取值2时表示不透明; FScale:未采用(这个字段虽然列出来,但是都未使用,原因不明); FType:未采用(这个字段虽然列出来,但是都未使用,原因不明)。 以上是每一行各字段的含义说明。下面是一个LVL2层级文件的例子,要注意,这里有些颜色并未直接使用颜色的名称,而是采用Rxxx Gyyy Bzzz来表示红、绿、蓝的分量值(0-255),分别代替了以往的XXX YYY ZZZ三个字段: 层级文件的第三种形式,以开头第一行关键字标识“LVL3”指明。此后的每一行一条记录,一般是如下格式(每个字段所代表的含义): Level Flags LColorLStyle LWidth FVersion FFGColor FBGColor FPattern OffsetX OffsetY ScaleX ScaleYAngle Coverage Level Flags LColorLStyle LWidth:这5个字段的含义同LVL2,不再赘述; FVersion:版本信息,一般空白,不使用; FFGColor FBGColorFPattern:这3个字段的含义同LVL2,不再赘述; OffsetX:X方向图案偏移量; OffsetY:Y方向图案偏移量; ScaleX:X方向的比例,控制X方向的图案密度; ScaleY:Y方向的比例,控制Y方向的图案密度; Angle:控制图案的旋转角度,这里总是选择0 (就是说实际上暂时无用,可能是留待以后升级用吧); Coverage:图案覆盖范围,0表示平铺显示,1表示拉伸显示。 下面是一个LVL3层级文件的例子: 第一行是版本标识,这是LVL3形式的层级文件。第二行是以单引号开头的注释行,这里实际上表明了每个字段的含义,算是一个小小的帮助。3到7行,就是层级的描述。注意,所有的颜色按照颜色主题的名称填写或者按照特殊的语法来指定,采用Rxxx Gyyy Bzzz来表示红、绿、蓝的分量值,取值范围均为0到255,而Aaaa则表示不透明度(0表示完全透明,255表示完全不透明)。 到这里为止,我们对层级文件有了比较深刻的了解了。可以看到,层级文件和色谱文件,都可以为等值线图着色,那么它们到底有何区别呢?我们应该在什么时候采用什么文件来为等值线图着色呢? 相信不少朋友已经知道答案了。色谱文件为等值线图着色,它与等值线的具体值无关,它只是忠实地将等值线的值按色谱的百分比来赋予颜色。而层级文件,它是按照层级来赋予特定的颜色的,某个层级的等值线被赋予该层级所定义的颜色,如果没有这一层,那么就不会将该层级定义的颜色填充到图上。 为了说明它们的区别,我们假设有两座山,一座为6000米的高山,一座只有2000米的小山,我们用一个色谱文件来为它们着色,这个色谱文件有4个锚点,0%=绿色(0 255 0),33.3%=绿色,66.6%=白色,100%=白色(0 0 0)。为这两座山着色的结果很显然,高山的2000米以下是绿色,4000米以上是白色,2000到4000米之间,是从绿色到白色的过渡。而小山呢,666.6米以下是绿色,1333.4米以上是白色,666.7到1333.3米之间是绿色到白色的过渡,颜色分配和高山一样。这就是色谱文件按百分比来分配颜色的结果。如果是用层级文件来着色,我们设定一个层级文件,分三级,第一级是0到2000米,分配的颜色是绿色;第二级,2001到4000米,分配一种绿色到白色的渐变色;第三级,4001到6000米,分配为白色。当我们用该层级文件为高山着色时,结果和色谱文件着色时一样。但是,用该层级文件为小山着色时,只有绿色了,不会再有别的颜色。 为了更进一步说明问题,我现在将软件自带的Demogrid.dat改造一下,将它的Z值都扩大1倍,在工作表中用“数据 | 转换”菜单,很容易将Z列的值都乘以2。保存成Demogrid2.dat文件,然后将它网格化,得到Demogrid2.grd文件,我们还采用同一个色谱文件来着色,这样我们可以得到和原来Demogrid.grd极为相似的等值线图,比较一下,两张图有何区别? 左边是原来的图,右边是Z值扩大了1倍的图。仔细看,等值线的值扩大了一倍,原来70的那根等值线,现在成了140。但是从颜色上看区别不大,这就是色谱文件着色的结果,它不管你等值线的值是多少,按百分比来分配。 再看看层级文件着色的结果,这里我们首先要做一个层级文件,原来的层级是从20到105,现在的层级是40到210。在层级对话框中很轻松就添加了两个层级30和20,这样就补满了所有的层级。如下图。我们用这样获得的层级文件来为Demogrid.grd和Demogrid2.grd两个等值线图着色,看看会有什么样的结果。 获得的层级文件是这样的: 如果这个时候我们用这个层级文件来为原来的Demogrid.grd的等值线图着色,它是这样的结果,和原来的图大不相同了: Demogrid2.grd等值线着色变化不大,这里就不再摆出来了。 至此为止,我们懂得了色谱文件和层级文件的结构以及它们不同之处,和它们各自的应用范围,何时该用色谱文件着色,何时该用层级文件着色,这些都已经不是问题了。论坛中有些朋友的疑惑也应该可以解开了。祝大家端午节安康! 需要本文的pdf版,可以在这里下载: |