ArcGIS空间关系:ArcEngine中的esriSpatialRelEnum枚举
本文从ArcGIS空间查询接口,本文偏应用,主要介绍ArcEngine枚举esriSpatialRelEnum,从ISpatialFilter的SpatialRel属性来介绍
esriSpatialRelEnum枚举
| 序号 | 项 | 英文描述 | 中文描述 |
|---|---|---|---|
| 1 | esriSpatialRelUndefined | No Defined Spatial Relationship. | 没有定义的空间关系 |
| 2 | esriSpatialRelIntersects | Query Geometry Intersects Target Geometry. | 查询几何体与目标几何体相交 |
| 3 | esriSpatialRelEnvelopeIntersects | Envelope of Query Geometry Intersects Envelope of Target Geometry. | 查询几何体的包络线与目标几何体的包络线相交。 |
| 4 | esriSpatialRelIndexIntersects | Query Geometry Intersects Index entry for Target Geometry (Primary Index Filter). | 查询几何体与目标几何体的索引项相交(主索引筛选器) |
| 5 | esriSpatialRelTouches | Query Geometry Touches Target Geometry. | 查询几何体接触目标几何体。 |
| 6 | esriSpatialRelOverlaps | Query Geometry Overlaps Target Geometry. | 查询几何体与目标几何体重叠。 |
| 7 | esriSpatialRelCrosses | Query Geometry Crosses Target Geometry. | 查询几何体与目标几何体相交。 |
| 8 | esriSpatialRelWithin | Query Geometry is Within Target Geometry. | 查询几何体在目标几何体中。 |
| 9 | esriSpatialRelContains | Query Geometry Contains Target Geometry. | 查询几何体在目标几何体中。 |
| 10 | esriSpatialRelRelation | Query 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.查询结果

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