MapServer教程:MapFile配置入门

首先介绍一下本教程中使用的第一个Mapfile (example1-1.map):

# 有评注的地图文件(排序)
# 由Pericles S. Nacionales创建MapServer 教程
# 20050408
#
# MapServer地图文件使用英镑符号(#)表示一行MapServer的开始
# 注释--需要注释的每一行必须以“#”开始。
# 地图文件以地图的关键词开始来表示地图对象的开始。
# 整个的地图文件是地图对象。在地图和地图文件之间附上的是关键词/有价值的对和其它的对象。
MAP
  IMAGETYPE      PNG
  EXTENT         -97.238976 41.619778 -82.122902 49.385620
  SIZE           400 300
  SHAPEPATH      "../data"
  IMAGECOLOR     255 255 255
  # 图层对象在地图对象之下定义。在你展示一个
  # 地图之前,你至少需要在你的地图文件中定义一个图层...你可以
  # 定义尽可能多的图层尽管在MapServer来源中一个限制被典型地硬编码为map.h。
  # 默认的限制被设置为100.你最好
  # 必须有一个非常专业的应用来在你的应用中
  # 应用100多个图层。
  # 开始图层定义
  LAYER # States polygon layer begins here
    NAME         states
    DATA         states_ugl
    STATUS       OFF
    TYPE         POLYGON
    # 类对象与图层对象一起定义。你可以定义和
    # 你需要的一样多的类(对图层有限制,但是
    # 在一个正常的地图上定义多于10个是没有意义的。
    # 但是有时候你不得不这样做。)
    CLASS
      NAME       "The Upper Great Lakes States"
      # 在一个类中有样式,正如在一个图层中有类别,
      # 就像在一个地图中有图层。你可以在一个类
      # 中定义不同的样式就像你可以在一个图层中
      # 定义不同的类和在一个地图中定义不同的图层。
      STYLE
        COLOR        232 232 232
        OUTLINECOLOR 32 32 32
      END
    END
  END # States polygon layer ends here
  # End of LAYER DEFINITIONS -------------------------------
END # 所有的地图文件必须结束正

我们会介绍一下MapFile的基本语法。后面使用的Mapfile,不会给出具体的说明。

这个MapFile是地图服务器的基本配置机制。这是由“对象”和每个对象都可以使用关 键字
或其他对象。它有一个分层结构,例如,一些物体落在在其他的对象……这个层次上的地图对象,
所有其他对象属于它。这个例子显示了一个非常简单的层次结构的 对象。当你通过每个例子时,
这些分层树的复杂性会增加。

