Arcgis for Flex中的Query查詢在項目中的運用

項目中需要判定兩個面間的拓撲關係,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”,可滿足條件的判斷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章