加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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));
	}

方法的参数如下:

  • url:某个图层的服务地址,是精确到单个图层的。
  • outFields:输出字段,如果需要获取查询后结果中的几何图形的属性信息,可通过该参数进行控制。
  • relation:查询类型,这个参数就是要查询的几何拓扑关系。
  • geometry:需要查询的几何图形范围,可以是点线面
  • result、fau:成功失败的回调函数。
  • relationParam:自定义查询条件,在relation为SPATIAL_REL_RELATION时,可使用自定义的查询条件。
重点介绍下自定义的查询条件,ArcGIS API for Flex提供了几个常用的查询条件,具体可参考官方api。当官方提供的查询条件不能满足需求时,可设置queryTask的spatialRelationship参数值为SPATIAL_REL_RELATION,然后自定义设置relationParam。
自定义规则如下:


自定义的规则为单个字符串,每个字符使用"T"、"F"、"*"表示,T表示为真,F表示为假,*表示不限制。
项目中需要判断两个区域(面)是否相离,就是不能让两个面相交,边界重合,相互包含。刚开始使用官方提供的几个规则都不能很好的进行条件判断,最后自己设置了一条规则,“T*******T”,可满足条件的判断。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读