MapServer的查询机制

MapServer除了其渲染能力,还提供了强大的查询功能,同时支持空间查询(基于位置选择)和属性查询(基于属性值选择)。 要做到这一点无需编程支持,MapServer广泛使用了模板来构建查询和呈现结果。 这导致 MapFile ,模板,MapServer程序之间的一些复杂的相互作用。 在使用中还有是大量不同的查询方式,以及不同的使用模板的方式。 出于这些原因,MapServer的查询工具可能是最令人困惑的方面。

MapServer具有强大而复杂的查询功能,但在CGI模式下,它缺少允许真正的GIS提供的那种分析的工具。 本概述描述了MapServer的一些查询功能。

空间检索的概念

空间查询是一种由地理数据库与空间数据库支持的一种特殊查询。空间查询的查询语句与非空间SQL查询在许多重要方面存在差异,其中最重要两条差异在于:允许几何类型数据的运用如点、线、多边形,以及查询涉及几何类型间的空间关系。

以二维或三维的空间数据为查询基础,查询结果以图形表示;空间查询语句利用一个或多个空间操作运算符构成,包括表达空间关系的谓词。

空间查询和分析在GIS中处于核心地位,GIS工程项目中大部分的日常任务都与查询有关。GIS的查询类型可以分为以下三种:单纯的属性查询、与空间位置有关的查询、与空间位置和属性同时相关的联合查询。

在MapServer中实现空间检索的基本要求

查询模板就是HTML片段,就是当被MapServer CGI 程序放在一起时,组成一个合适的HTML界面。

下面的两个变量就是用户定义的变量。如果在方括号中 [] 定义的标签被找到,MapServer将会把它的值传递到HTML模板中。

maplayer 变量是交互式的 MapServer变量,它们被地图应用所需要。

map_web 传递的变量将会代替 Mapfile 的WEB 对象中TEMPLATE参数 。 这个变量与用户定义变量不同。