有关MapFile的几个简单的说明:我们定义中的每个对象映射文件对象名称,我们用“END”
关闭它并且我们用英镑符号(#)写评注。

让我们看一下MapFile的主要结构。其结构看起来像这样:
 

MAP
 |-LAYER
   |-CLASS
     |-STYLE

让我们来看看在MAP对象内的关键字(参数):

MAP 
每一个映射文件开始于MAP对象 – 整个映射文件是MAP对象.

IMAGETYPE 
IMAGETYPE的关键字用于定义那些 MapServer的CGI程序应该用于输出图像格式。
在这种情况下,我们是使用索引彩色PNG(类似GIF)。这可能是G IF,如果我们编译
GD库支持GIF,WBMP,JPEG。我们也可以指定编译对他们的支持的其他输出选项(PDF,
SWF的GeoTIFF),并指定他们为OUTP UTFORMAT对象。OUTPUTFORMAT超出本教
程的范围,但通过阅读主要MapServer的网站的资料你可以找到更多。

EXTENT 
此参数指定我们的地图输出范围的边界 – 我们最初的地图边界。范围值的格式为:

 左下X 左下Y 右上X 右上Y 

用空格分隔每个值。这需要数据的单位相同,或者如果指定一个不同的输出投影,
在相同的单位输出投影。

在这个例子中,我们的数据是地理投影,所以单位是十进制。您可以使用实用程序“ogrinfo”
这是GDAL/ OGR库包的一部分,得到一个特定的shape文件(或其他支持的矢量格式)的范围。
这里是我用这个例子范围的命令:

ogrinfo -al -so states_ugl.shp

返回下面的输出:
 

INFO: Open of `states_ugl.shp'
using driver `ESRI Shapefile' successful.
Layer name: states_ugl
Geometry: Polygon
Feature Count: 204
Extent: (-97.238976, 41.619778) - (-82.122902, 49.385620)
Layer SRS WKT:
(unknown)
AREA: Real (12.3)
PERIMETER: Real (12.3)
STATESP020: Real (11.0)
STATE: String (20.0)
STATE_FIPS: String (2.0)

 

CLASS: String (5.0)

您还可以使用ArcView或其他开源GIS软件包 – QGIS、Thuban等 – 随意改变值的范围
更好地了解它如何改变你的地图。

SIZE

这是大小的图像(电子地图),地图服务器生成,以像素为单位。因此,我们的地图是
400像素宽,300像素高。再次,改变你的中心的内容,看看它是如何影响你的地图.

SHAPEPATH

这是数据层的路径。您可以提供绝对路径(即,“/ ms4w/apps/tutorial/data”
或“C:/ms4w/apps/tutorial/data”) 或相对路径到您的映射文件的位置(在这个例子
中,你会使用”../data”)。此路径没有通过网络访问,并且可能不应该,除非你想任何人都
可以下载你的原始数据。它 有没有直接这样做的WEB不甚至认为这里的网址 – 只要确保用户
运行Web服务器(通常是”nobody” 或者 “apache”)可以读取的SHAPEPATH中的数据。

IMAGECOLOR

这是您的地图的背景色。值由RGB值所以255红,255绿,和255B,这会导致在白色背景中。
来吧,一起玩这个值.

现在,让我们来看看层对象参数:

LAYER

标志着一个层内的地图对象。只要你愿意,您可以指定为多层次,虽然默认情况下你是
有限的100。要改变这种限制,你将不得不编辑map.h头文件(从古到今树),并重新编译
MapServer

NAME

这是一个层的标识符。 MapServer的使用这个名字进行切换层的开启和关闭。它不会在这
个例子中,我们有层状态设置为默认值。在以后,我们将回到这个的例子。

DATA

数据的名称(在这种情况下,shape文件)。
请读取的 MapServer的矢量数据指南了解更多有关如何访问MapServer的矢量数据。

MapServer的支持矢量数据格式ESRI的shape文件使用OGR库(的GDAL软件包的一部分)。
请访问GDAL项目网站和阅读http://www.gdal.org/ogr/ogr_formats.html了解更多OGR支持的各种格式。

TYPE

这是什么类型的数据?如果它是一个矢量数据,您可以指定无论它是一个多边形,线(你用
你的数据线,即使技术上折线),
或者一个点。您也可以指定栅格或注释数据。在这里 ,我们要显示多边形。

STATUS

层被基于它们的状态打开或关闭。默认总是打开。 ON或OFF的工作的一部分,
通过图层名称查询字符串。

Let’s look at the CLASS object parameters:看一下CLASS的参数:

CLASS

标志着层内对象的Class对象。你可以指定层内尽可能多的类,虽然默认被限制为50。
你必须重新编译MapServer来改变默认值。

NAME

这个类的描述性识别。层对象可以有多个类,就像地图对象可以有多个层次。传说中的标签,
以便使所使用的类名的MapServer类命名时,一定要使用适当的描述性名称 。稍后在本教程中,
我们将谈到。

最后,让我们来看看在STYLE对象参数:

STYLE

注意STYLE对象的开始。您可以在一个类定义多个的风格 – 当你想叠加在另一个风格,这是有用的。

COLOR

这是多边形的填充颜色。案件类型为直线,这是线的颜色。这些数值是RGB格式。

OUTLINECOLOR

这是多边形的边框颜色。这些数值是在RGB格式。 MapServer在默认情况下,不绘制多边形轮廓,
因此,如果你想看到多边形边界,你将要定义OUTLINECOLOR。

转载请注明出处。GIS帝国网站报道中出现的商标及图像版权属于其合法持有人,只供传递信息之用,非商务用途。

You may also like...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHAis initialing...