日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

「Arcgis的」空间查询和属性查询

發(fā)布時間:2024/3/26 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 「Arcgis的」空间查询和属性查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

「Arcgis的」空間查詢和屬性查詢

概述

目錄

「Arcgis的」空間查詢和屬性查詢

概述

流程

FindTask

QueryTask

IdentifyTask


在ArcGIS API中查詢功能是非常常用的,Esri給我們提供了三個類用于查詢功能,FindTask,QueryTask,IdentifyTask,他們之間的區(qū)別為:

查詢分為屬性查詢和空間查詢類

屬性查詢:QueryTask,FindTask(只能屬性。多個圖層)

空間查詢:IdentifyTask(多個圖層),QueryTask(單個圖層)

?


任務,查詢,和FeatureSet一起被用于查詢地圖里的圖層并顯示結果。流程

  • 查詢:等同于下搜尋條件,可以輸入地圖上選擇的元素,列表里選擇的值或輸入值。
  • 任務:將建立好的查詢執(zhí)行,搜尋結果會用的FeatureSet回傳。
  • 的FeatureSet:為搜尋的結果,包含多邊形,信息窗口或該區(qū)塊的表格欄位內容。

  • FindTask

    FindTask是在某個地圖服務中進行屬性查詢的功能類,FindTask以FindParameters對象為參數(shù),能查詢同一個地圖服務的一個或多個圖層,并且可以在多個字段中進行查詢.DindTask?
    只能用于屬性資訊的查詢,在FindTask執(zhí)行結束后,可以從其回傳結果中獲取查詢的對象來自哪個圖層和哪個字段。

    ###代碼上
    基本頁面

    < input type = “ button ” value = “屬性查詢” id = “ Btn ” / > < div id = “ divShowResult ” > < / div >

    創(chuàng)建屬性查詢對象并給按鈕綁定點擊事件

    //地圖服務的URL var MapServer = "http://localhost:6080/arcgis/rest/services/Test/MyService/MapServer"; //創(chuàng)建屬性查詢對象 var findTask = new FindTask(MapServer); //創(chuàng)建屬性查詢參數(shù) var findParams = new FindParameters(); on(dom.byId("Btn"),"click",function(){//是否返回給我們幾何信息findParams.returnGeometry = true;//對哪一個圖層進行屬性查詢findParams.layerIds = [1];//查詢的字段findParams.searchFields = ["name"];//searchText和searchFields結合使用,即查詢name=J4findParams.searchText = "J4";//執(zhí)行查詢對象findTask.execute(findParams, ShowFindResult); })

    處理屬性查詢返回給我們的數(shù)據(jù)

    function ShowFindResult(queryResult) {//創(chuàng)建線符號var lineSymbol=new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 3);//創(chuàng)建面符號var fill=new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, lineSymbol);if (queryResult.length == 0) {dom.byId("divShowResult").innerHTML = "";return;}var htmls = "";if (queryResult.length >= 1) {htmls = htmls + "<table style=\"width: 100%\">";htmls = htmls + "<tr><td>名稱</td></tr>";for (var i = 0; i < queryResult.length; i++) {//獲得圖形graphicvar graphic = queryResult[i].feature;//賦予相應的符號graphic.setSymbol(fill);//將graphic添加到地圖中,從而實現(xiàn)高亮效果map.graphics.add(graphic);//獲得教學樓名稱(此處是和shp屬性表對應的)var ptName = graphic.attributes["alias"];if (i % 2 == 0)htmls = htmls + "<tr>";elsehtmls = htmls + "<tr bgcolor=\"#F0F0F0\">";htmls = htmls + "<td><a href=\"#\" \">" + ptName + "</a></td>";htmls = htmls + "</tr>";}htmls = htmls + "</table>";//將屬性綁定在divShowResult上面dom.byId("divShowResult").innerHTML = htmls;} }

    QueryTask

    QueryTask是進行空間和屬性查詢的功能類,可以在某個地圖服務的某個子圖層進行查詢。

    ###先決條件

  • 有需要查詢的圖層網(wǎng)址
  • 進行查詢的過濾條件
  • ###上代碼

    // 新建QueryTask var queryTask = new esri.tasks.QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0"); // 新建Query物件 var query = new esri.tasks.Query(); // 是否返回 查詢結果的空間幾何資訊 query.returnGeometry = true; // 設定要回傳的欄位 // 若要全部欄位皆回傳可輸入["*"] query.outFields = ["CITY_NAME", "STATE_NAME", "POP1990"]; // 欄位查詢 query.where="OBJECTID="+schoolObjecid; //查詢全部 //query.where="1=1";/********有多重查詢方式://字符串查詢: query.where = "NAME = '" + stateName + "'";//數(shù)字查詢: query.where = "POP04 > " + population;//使用"like"的where子句的縮寫: query.text = stateName;//當用戶在地圖上選擇要素時使用(使用地圖查詢的意思): query.geometry = evt.mapPoint;**********/ // 創(chuàng)建了查詢過濾器以後,執(zhí)行查詢。通過QueryTask.execute()方法執(zhí)行查詢。 queryTask.execute(query,function(featureSet){var fs = featureSet.features[0];//如果查詢成功並有返回值,控制臺輸出其他屬性if(fs){console.log(fs.attributes.CITY_NAME);console.log(fs.attributes.STATE_NAME);console.log(fs.attributes.POP1990);}else{alert("訊息獲取錯誤");} }, (err) => {console.log(' doXmQuerty ERROR!')console.log(err)});

    IdentifyTask

    IdentifyTask的使用與QueryTask十分類似,唯一不同的是IdentifyTask可以作用于多個圖層,而QueryTask是作用于一個圖層的。
    ###上代碼

    //空間查詢 function identifyTask(geometry) {//定義空間查詢對象,注意他的參數(shù)是整個地圖服務,而不是單個圖層var identifyTask = new IdentifyTask("http://localhost:6080/arcgis/rest/services/Test/Qingdao/MapServer");//定義空間查詢參數(shù)對象var params = new IdentifyParameters();//容差params.tolerance = 5;//是否返回幾何信息params.returnGeometry = true;//空間查詢的圖層params.layerIds = [0,1,2,3];//空間查詢的條件params.layerOption = IdentifyParameters.LAYER_OPTION_ALL;params.width = map.width;params.height = map.height;//空間查詢的幾何對象params.geometry = geometry;params.mapExtent = map.extent;//執(zhí)行空間查詢identifyTask.execute(params, showQueryResult); } //空間查詢展示 function showQueryResult(idResults) {//創(chuàng)建線符號var lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 3);//創(chuàng)建面符號var fill = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, lineSymbol);if (idResults.length > 0) {var htmls = "<table style=\"width: 100%\">";htmls = htmls + "<tr bgcolor=\"#E0E0E0\"><td> 圖層 </td><td> 名 稱</td></tr>";for (var i = 0; i < idResults.length; i++) {var result = idResults[i];//獲得圖形graphicvar graphic = result.feature;//設置圖形的符號graphic.setSymbol(fill);var namevalue = result.feature.attributes.Name;if (i % 2 == 1) {htmls = htmls + "<tr bgcolor=\"#E0E0E0\"><td>" +result.layerName + "</td><td>" + namevalue + "</td></tr>";}else {htmls = htmls + "<tr><td>" + result.layerName + "</td><td>"+ namevalue + "</td></tr>";}map.graphics.add(graphic);}htmls = htmls + "</table>";document.getElementById("divShowResult").innerHTML = htmls;$("#divShowResult").show();}else {document.getElementById("divShowResult").innerHTML = "";$("#divShowResult").show();} }

    總結

    以上是生活随笔為你收集整理的「Arcgis的」空间查询和属性查询的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。