MS RFC 74:包括来自非文件连接(例如数据库)

日期

2011/07/29

作者

迈克尔·史密斯、丹尼尔·莫里塞特

联系

Michael.Smith在usace.army.mil,dmorissette在mapgears.com

最后编辑

09/17/2011

状态

草稿

版本

TBD

1。概述

mapserver 4.10引入了include文件的概念。当遇到此指令时,立即分析到包含文件的开关。因此,所包含的文件可以由任何有效的mapfile语法组成。例如,可以写:

INCLUDE 'myLayer.map'

这将包括运行时映射文件中的内容。

将此扩展为允许来自数据库连接的包含将很有用。这为不需要mapscript的动态映射文件提供了另一种机制。

2。建议的解决方案

此RFC建议添加一个新的dbinclude mapfile项。此项将具有多个关联的mapfile项,包括:

连接类型连接数据包括项目筛选器元数据

用结束关键字结束。

例子

DBINCLUDE
  CONNECTIONTYPE oraclespatial
  CONNECTION "%uid%/%passwd%@tns_connection"
  DATA "MAPLAYER_TABLE_NAME"
  INCLUDEITEM "MAPLAYERS"
  FILTER "condition=%layer_variable%"
  METADATA
     "layer_variable_validation_pattern"  "^condition1|condition2$"
  END
END

dbinclude关键字旁边唯一的新项是includeItem。它定义从中提取层定义的属性。它的功能类似于tileitem。

允许的连接类型包括ogr、postgis、oraclespacetic。

查询的一个例子是

从maplayer_table_name中选择maplayers,其中condition=condition1;

maplayers内容的内容是要包含在mapfile中的字符串,include可以。一个区别是,查询可以返回要添加的字符串的结果集,并且相当于n include语句。

2.5用例

一个常见的用例是为个人提供一个自定义的分类层。目前,没有mapscript很难做到这一点。

例如,在表中,一列是用户名,第二列是层类级文本字符串。

示例表

用户

杰夫

类名“Jeff Layer”样式大纲颜色255 0 0符号0颜色0 0 255结束

丹尼尔

类名“Daniel Layer”样式大纲颜色122 180 200符号0结束

史提夫

类名“steve layer”表达式“type=brewery”样式符号0颜色0 255 255宽度4端

另一个常见的情况是动态地将层分类为数据更改。使用SQL,可以从数据本身即时计算文本字符串,方法是查看数据集的不同值以生成将用于显示该数据的类。

三。实施细节

3.1受影响的文件

此RFC将修改/创建以下文件:

mapfile.c
mapogr.c
maplayer.c
maplexer.l
mapparser.y

3.2MapScript问题

应该没有mapscript问题,这只对cgi有用

3.3安全问题

安全问题应该与任何现有的数据库连接层相同。

3.4向后兼容性问题

此更改提供了新的功能,没有考虑向后兼容性问题。

4。臭虫识别码

没有指定。

5。投票历史

没有