19. 地图制图

[printen]

数据处理的一个重要环节就是它们的可视化和表达,无论是以模拟的2D纸质地图、数字3D模型或动画。用户对GIS的这些要求与对专业图形软件的要求是一致的,因此要求也比较高。

在这一部分,GRASS提供了两种不同的方法。一方面为了创建简单的、postscript格式的地图可以使用模块;另一方面可以将结果地图导出为不同的影像格式,而这些影像可以使用外部的专业图形软件来处理。

19.1. 导出postscript地图

[sec:psmap]

能够创建硬拷贝形式的地图,其结果是一个postscript地图,用这个地图足以获得一个概况。交互式的查询过程也可以保存为一个文本文件。这样做的好处是,不用多次运行完整的交互式查询过程就可以修改地图的布局。图 [fig:pskarte]的文本文件如下所示,它来自于帮助文件(见):

raster soils
outline
   color black
   width 1
   end
comments soil.cmt
   where 1 6
   font Helvetica
   end
colortable y
   where 1 6.5
   cols 4
   width 4
   font Helvetica
   end
setcolor 6,8,9 white
setcolor 10 green
vlines roads
   width 2
   style 0111
   color grey
   masked n
   end
vlegend
   where 4.5 0
   font Courier
   fontsize 8
   end
text 30% 100% SPEARFISH SOILS MAP
   color red
   width 1
   hcolor black
   hwidth 1
   background white
   border red
   size 500
   ref lower left
   end
line 606969.73 3423092.91 616969.73 3423092.91
   color yellow
   width 2
   end
point 40% 60%
   color purple
   symbol basic/diamond
   size 25
   masked n
   end
scale 1:125000
scalebar f
   where 4.5 6.5
   length 5000
   height 0.05
   segment 5
   numbers 5
   end
geogrid 60 s
   color blue
   numbers 2 yellow
   end
paper a4
    end
end

[H]

image [fig:pskarte]

19.2. 导出PNG地图

[sec:pngdriver]

GRASS监视器里地图以屏幕分辨率显示。PNG驱动能够以更高的分辨率显示影像,并保证真彩色(24位)质量。

PNG驱动的使用与GRASS监视器的使用几乎是一样的。Spearfish地区土壤图(叠置路网)的真彩色影像创建过程如下:

d.mon start=PNG
d.mon select=PNG

加载地图,

d.rast soils
d.vect roads col=black

结束PNG驱动,重新选择前面使用的GRASS监视器:

d.mon stop=PNG
d.mon select=x0

地图map.png出现在当前文件夹中,我们可以使用图形程序来查看它,如”xv”。PNG地图的分辨率可以使用下面的变量提前定义:

export GRASS\_WIDTH=<width>
export GRASS\_HEIGHT=<height>
export GRASS\_PNGFILE=<name of the resulting file>
export GRASS\_TRUECOLOR=[TRUE|FALSE]

结果可以在图形程序中处理,如Xfig或Skencil。用Xfig创建简单的地图布局可以在第页的图 [fig:xfigkarte]中看到。

模块提供了一种简单的方式,将显示在监视器上的地图导出为PNG格式。该模块以可选大小的方式将屏幕内容保存为PNG文件。

19.3. 创建阴影效果

[sec:schummer]

我们可以在地图的帮助下显示一幅阴影地图,源自高程模型。使用模块来完成这一任务:

通过色调和亮度的合成很容易给人以浮雕表面的效果(见图 [fig:dhismap])。

[H]

image1 [fig:dhismap]

19.4. 用Xfig处理地图

[sec:xfigmap]

图形程序XfigSkencil 常用来设计模拟地图,这些程序可以用来创建专业的地图布局。它们支持不同的输入格式,如TIFF、PPM或PNG;输出地图的格式可以是Postscript、Latex、PDF和多种其它的影像格式。

软件XfigSkencil与GRASS一样都是自由软件,可以从Internet或任何一个知名的Linux发行版CD中安装。我们将介绍用Xfig创建简单地图布局的过程(见图[fig:xfigkarte])。详细的帮助集成在程序中,里面有各个功能的详细介绍。

Xfig简单易学,除了大量的图形功能,它还提供了一些创建地图布局的有趣的特性。在开始之前可以先确定一个比例,这样会方便绘制地图框和标题(见图 [fig:xfig])。

[H]

image2 [fig:xfig]

通常,地图布局的设计过程开始于比例的确定,主要是采用纸张的大小(A4, A3 …)。在Spearfish地区,东西方向延伸1902千米,南北方向延伸1431公里。这可以用模块来确定:

这会显示整个地区的行数和列数,栅格分辨率为1(,单位为米)。如果地图要打印到A4的纸上,可能的比例是1:100000,那么A4纸上的地图范围是19.02(cm) x 14.31(cm):

1902 km = 1902000 meter / 100000 = 19.02 centimeter
1431 km = 1431000 meter / 100000 = 14.31 centimeter

Xfig能够确定一个比例,因此我们能够很容易地创建一个图框来包含必需的范围,在其中绘制和编辑要素,并按我们的要求来安排图框的位置(见图 [fig:xfigfunk])。

[H]

image3 [fig:xfigfunk]

根据[sec:pngdriver]我们知道,从GRASS中导出地图可以用PNG驱动来完成。为了得到最优的栅格地图分辨率,需要根据地图来设置PNG驱动的变量和。

[H]

image4 [fig:xfigkarte]

19.5. 用Skencil处理地图

[sec:skencilmap]

另一个可以用来生成地图的工具是自由绘图程序Skencil 。这个基于python的程序提供了一个地理对象插件(Geo-Object-Plugin),这样就能够读取ESRI的shapefile文件。shapefile文件可以直接加载。

为了使用地理对象插件,必须安装SHAPElib库和必需的python连接。

[H]

image5 [fig:sketch]

Skencil也支持Xfig文件的导入。