首页 百科知识 制作专题图

制作专题图

时间:2023-06-19 百科知识 版权反馈
【摘要】:六、制作专题图在MapInfo中,专题地图是用来分析和表现数据的一种强有力的方式。Create Ranges语句用来计算并建立用于Shade语句的范围数组值。其中,window_id为窗口标识号,map_layer_id为专题图层的层号,table为与专题层关联的表名,theme_layer_id表示要修改的专题层。范围专题图是指按照设置的范围,用颜色和图案进行渲染地图对象来显示数据,用于反映数值和地理区域的关系或显示比率信息。Ranges关键字指定要创建的是范围专题图。

六、制作专题图

在MapInfo中,专题地图是用来分析和表现数据的一种强有力的方式。利用专题图,可根据表中特定的值来赋予地图对象颜色、图案和符号,从而把各种数据图形化,并直观地显示在地图上。

1.建立渲染范围数组

Create Ranges语句用来计算主题范围,并存储到一个数组中,用于后续Shade语句指定范围值。Create Ranges语句的语法形式为:

Create Ranges

From table

With expr

[Use{"Equal Ranges"|"Equal Count"|"Natural Break"|"StdDev"}]

[Quantile Using q_expr]

[Number num_ranges]

[Round rounding_factor]

Into Variable array_variable

其中,table为要渲染的表,expr为表中每行计算的表达式,q_expr用于完成分位的表达式,num_ranges定义范围数量,缺省为4,rounding_factor用于范围分隔取整因子,array_variable保存范围信息的浮点数组变量。

Create Ranges语句用来计算并建立用于Shade语句的范围数组值。Use子句定义如何划分数据范围,如果定义Equal Ranges,则数值范围为等间隔划分(如0~25,25~50,50~75,75~100);如果定义Equal Count,则落在每个间隔内的行数近似相等;如果定义Natural Break,则按数据集自然划分;如果定义StdDev,则中值划分在平均值处,按标准偏差为间隔。

如果有Quantile Using子句,则Use子句无意义,根据QuantileUsing表达式定义范围。

以下例子建立了5个间隔,最高的BPI值放在最高间隔中,最低BPI值放在最低间隔中。中间间隔由分位数确定,由于Quantile Using子句定义Pop_1990,MapInfo计算表的总人口,则MapInfo将总人口除以间隔数,得到定义范围。然后MapInfo按States表中BPI值次序从最低的BPI值的图块(如州)开始,将其分配到最低间隔,直到对应人口接近或超过定义范围,则认为第一间隔已满,然后将后面的BPI放到第二间隔,依此类推。

Create Ranges From States

  With BPI_1990 Quantile Using Pop_1990

  Number5

  Into Variable f_ranges

2.设置或修改专题图层

Set Shade语句用来修改专题图层的设置,使用Set Shade语句如同MapInfo的[Map]>

[Modify Thematic Map]命令,该语句语法形式为:

Set Shade

 [Window window_id]

 {map_layer_id|"table(theme_layer_id)"}

其中,window_id为窗口标识号,map_layer_id为专题图层的层号,table为与专题层关联的表名,theme_layer_id表示要修改的专题层。下例程修改基于States表的第一渲染层。

Set Shade

 Window i-map-winid

 "States(1)"

 With Num-Hh-90

 Graduated 0.0∶0 11000000∶24 Vary Size By"SQRT"

3.创建专题图

MapBasic提供的Shade语句可以用来创建单变量专题图,如范围、独立值、点密度和等级符号图等;也可创建多变量专题图,如饼图和直方图等。

(1)范围专题图。范围专题图是指按照设置的范围,用颜色和图案进行渲染地图对象来显示数据,用于反映数值和地理区域的关系或显示比率信息。创建范围专题图语句的语法形式为:

Shade[Window window_id]

 {layer_id|layer_name}

 With expr

 [Ignore value_to_ignore]

 Ranges

 [Apply{Color|Size|All}]

 [Use{Color|Size|All}[Pen…][Line…][Brush…][Symbol…]]

 {[From Variable float_array Style Variable style_array]|

   minimum:maximum[Pen…][Line…][Brush…][Symbol…]

   [,minimum:maximum[Pen…][Line…][Brush…][Symbol…]…]}

[Default[Pen…][Line…][Brush…][Symbol…]]

其中,window_id为地图窗口标识号,layer_id为地图窗中图层的标识号,layer_name为地图窗中图层名,expr为应渲染的表的表达式。

With子句指定根据表中哪个字段的值创建专题图。Ignore子句指定一个忽略值,默认为0或空串,如表中某个记录值与指定的value_to_ignore相等,则不创建该记录对应对象的专题。Ranges关键字指定要创建的是范围专题图。Apply子句用于控制渲染对象的显示属性,如定义Apply Color,渲染只改变地图对象的颜色;如果定义了Apple Size,则渲染只改变点对象的大小或线对象的宽度;如果定义Apply All,则渲染控制所有的显示属性:符号形状、符号大小、线型、线宽和颜色。Apply子句缺省时等同于Apply All。Use子句用于控制MapInfo是应用样式范围内所有的样式,还是应用部分样式。From Variable和Style Variable子句可用来从数组变量中读取预先计算好的范围信息。数组变量必须已经用Create Range和Create Style语句初始化。Default子句指定一个图形样式,用于未在指定的范围内的对象。

如果没有使用From Variable子句指定数组变量,则在Ranges关键字后可有1~16个定义范围的子句。每个范围由1对数值组成(用冒号分开),其后还有图形样式用于显示属于该范围的对象图形样式。范围之间用逗号分开。下例对States表中的Pop_1990字段渲染,指定了三个范围,分别使用不同的Brush模式。

Open Table"States"

Map From States

