ArcGIS空间关系:ArcEngine中的esriSpatialRelEnum枚举

本文从ArcGIS空间查询接口,本文偏应用,主要介绍ArcEngine枚举esriSpatialRelEnum,从ISpatialFilter的SpatialRel属性来介绍

esriSpatialRelEnum枚举

序号英文描述中文描述
1esriSpatialRelUndefinedNo Defined Spatial Relationship.没有定义的空间关系
2esriSpatialRelIntersectsQuery Geometry Intersects Target Geometry.查询几何体与目标几何体相交
3esriSpatialRelEnvelopeIntersectsEnvelope of Query Geometry Intersects Envelope of Target Geometry.查询几何体的包络线与目标几何体的包络线相交。
4esriSpatialRelIndexIntersectsQuery Geometry Intersects Index entry for Target Geometry (Primary Index Filter).查询几何体与目标几何体的索引项相交(主索引筛选器)
5esriSpatialRelTouchesQuery Geometry Touches Target Geometry.查询几何体接触目标几何体。
6esriSpatialRelOverlapsQuery Geometry Overlaps Target Geometry.查询几何体与目标几何体重叠。
7esriSpatialRelCrossesQuery Geometry Crosses Target Geometry.查询几何体与目标几何体相交。
8esriSpatialRelWithinQuery Geometry is Within Target Geometry.查询几何体在目标几何体中。
9esriSpatialRelContainsQuery Geometry Contains Target Geometry.查询几何体在目标几何体中。
10esriSpatialRelRelationQuery geometry IBE(Interior-Boundary-Exterior) relationship with target geometry.查询几何体IBE(内边界-外部)与目标几何体的关系。

1.组织测试数据以及案例Demo

1.1 测试数据如下

1查询图形

在这里插入图片描述

2目标查询图形

在这里插入图片描述

1.2 为了方便查看最后结论,先贴一下结果图

在这里插入图片描述

1.3 Demo代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using System.Runtime.InteropServices;namespace GISSpatialFilter
{public partial class Form1 : Form{public Form1(){InitializeComponent();ISpatialFilter pSpatialFilter = new SpatialFilterClass();pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;}private void btnEsriSpatialRelUndefined_Click(object sender, EventArgs e){ISpatialFilter pSpatialFilter=new SpatialFilterClass();pSpatialFilter.SpatialRel= esriSpatialRelEnum.esriSpatialRelUndefined;SpatialFilterQuery(pSpatialFilter);}private void btnEsriSpatialRelIntersects_Click(object sender, EventArgs e){ISpatialFilter pSpatialFilter = new SpatialFilterClass();pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;SpatialFilterQuery(pSpatialFilter);}private void btnEsriSpatialRelEnvelopeIntersects_Click(object sender, EventArgs e){ISpatialFilter pSpatialFilter = new SpatialFilterClass();pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelEnvelopeIntersects;SpatialFilterQuery(pSpatialFilter);}private void btnEsriSpatialRelIndexIntersects_Click(object sender, EventArgs e){ISpatialFilter pSpatialFilter = new SpatialFilterClass();pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIndexIntersects;SpatialFilterQuery(pSpatialFilter);}private void btnEsriSpatialRelTouches_Click(object sender, EventArgs e){ISpatialFilter pSpatialFilter = new SpatialFilterClass();pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelTouches;SpatialFilterQuery(pSpatialFilter);}private void btnEsriSpatialRelOverlaps_Click(object sender, EventArgs e){ISpatialFilter pSpatialFilter = new SpatialFilterClass();pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelOverlaps;SpatialFilterQuery(pSpatialFilter);}private void btnEsriSpatialRelCrosses_Click(object sender, EventArgs e){ISpatialFilter pSpatialFilter = new SpatialFilterClass();pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelCrosses;SpatialFilterQuery(pSpatialFilter);}private void btnEsriSpatialRelWithin_Click(object sender, EventArgs e){ISpatialFilter pSpatialFilter = new SpatialFilterClass();pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelWithin;SpatialFilterQuery(pSpatialFilter);}private void btnEsriSpatialRelContains_Click(object sender, EventArgs e){ISpatialFilter pSpatialFilter = new SpatialFilterClass();pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;SpatialFilterQuery(pSpatialFilter);}public void SpatialFilterQuery(ISpatialFilter pSpatialFilter){try{IFeature pSourceFea = (axMapControl1.get_Layer(0) as IFeatureLayer).FeatureClass.GetFeature(1);pSpatialFilter.Geometry = pSourceFea.Shape;IFeatureClass pTargetFeaClass = (axMapControl1.get_Layer(1) as IFeatureLayer).FeatureClass;IFeatureCursor pFeaCursor = pTargetFeaClass.Search(pSpatialFilter, true);IFeature pFea = null;List listSearch = new List();while ((pFea = pFeaCursor.NextFeature()) != null){listSearch.Add(pFea.OID);}Console.WriteLine(string.Format("{0}:查询结果[{1}]", pSpatialFilter.SpatialRel, string.Join(",", listSearch)));Console.WriteLine();Marshal.ReleaseComObject(pFeaCursor);}catch (Exception ex){Console.WriteLine(string.Format("{0}:查询失败[{1}]", pSpatialFilter.SpatialRel, ex.Message));Console.WriteLine();}}}
}

2.查询结果

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部