天天看点

使用c#开发mapserver之三mapObj

 说到 mapObj ,首先要了解的就是 mapfile 。 mapfile 是 mapserver 的核心,所有的数据,符号等配制信息均在这里记录,它其实就是一个工程文件。要做好 mapserver 开发,首要的步骤就是熟悉 mapfile ,熟练地掌握了 Mapfile 才能配出美观大方的地图。在 MapServer 的官方网站上有最新的 Mapfile 介绍: http://mapserver.org/mapfile/index.html#mapfile 。国内也有一些好心人翻译的中文版,但大部分版本比较老,开源的东西变化的比较快,要掌握第一手的资料,最好还是去官网了 ~

对于刚起步学习得人来说,可以使用 gmap 中的 mapfile 文件和数据,具体的下载地址在: http://www.maptools.org/dl/gmap-ms46.zip ,该 mapfile 对应的 mapserver 版本是 4.6 有点老,但对学习来说够用了。在新版本的 mapserver 中打开可能会有些错误,按照错误提示修改一下就可以使用。

mapscript 中操作 mapfile 是通过 mapObj 对象来实现的。 mapObj 对象是 mapscript 的核心对象,它就像一个容器,包含了 mapfile 中的所有配置信息, mapfile 中的每一项都可以在 mapObj 对象中找到对应方法或者属性。简单介绍几个 mapObj 中常用的方法,这里用到的 mapfile 都是以 gmap 中的为例。

Ø         打开新建 mapfile

mapscript 打开 Mapfile 也就是打开工程文件的意思,方法很简单,只需要在定义 mapObj 对象时传入 mapfile 文件的路径即可。

       mapObj pMap = new mapObj (@"D:/Work/gmap/htdocs/gmap75.map" );

    如此便可以打开一个mapfile, 将其内容填充到mapObj 对象之中。如果mapfile 文件的路径为空,系统就会默认创建一个新的空mapObj 对象,使用默认的参数来对其进行初始化。

    mapObj pMap = new mapObj ("" );

    最好将打开mapfile 的代码放到try-catch 结构中,这样的话,如果打开mapfile 文件打开失败,就可以通过Exception 变量来捕获错误信息。通过Exception 可以捕获到非常详细的mapfile 错误信息,这是一个查找mapfile 错误的好方法。

Ø         保存 mapfile

    通过mapObj 的save 方法可以将mapObj 对象保存为一个mapfile 文件,无论是我们从文件中打开的Mapfile 还是新创建的mapfile 文件,都可以使用该方法保存。通过以下方法,可以将mapObj 对象中的内容保存到c:/mapfile.map 文件里。

    int i = pMap .save (@"c:/mapfile.map" );

Ø         生成地图

    打开或者新建Mapfile 之后,可以通过mapObj 对象来输出地图,将mapfile 中的配置信息转化为一张图片。具体方法也很简单。

    imageObj pImage = pMap .draw ();

    pImage .save (@"c:/testpic.jpg" , pMap );

    通过draw 方法返回一个imageObj 对象。可以将该对象保存为一个图片。 输出地图的尺寸、图片格式、图片质量、地图背景色等等,均可以在mapObj 对象中进行设置,例如要输出一个800*600 的地图,可以在执行输出draw 函数之前如下设置:

    pMap .width = 800;

pMap .height = 600;

下一篇: MapServer 配置