资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,空间分析,空间查询,空间拓扑运算,空间关系运算,叠加分析,概述,空间分析是地理信息系统软件的基本功能之一,其应用范,围十分广泛,从地质、地理现象到社会经济现象,各种具有,空间属性的变量都可以通过空间分析揭示其空间特征。,通过空间分析,不但可以知道数据库中的数据,而且可以,通过这些数据去揭示更深刻、更内在的规律和特征,它特有,的对地理信息的提取、表现和传输功能,是地理信息系统区,别于一般信息系统的主要功能特征。,概述,空间分析根据使用的数据性质不同,可以分为:,(1),基于空间图形数据的分析运算,;,(2),基于非空间属性的数据运算,;,(3),空间和非空间数据的联合运算。,空间分析最终目的是解决人们涉及的地理空间实际问,题,提取空间信息(特别是隐含信息),为决策提供辅助支,持。,本章介绍了,GIS,中空间分析的部分基本功能,包括空间关,系运算、空间拓扑运算、空间查询、缓冲区分析、叠加分析,和网络分析,并描述如何结合,C#,与,ArcObjects,实现这些功,能。,一、空间查询,在,ArcMap,中,数据查询有两种类型:一种是基于非空间,属性选择,另一种是基于空间属性选择。前者可以回答诸如,“高度在,100,米以上的建筑是哪些”、“全市营业额在,100,万元,的商店有多少”的问题,后者可以告诉用户“中山公园,1000,米范围内的停车场在什么地方”等空间查询问题。,一、空间查询,1 Cursor,对象,Cursor,(游标),是一个指向数据的指针,本身并不包含数据内,容,只提供一个连接到,Row,对象或要素对象的桥梁。在,ArcObjects,中,常用的对象是,FeatureCursor,,,它是,Cursor,的一个子类,指向一个,或多个要素。,利用,Search,方法,如,ILayer.Search,ITable.Search,等都可以返回,一个游标对象。这个,Cursor,指向了那些符合选择条件的要素。,IFeatureCursor,pCursor;,pCursor=,pFeatlyr.search,();/,返回游标对象,IFeature,pFeat,;,pFeat,=,pCursor.NextFeature,();/,通过循环遍历游标所指向的要素,while(pFeat,!=null),/.,pFeat,=,pCursor.NextFeature,();,一、空间查询,2,QueryFilter,对象,在关系数据库中,这些操作都是使用,SQL,语句的,WHERE,后而的子语句完,成,如“,Select*from,pTable,where age18”,。,在,ArcObjects,中进行的查询或选择,也传给系统查找条件,即系统需,要知道它将返回满足什么条件的数据筛选出来,可以通过,QueryFilter,对象来实现数据查询,它是一个依据属性查询表格型数据的过滤器。使,用这个过滤器将方便地取出某些记录,然后更新或删除它们,这些与用,户在普通关系型数据库中的做法并没有太大的区别。,IQueryFilter,接口定义了,QueryFilter,类用于过滤数据时使用的属性,和方法。新建一个过滤器对象后,如,WhereClause,属性是必须设置的,,用于确定筛选的添加,;,而,SubFields,则用于设置返回的数据包含哪些字段,在默认的情况下,被设置为“*”,表示返回所有的字段,这与,SQL,语句的“,Select*from”,相似。,一、空间查询,2,QueryFilter,对象,下面的例子显示如何在一幅美国地图中选出,California,来,:,IQueryFilter,pQueryFilter,=new,QueryFiIterClass,();,/,设置过滤对象的属性,pQueryFilter.WhereClause,=STATE_NAME=California;,IFeatureSelection,pFeatureSelection,;,pFeatureSelection,=,pFeatureLayer,as,IFeatureSelection,;,pFeatureSelection.SelectFeatures(pQueryFilter,esriSelectionResuItEnum.esriSelectionResuItNew,false);,如果在选择的过程中不过滤任何的记录,而是返回所有的数据,则可以使,用关键字“,null”,来替代,pQueryFilter,对象。,除了在选择条件中使用完全查询外,过滤器对象也支持模糊查询,如选择,一个全国城市,SDE,数据库中所有名称以,B,开始的城市,过滤器的,WhereClause,属性应该为,:,pQueryFilter,.,WhereClause,=STATE_ NAME like B%”,如果数据库是,Access,的,则代码为,:,pQueryFilter.WhereClause,=STATE_ NAME like B*”,。,一、空间查询,3,ISpatialFilter,对象,在,GIS,中更频繁的是执行具有空间因素的查询,如“在,100,米内的电话,亭有哪些”等,显然地,这些查询是基于要素几何数据的。而进行这种,空间查询过滤运算的,是,IQueryFilter,的子类,ISpatialFlter,。,用户可以进行的空间过滤范围非常广泛,如,寻找与某个选择区域相覆盖的要素,寻找某个要素附近的对象,一、空间查询,3,ISpatialFilter,对象,由于,ISpatialFilter,是,IQueryFilter,的子类,,ISpatialFilter,对象,包含了空间查询和普通查询两种功能,这个特点非常有用,比如需要查,询“在某一点,2000,米范围内的服装店”,它就需要查询两个条件,:,一是,2000,米范围的空间属性查询,二是服装店要素的普通属性查询。,ISpatialFilter,过滤器是基于空间关系的,这个接口定义了许多空间,过滤时需要使用的属性,其中,Geometry,和,SpatialRel,属性是这个过,滤器在新建的时候必须进行设置,的。,SpatialRel,属性是一个确定,查询几何对象与目标要素几何对,象关系的枚举值,具体如下,:,一、空间查询,3,ISpatialFilter,对象,下面的代码显示如何使用一个空间过滤器,:,ISpatialFilter,pFilter,;,pFilter,=new,SpatiaIFiIterClass,();,/,设置空间过滤器所必须的三个属性,pFilter.Geometry,=,pPoint,;,pFilter.GeometryField,=SHAPE;,pFilter.SpatialRel,=,esriSpatiaIRelEnum.esriSpatialRellntersects,;,IFeatureCursor,pFeatureCursor,;,pFeatureCursor,=,pFeatureClass.Search(pFilter,false);,pFeatureClass,要素类的,Search,方法将返回一个游标,这个游标指向,要素类中所有与,pPoint,点具有相交拓扑关系的要素。,二、空间拓扑运算,1,ITopologicalOperator,接口,通过基于一个或者多个几何图形间的逻辑比较,返回一些几何图形,,这个过程就是空间几何图形的,拓扑,运算。它是空间分析的基础,各种空,间分析的结果都可通过几何图形之间的拓扑运算实现。例如,:,为了判断,哪些购物中心被地震破坏的危险度最大,需查询沿一条地震的断层两侧,1OOOm,范围内的所有购物中心。这是一个典型的缓冲区查询问题。,空间几何图形的拓扑运算包括裁切,(Clip),、,凸多边形,(Convex,hull),、,切割,(Cut),、,差分,(Difference),、,交集,(Intersect),、,对称差分,(,又称为异或,,Symmetric difference,)和并集,(Union),等,这些拓扑运,算在,ITopologicalOperator,接口中定义,在,GeometryBag,、,Multipoint,、,Point,、,Polygon,Polyline,类中实现。,二、空间拓扑运算,1,ITopologicalOperator,接口,ITopologicalOperator.Boundary,可以返回一个几何对象的边界,,Boundary,的维度比原对象要低一维,如多边形的,Boundary,是多义线,多义线的,Boundary,则是它的顶点集合,而点集对象的,Boundary,则是不存在,因为没有低于,0,维的集合对象。,ITopologicalOperator,接口,ITopologicalOperator.Buffer,可以给一个高级别几何对象产生一个缓冲区,无论是点、多边形还是多义线,它们的缓冲区都是一个具有面积的几何对象。,二、空间拓扑运算,1,ITopologicalOperator,接口,ITopologicalOperator.Clip,方法可以将一个,几何对象使用一个包络线来进行裁切,,裁切的结果为,几何,对象被包络线包围的,部分。,TopologicalOperator,.,ConstructUnion方法可以将一个,几何,对象的枚举(包含,了多个几何对象的枚举值,),与同维度的单个几何对象合并,这种方法在大量几何对象合并的时候是非常有效的;,Union,方法则可以合并两个同维度的单个几何对象,合并后的两个单个几何对象将变成一个几何对象。,二、空间拓扑运算,1,ITopologicalOperator,接口,ITopologicalOperator,.,Convex,H,ull方法可以产生一个,几何,图形的最小的边框,凸,多边形,。,凸,多边形是一个没有,凹面且,包含其他,几何,图形的最小多边形,。,ITopologicalOperator,.Cut,方法指定一条切割曲线和一个几何图形,经过切割运算后把几何图形分为左、右两部分,左、右两部分是相对曲线的方向而言的。注意:点和多点是不能被切割的,而折线和多边形只有与切割曲线相交时才能进行切割运算。,二、空间拓扑运算,1,ITopologicalOperator,接口,ITopologicalOperator,.,Difference方法可以产生两个,几何,对象的差集。如A是源对象,,B,是参与运算的,几何,对象,则C=,A.Difference(B,),C是A减去A与,B,的交集后剩下的部分,;,而SymmetricDifference(对称差分)方法则是将A,与,B,的并,集减,去A与,B,的交集部分。,ITopologicalOperator,.,Intersection则可以返回两个同维度,几何,形体对象的交集,即两个对象的重合部分,。,二、空间拓扑运算,1,ITopologicalOperator,接口,缓冲区查询:,根据鼠标点击位置产生,一缓冲区,,,然后找出缓冲区内的要素,。,三、空间关系运算,1,IRelationaloperator,接口,几何对象除了可以进行拓扑运算外,它们之间还拥有某,种关系属性,如包含、,相等、在内部、相交、叠加等。,这些,关,系都可以通过,IRelationaloperator,的方,法获,得。,关,系运算是在两个,几何,对象中进行的,它们都返回一,个布,尔,值来,说明,某种关系是否存在。有些关系运算需要两个,几何,对,象的维度相同,有些关,系运,算没有这个限,制。,所,有支持,ITopologicaloperator,的,几何,对象的类,(,Point,Multipoint,Polyline,和,Polygon,)都实现了,IRelationaloperator,接口,。,三、空间关系运算,1,
展开阅读全文