查询是GIS中最常见的基本功能之一,前面两节我们重点介绍了两种常用的空间查询方法。很多情况下 ,查询过程更为复杂,在空间查询的基础上还需要进一步结合属性查询才能满足要求,因此今天我们重点介绍一下结合了空间和属性查询两种方式的综合查询方法,这里选择两个常见的查询内容举例说明。
查询指定范围内超过一定高度的建筑需要同时满足两个查询条件:空间上满足在指定范围内和属性满足高度超过指定值。首先设置空间查询条件,即下图黄色区域为搜索区。
接下来设置属性查询条件,即指定查询字段和过滤条件,如高度(height字段值)大于指定值(23m)。
由此得到在该范围内所有高度大于指定高度(23m)的建筑,如下图粉色高亮显示的建筑即为最终查询结果。
查询道路两侧一定缓冲距离内层数满足要求的建筑同样需要同时满足两个查询条件:空间上满足在道路缓冲半径内和属性满足层数不超过指定值。首先设置空间查询条件,即下图红色区域为缓冲范围内。
接下来设置属性查询条件,即指定查询字段和过滤条件,如层数(level字段值)小于等于指定值(8)。
由此得到在该道路两侧25m内所有层数不超过8层的建筑,如下图粉色高亮显示的建筑即为最终查询结果。
进行空间和属性的综合查询可以直接在Builder和Explorer Pro中查询:
也可以在开发中实现,主要的代码如下:
ISpatialFilter filter=new SpatialFilter();
filter.GeometryField="Geometry";
filter.SpatialRel=gviSpatialRel.gviSpatialEnvelope;
filter.Geometry=polygon;
filter.WhereClause="属性过滤条件";
IFdeCursor cursor=fc.Search(filter,false);
加入我们官方QQ讨论群,参与更多互动分享
CityMaker软件技术分享群
189406624