首先介绍一下本教程中使用的第一个Mapfile (example1-1.map):
# 有评注的地图文件(排序)
# 由Pericles S. Nacionales创建MapServer 教程
# 20050408
#
# MapServer地图文件使用英镑符号(#)表示一行MapServer的开始
# 注释--需要注释的每一行必须以“#”开始。
# 地图文件以地图的关键词开始来表示地图对象的开始。
# 整个的地图文件是地图对象。在地图和地图文件之间附上的是关键词/有价值的对和其它的对象。
MAP
IMAGETYPE PNG
EXTENT-97.238976 41.619778 -82.122902 49.385620
SIZE400 300
SHAPEPATH"../data"
IMAGECOLOR255 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
COLOR232 232 232
OUTLINECOLOR32 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帝国网站报道中出现的商标及图像版权属于其合法持有人,只供传递信息之用,非商务用途。