基于C#的ArcEngine二次开发38: 几何关系描述接口- ISpatialFilter 最全解析(一)

简介: 基于C#的ArcEngine二次开发38: 几何关系描述接口- ISpatialFilter 最全解析

1. ISpatialFilter接口简介

ISpatialFilter是一个包含空间和属性限制的QueryFilter,可以使用该过滤器进行要素的空间属性筛选:

使用spatial filter执行空间查询,常作为IFeatureClass::Search、IFeatureClass::Select或feature layers上相似方法的参数

需要Geometry,GeometryField和SpatialRel属性。

Geometry是源图形,根据与其的关系执行空间选择。

GeometryField是图形字段名,将其中的图形与源图形比较。

SpatialRel属性将一个esriSpatialRelEnum传入来指定空间关系。

使用esriSearchOrder指定SearchOrder。当指定属性查询后,该属性将指定先执行那一部分查询,该属性仅对SDE数据源有效。

SaptialRelDescription是个字符串,可代替SpatialRel属性定义额外的空间关系。这种情况下,SpatialRel参数必须设置成esriSpatialRelRelation。

esriGeometry提供其他方式执行空间查询。


2 属性与方法

2.1 概述表

image.png

image.png

2.2 ISpatialFilter.SpatialRelDescription

public stringSpatialRelDescription {get; set;}


用来表述查询要素和对比要素的空间关系的数组,使用9个字符进行空间关系描述,使用该参数要求SpatialRel属性取枚举值esriSpatialRelRelation.它允许比较两个几何图形之间存在的任何空间关系, 空间关系由查询几何图形的边界、内部和外部与对比图形的交点确定。A spatial relationship is defined by the intersections between the boundary, interior, and exterior of the query geometry and the requested geometry.所有被esriSpatialRelEnum定义的关系,都可以由该属性计算得到。


描述空间关系的三个基本概念:


内部:形状的内部定义为整个形状减去其边界,也即其边界内部的所有部分。[Interior:The interior of a shape is defined as the entire shape minus its boundary. All shapes have interior.]

边界:线和面的边界,点没有边界的概念,线的边界包含其所有终点,面的边界包含其多边形的轮廓线。[Boundary: Linear and area shapes have boundaries, but point shapes do not. The boundary of linear shapes consists of the end points of all linear parts. The boundary of area shapes consists of the linear boundary of the polygon shell(s)]

外部:面的形状之外,所有形状都有外部。[Exterior:The area outside a shape. All shapes have an exterior.]

注意两个图形的外部是相交的


Each element for the first shape, the query geometry, may be tested against each element of the second shape, the requested geometry, giving nine possible spatial intersections as listed in the table below:

image.png

说明: in 'FFFTTT***', relationships 1-3 must be false, relationships 4-6 must be true, and relationships 7-9 are not tested.


组合示例:


Shares a boundary: '****T***'

Shares a boundary and interiors intersect: 'T***T****'

Shares a boundary and interiors do not intersect: 'F***T****'

Does not touch the boundary and interiors intersect: 'T***F****'

与esriSpatialRelEnum含义对应的字符串


[Approximate  esriSpatialRelEnum SpatialRelDescription Strings ]


image.png

image.png

image.png

2.3 ISpatialFilter.SpatialRel

[C#]public esriSpatialRelEnumSpatialRel {get; set;}


说明:


大多数空间关系是由边界、内部和外部的交集定义的;

所有形状都有内部,直线和多边形有一个边界;

大多数空间关系在检查两个特征之间的空间关系时使用容差。在大多数情况下,此公差是搜索要素的XY公差。公差范围内的所有几何图形都视为相交。在重叠情况下,公差设置最小重叠。重叠小于公差的几何图形将不会被视为重叠。

Most spatial relationships are defined by the intersection of boundaries, interior and exterior. All shapes have an interior. Lines and polygons have a boundary. Most spatial relations use a tolerance when examining the spatial relationship between two features. In most cases this tolerance is the XY tolerance of the search feature. All geometries within the tolerance are seen as intersecting. In the overlaps case the tolerance sets the minimum overlap. Geometries that overlap less than the tolerance will not be seen as overlapping.

20200504160408109.png

用到XY容差的关系:esriSpatialRelIntersects,esriSpatialRelEnvelopeIntersects,esriSpatialRelTouches, esriSpatialRelOverlaps, esriSpatialRelCrosses, esriSpatialRelWithin,esriSpatialRelContains

esriSpatialRelRelation使用XY分辨率,通常比XY的容差小十倍

esriSpatialRelIndexIntersects不使用容差


相关文章
|
机器学习/深度学习 人工智能 JSON
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
Resume Matcher 是一款开源AI简历优化工具,通过解析简历和职位描述,提取关键词并计算文本相似性,帮助求职者优化简历内容,提升通过自动化筛选系统(ATS)的概率,增加面试机会。
1667 18
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
1089 5
C# 接口(Interface)
接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分。 接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。 接口使得实现接口的类或结构在形式上保持一致。 抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。 接口本身并不实现任何功能,它只是和声明实现该接口的对象订立一个必须实现哪些行为的契约。 抽象类不能直接实例化,但允许派生出具体的,具有实际功能的类。
270 10
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
990 5
|
API C# 数据库
SemanticKernel/C#:实现接口,接入本地嵌入模型
SemanticKernel/C#:实现接口,接入本地嵌入模型
419 1
|
存储 安全 Java
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
Java面试题:Java内存管理、多线程与并发框架:一道综合性面试题的深度解析,描述Java内存模型,并解释如何在应用中优化内存使用,阐述Java多线程的创建和管理方式,并讨论线程安全问题
298 0
|
存储 Java C#
C# 中的值类型与引用类型:内存大小解析
C# 中的值类型与引用类型:内存大小解析
398 2
|
XML 搜索推荐 数据格式
资源描述框架的用途及实际应用解析
**RDF(资源描述框架)**是一种用于机器理解网络资源的框架,使用XML编写。它通过URI标识资源,用属性描述资源,便于计算机应用程序处理信息。RDF在语义网上促进信息的确切含义和自动处理,使得网络信息可被整合。RDF语句由资源、属性和属性值组成。RDF文档包括`<rdf:RDF>`根元素和`<rdf:Description>`元素,后者用`about`属性标识资源。RDF还支持容器(如`<Bag>`、`<Seq>`和`<Alt>`)来描述集合。RDFS是RDF的扩展,提供描述类和属性的框架,而达布林核心是一组预定义属性,用于描述文
617 0
|
存储
初阶编程题积累(3)——最接近的三数之和(题目描述、示例、题目思路、题解、解析)
初阶编程题积累(3)——最接近的三数之和(题目描述、示例、题目思路、题解、解析)
164 0
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
297 1

推荐镜像

更多
  • DNS