摘要: 首先介绍一下本教程中使用的第一个Mapfile (example1-1.map): # 有评注的地图文件(排序) # 由Pericles S. Nacionales创建MapServer 教程 # 20050408 # ...
首先介绍一下本教程中使用的第一个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/和阅读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。