查询

作者

肖恩吉利斯

目录

介绍

本文档中的所有示例都是指与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。

属性查询

按属性

按属性查询()

空间查询

矩形的

查询条件()

逐点

查询条件()

按形状

字形()

通过选择

按功能查询()