查询¶
- 作者
肖恩吉利斯
介绍¶
本文档中的所有示例都是指与MapServer 4.2+一起分发并在MapServer/Tests下找到的 Mapfile 和测试层。
伪码¶
所有示例都将使用与语言无关的API引用一致的伪代码。每行都是一个语句。对于对象属性和方法,我们使用点,'.'运算符。对象的创建和删除将用“new”和“del”关键字表示。除此之外,伪代码看起来很像Python。
查询概述¶
查询结果集¶
可以使用空间查询方法或属性查询方法查询地图图层以选择要素。暂时忽略我们是在执行空间查询还是属性查询,结果是这样获得的:
layer.query() # not an actual method!
results = layer.getResults()
如果查询失败或结果为零,则“getresults”返回空值。
结果集成员¶
查询结果的各个成员的获取方式如下:
... # continued
if results:
for i in range(results.numresults): # iterate over results
result = results.getResult(i)
此结果对象是一个用于层功能的句柄,具有“shapeindex”和“tileindex”属性,可以用作“getfeature”的参数。
结果特征¶
现在可以将前面的示例代码扩展到获取所有查询的功能的情况:
layer.query()
results = layer.getResults()
if results:
# open layer in preparation of reading shapes
layer.open()
for i in range(results.numresults):
result = results.getResult(i)
layer.getFeature(result)
... # do something with this feature
# Close when done
layer.close()
向后兼容性¶
API在6.0版本中发生了实质性的变化,并且向后兼容性被破坏。必须更新脚本才能使用新的API。