MS RFC 74:包括来自非文件连接(例如数据库)¶
- 日期
2011/07/29
- 作者
迈克尔·史密斯、丹尼尔·莫里塞特
- 联系方式
在usace.army.mil 上了解更多有关Michael.Smith 的信息,在mapgears.com上了解更多有关Dmorissette的信息
- 最后编辑
09/17/2011
- 状态
草稿
- 版本
TBD
1。概述¶
mapserver 4.10引入了include文件的概念。当遇到此指令时,立即分析到包含文件的开关。因此,所包含的文件可以由任何有效的mapfile语法组成。例如,可以写:
INCLUDE 'myLayer.map'
这将包括运行时 Mapfile 中的内容。
将此扩展为允许来自数据库连接的包含将很有用。这为不需要mapscript的动态 Mapfile 提供了另一种机制。
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.2MapScript问题¶
应该没有mapscript问题,这只对cgi有用
3.3安全问题¶
安全问题应该与任何现有的数据库连接层一样重要。
3.4向后兼容性问题¶
此更改提供了新的功能,没有考虑向后兼容性问题。
4。臭虫识别码¶
没有指定。
5。投票历史¶
没有