申报要素查询查询要素_第1页
申报要素查询查询要素_第2页
申报要素查询查询要素_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、申报要素查询:查询要素疯狂代码 HYPERLINK http:/CrazyC/http:/CrazyC/j:http:/CrazyC/BlogDigest/Article75704.html使用过关系数据库的人一般都非常熟悉SQL语句,它使用Select语句对数据库进行查询,Select语句可以发分为两大类:非聚合类查询语句和聚合类查询语句。上面例子中的第一条SELECT语句是一条非聚合类查询语句,用于选择“成绩表”中“学号=100and学号=100and学号=20”定义了一个过滤条件选择所有FEATID”属性大于20的要素。2);空间过滤器空间过滤器使用一个关联与两个几何图形的空间操作符定义

2、一个过滤条件,它通常作为MgFeatureQueryOption:SetSpatialFilter(.J或MgFeatureAggregateOptions:SetSpatialFilter(.J方法的参数。该方法的原型如下所示,参数geometryProperty用于指定要素类中几何属性的名称,geometry用于指定一个几何对象,参数spatialOperation用于指定一个空间操作符。假设操作符是MgFeatureSpatialOperations:Within,几何对象的WKT表示为POLYGON(00,20,22,02,00),那么此过滤条件的效果是选择在多边形内部的所有要素。类M

3、gFeatureSpatialOperations定义了MapGudie支持的空间操作符,它们的含义请参考空间关系。l;MgFeatureSpatialOperations:Containsl;MgFeatureSpatialOperations:CoveredByl;MgFeatureSpatialOperations:Crossesl;MgFeatureSpatialOperations:Disjointl;MgFeatureSpatialOperations:EnvelopeIntersectsl;MgFeatureSpatialOperations:Equalsl;MgFeatureS

4、patialOperations:Insidel;MgFeatureSpatialOperations:Intersectsl;MgFeatureSpatialOperations:Overlapsl;MgFeatureSpatialOperations:Touchesl;MgFeatureSpatialOperations:Within3);组合过滤器通过调用方法MgFeatureQueryOption:SetBinaryOperator(.J可以使用逻辑操作符AND或OR将基本过滤器和空间过滤器组合在一起,参数andOr的值为TRUE表示使用AND逻辑操作符,FALSE表示使用OR逻辑操作

5、符,该方法只有在基本过滤器和空间过滤器设置的情况下才会发挥作用。如果设置了基本过滤器和空间过滤器,却没有调用此方法,那么使用AND操作符组合基本过滤器和空间过滤器。过滤器的BNF语法如下所示,从中可以看到表达式是过滤器的重要组成部分,表达式支持的数据类型如表8-4所示,可以使用部分函数如表8-5所示。;表8-4表达式支持的数据类型;表8-5表达式中可以使用的部分函数;表达式中的一些函数可以使用单个要素的属性值作为参数,返回一个和此属性值相关的值,例如ceil、floor、coneat和upper等,这些函数可以使用于非聚合类和聚合类查询;一些函数可以将多个要素的属性值作为参数,返回一个和一组属

6、性值相关的值,例如avg、count、max、min、stddev和sum等,这些函数只能使用于聚合类查询。下面是一些表达式的例子,以及如何使用这些表达式进行查询。1);NULL给定一个字符串类型的属性Name,如果它的属性允许为NULL,并且在插入一个要素时没有指定此属性的值,那么这个要素Name属性的值为NULL。通过应用过滤条件NameNULL”,可以选择所有Name属性值为NULL的所有要素。通过应用过滤条件NOTNameNULL,可以选择所有Name属性值不为NULL的所有要素。2);LIKELike可以用于实现模糊查询,给定一个字符串模式(Patern),可以使用Like查找所有符

7、合指定模式的要素。其中,百分号”用于匹配0个或多个字符,下划线_”用于匹配单个字符。假设Description是一个字符串类型的属性,数据源中有两个包含了此属性的要素,这两个属性的值为PointData”和“PolygonData”,过滤条件“DescriptionLIKE卩olygon返回PolygonData”,过滤条件NOTDescriptionLIKE卩olygon返回PointData,过滤条件DescriptionLIKE卩ol_gon返回PolygonData”3);IN()IN操作符用于选择与列表中的任意一个值匹配的要素,给定一个Int16类型的属性Id,过滤条件IdIN(-5

8、995,-7033)”选择Id属性值等于-5995或-7033的要素。;排序调用MgQueryOptions:SetOrderingFilter(.J可以将查询结果进行排序,该方法的签名如下所示,参数orderByProperties是一个属性名称的集合,用于指定排序的属性,如果指定了多个属性,那么优先使用orderByProperties中序号较小的属性,只有在序号较小的属性具有相同的值时,才使用序号较大的属性;参数orderOption用于指定是以升序的方式还是降序的方式进行排序,它的值可以为MgOrderingOption:Ascending或MgOrderingOption:Desce

9、nding,分别用于表示升序和降序。;分组调用MgFeatureAggregateOptions:SetGroupingFilter(.J可以将查询结果进行分组,该方法的签名如下所示,参数groupByProperties是一个属性名称的集合,用于指定分组的属性,如果指定了多个属性,那么优先使用orderByProperties中序号较小的属性,只有在序号较小的属性具有相同的值时,才使用序号较大的属性;参数groupFilter用于指定分组的过滤器。如下的代码展示了如何使用分组创建一个聚合类查询。上面代码的功能类似于如下的SQL语句。;MgDataReader、MgFeatureReader和

10、IMgSqlDataReaderMapGuide支持三种类型的读取器,它们分别为MgDataReader、MgSqlDataReader和MgFeatureReader,读取器的类型由类MgReaderType定义。I;MgReaderType:DataReaderl;MgReaderType:FeatureReaderl;MgReaderType:SqIDataReader类MgDataReader、MgSqlDataReader和MgFeatureReader都继承自MgReader,都是一个用于读取查询结果的前向只读迭代器(Forward-Only,Read-OnlyIterator),

11、读取器的初始位置总是位于第一个数据之前,在读取数据之前必须调用方法ReadNext(.J,在调用ReadNext()之后就无法读取读取器当前位置之前的数据。它们之间的主要不同点是,MgFeatureReader包含了一个方法MgFeatureReader:GetClassDefinition(),通过该方法的返回值可以得到查询结果的类定义(ClassDefinition),通过类定义得到每个属性的定义、主键等信息,而MgDataReader和MgSqlDataReader仅仅可以通过方法MgReader:GetPropertyType(.J得到属性的类型。如下的代码展示了将一个MgFeatur

12、eReader实例中的所有要素输出到一个文件中。需要注意的是,在使用读取器读取完数据后要尽量马上调用方法MgReader:Close()关闭读取器。为什么呢?为了提高MapGuide服务器的响应速度,MapGuide服务器使用了连接池(ConnectionPool)的方式缓存了要素源FDO连接,即FdolConnection实例,当接收到一个要素服务请求之后,它会首先在FDO连接池中查找是否有可用的FDO连接,如果有就使用此FDO连接执行服务请求,否则创建一个新的FDO连接,但是如果已经超过服务器配置文件中设置的最大FDO连接数,那么此要素服务请求会失败。当要素服务返回一个读取器之后,为了保证查询结果不会在读取数据之前消失

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论