Arcgis for Flex中的Query查询在项目中的运用
发布时间:2020-12-15 03:33:30 所属栏目:百科 来源:网络整理
导读:项目中需要判定两个面间的拓扑关系,ArcGIS中三种常用查询: QueryTask、 FindTask、 IdentifyTask,其中query查询比较适合判断两个几何图形(点、线、面)之间的关系(重合、相交、分离等)。 在使用中发现spatialRelationship参数使用灵活度较大,为了便于以后
项目中需要判定两个面间的拓扑关系,ArcGIS中三种常用查询:QueryTask、FindTask、IdentifyTask,其中query查询比较适合判断两个几何图形(点、线、面)之间的关系(重合、相交、分离等)。 在使用中发现spatialRelationship参数使用灵活度较大,为了便于以后使用,特此记下来query查询的一些应用方法, 首先上一段通用query查询方法。
/** * 通用query查询方法 * @param url 查询图层URL * @param outFields 需要输出的字段 * @param relation 查询类型 * @param geometry 空间几何范围 * @param result 查询结果回调函数 * @param fau 查询失败回调函数 * @param relationParam 自定义查询条件 * */ public static function queryUtil(url:String,outFields:Array,relation:String,geometry:Geometry,result:Function,fau:Function,relationParam:String=""):void { var queryTask:QueryTask = new QueryTask(url); var query:Query = new Query(); query.outFields = outFields; query.spatialRelationship = relation; if(relation==Query.SPATIAL_REL_RELATION){ query.relationParam=relationParam; } query.geometry = geometry; query.returnGeometry = true; queryTask.showBusyCursor = true; queryTask.useAMF = false; queryTask.execute(query,new AsyncResponder(result,fau)); } 方法的参数如下:
重点介绍下自定义的查询条件,ArcGIS API for Flex提供了几个常用的查询条件,具体可参考官方api。当官方提供的查询条件不能满足需求时,可设置queryTask的spatialRelationship参数值为SPATIAL_REL_RELATION,然后自定义设置relationParam。
自定义规则如下:
自定义的规则为单个字符串,每个字符使用"T"、"F"、"*"表示,T表示为真,F表示为假,*表示不限制。
项目中需要判断两个区域(面)是否相离,就是不能让两个面相交,边界重合,相互包含。刚开始使用官方提供的几个规则都不能很好的进行条件判断,最后自己设置了一条规则,“T*******T”,可满足条件的判断。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |