Engine中如何实现两个矢量图层间的空间查询?

Engine中如何实现两个矢量图层间的空间查询?不想使用逐个要素遍历的方法。
已邀请:

朱新颖

赞同来自: llc3s

【解决办法】:
Engine中提供了IQueryByLayer接口可以实现两个图层间的空间查询,有一点需要注意:如果ByLayer中进行了选中,则IQueryByLayer.UseSelectedFeatures可以设为true,如果没有进行选中,那么IQueryByLayer.UseSelectedFeatures设为true或者不设置都查询不到,必须设置为false。

下面测试代码可以查询线完全在面的内部:


IFeatureLayer FromLayer = axMapControl1.get_Layer(0) as IFeatureLayer;//线图层 
IFeatureLayer ByLayer = axMapControl1.get_Layer(1) as IFeatureLayer;//面图层 

IQueryByLayer pQueryByLayer = new QueryByLayerClass(); 
pQueryByLayer.FromLayer = FromLayer; 
pQueryByLayer.ByLayer = ByLayer; 
pQueryByLayer.LayerSelectionMethod = esriLayerSelectionMethod.esriLayerSelectCompletelyWithin; 
pQueryByLayer.UseSelectedFeatures = false; 
ISelectionSet selectionSet = pQueryByLayer.Select(); 
IFeatureSelection pFeatureSelection = (IFeatureSelection)FromLayer; 
pFeatureSelection.SelectionSet = selectionSet; 
axMapControl1.Refresh(); 

要回复问题请先登录注册