有没有办法计算图层接收的项目/几何图形数量?我想要做的是在查询返回太多项目时绘制不同的符号。例如:
MAXFEATURES 10001 #if I get 10001 results, please zoom in
CLUSTER
MAXDISTANCE 20
REGION "retangular"
END
LAYER
CLASS
EXPRESSION ([countPoints] > 10000)
STYLE
SYMBOL "to_many_points_please_zoom_in"
END
END
CLASS
EXPRESSION ([countPoints] < 10000 and [Cluster:FeatureCount] > 1)
STYLE
SYMBOL "cluster"
END
END
CLASS
EXPRESSION ([countPoints] < 10000 and [Cluster:FeatureCount] == 1)
STYLE
SYMBOL "point"
END
END
END
我尝试使用[Cluster:FeatureCount],但它无法计算整个图层,只计算几个聚类中的点。
答案 0 :(得分:0)
据我所知,没有与countPoints
伪参数匹配的内置mapserver参数,所以很遗憾没有办法在普通的mapfile中做你想做的事情。在我看来,你有两个选择:
使用MapScript:您可以在图层上使用getNumFeatures()
来检索要素数量,并根据结果以编程方式调整类和样式。
将要素计数信息嵌入到源数据中,显式地使用包含要素计数的属性字段,或者通过更改MAXFEATURES > 10000
时存在的属性来隐式显示。使用后一个选项,您可以检查属性是否存在于mapfile表达式中。
沿着在源数据中嵌入要素计数信息的路线意味着您需要为每个请求生成数据,因为您已将逻辑从mapfile移动到创建数据的代码。这意味着要么数据来自数据库,SQL调用封装逻辑的过程,要么使用带有您控制的远程数据源的层CONNECTIONTYPE
(例如,OGR CONNECTIONTYPE
可以使用GeoJSON资源通过脚本生成的HTTP。