Shade State With Pop_1990

Range

4827000:2928000 Brush(2,0,201326591),

1783000:4827000 Brush(8,0,1677215),

449000:1783000 Brush(5,0,16777215)

(2)独立值专题图。独立值专题图使用不同的颜色、符号或线型来显示不同的数据,有助于强调数据的类型差异,而不是显示定量信息。当用户只使用单一的数据来渲染时,可以使用独立值专题图。创建独立值专题图语句的语法形式为:

Shade[Window window_id]

 {layer_id|layer_name}

 With expr

 [Ignore value_to_ignore]

 Values const[Pen…][Line…][Brush…][Symbol…]

   [,const[Pen…][Line…][Brush…][Symbol…]…]

   [Vary{Color|All}]

[Default[Pen…][Line…][Brush…][Symbol…]]

其中,const为一数值型或字符串常量值。语句中Window、With、Ignore和Default子句与创建范围专题图Shade语句相关子句的含义相同。在Values关键字后可跟用逗号分隔的1~255个值描述子句,每个值描述由1个独立值(字符串或数值)组成,其后的是MapInfo用来显示对应该值的对象的图形样式。如果记录的expr表达式的值精确地等于值描述子句中的某一值,则该记录对象按对应值的图形样式显示。

(3)点密度专题图。点密度专题图是指在地图上用点来显示数据,每个点代表一定数量的单元,每个区域中的点数代表该区域某种专题的密度,区域的数据值等于点代表的单元数乘以区域内点数。创建点密度专题图语句的语法形式为:

Shade[Window window_id]

   {layer_id|layer_name}

   With expr

   Density dot_value:dot_size

   [Color color]

With子句通过Expr指定计算每个区域的数值表达式,关键字Desity后有一个dot_value: dot_size子句,其中,dot_value指定每个点代表的单元数,dot_size指定绘制的点大小,其值范围为1~4,Color子句可以用来指定点的颜色。

注意,创建点密度专题图的图层必须是区域图层。

下例用States表的Num_HH_90字段建立点密度专题图,该字段代表每州在1990年的家庭数量。点密度专题图中点大小为4个像元,每个点表示60000个家庭。

Open Table"States"

Map From states

Shade states With Num_HH_90

  Density 60000∶4

(4)等级符号专题图。等级符号专题图为表中每个记录显示一个符号,符号大小与该点对应的数值成正比,适合于数值型数据的符号化显示。创建等级符号专题图语句的语法形式为:

Shade[Window window_id]

  {layer_id|layer_name}

  With expr

  Graduated min_value:symbol_size max_value:symbol_size

    Symbol…

    [Inflect Symbol…]

    [Vary Size By{LOG|SQRT|CONST}]

关键词Graduated后有一对Value:Symbol_Size子句,第一个子句指定对应最小值的符号大小,第二个子句指定对应最大值的符号大小。MapInfo按照指定的范围及符号大小自动确定界于最大值与最小值之间的记录值的符号大小。Symbol子句确定显示的符号类型,如果包括Inflect子句,则指定第二个符号样式,用于显示具有负值的记录。Vary Size By子句控制如何用符号大小的差异反映数值之间的差异,MapInfo的默认值为平方根法,Vary Size By SQRT使用相差的数值的平方根来增加点的大小。

(5)饼图专题图。饼图专题图以饼图形式显示表中各记录的专题变量。使用饼图可一次分析多个变量。创建饼图专题图语句的语法形式为:

Shade[Window window_id]

  {layer_id|layer_name|Selection}

  With expr[,expr…]

  [Half]Pie[Angle angle][Counter]

  [Fixed][Max Size chart_size[Units unitname]

     [At Value max_value[Vary Size By{LOG|SQRT|CONST}]]]

  [Border Pen…]

  [Position[{Left|Right|Center}][{Above|Below|Center}]]

  [Style Brush…[,Brush…]]

With子句指定组成饼图的用逗号分隔的多个表达式。如果在Pie关键字前有Half关键字,则MapInfo画半个饼图,否则画整个饼图。Angle子句定义第一个饼扇的起始角度,缺省值为180。Counter关键字指定按逆时针方向绘制饼扇。Fixed关键字指定渲染层的所有饼图为相同尺寸,如果要使用大小不同的饼扇,必须省去Fixed关键字而包含At Value子句。Max子句控制饼图的大小;Border子句指定画笔轮廓;Position子句指定饼图的位置;Style子句定义用逗号分隔的Brush样式列表,用于为With子句中每个表达式定义一个Brush样式。

(6)直方图专题图。直方图专题图将表中每条记录的专题变量显示为一个直方图。使用直方图可一次分析多个变量。创建直方图专题图语句的语法形式为:

Shade[Window window_id]

  {layer_id|layer_name|Selection}

  With expr[,expr…]

  {Bar[Normalized]|Stacked Bar[Fixed]}

  [Max Size chart_size[Units unitname]

    [At Value max_value[Vary Size By{LOG|SQRT|CONST}]]]

  [Border Pen…][Frame Brush…]

  [Width value[Units unitname]]

  [Position[{Left|Right|Center}][{Above|Below|Center}]]

  [Style Brush…[,Brush…]]

如果将关键字Stacked放在Bar关键字前,则MapInfo将创建叠加型单直方条图,否则创建多重直方条图。如果缺省Stacked关键字,可包含Normalizel关键字创建有独立比例的直方条。当建立了一个叠加型直方图,可用Fixed关键字指定所有直方图大小一样,而不管每个对象的数值,如果缺省Fixed关键字,则Maplnfo根据图中变量的和建立大小不同的直方条。Frame Bruh….子句定义直方图背景填充样式。Position子句控制直方图指向(水平或垂直)和相对于对象的中心位置。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