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

概述

目录

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

概述

流程

FindTask

QueryTask

IdentifyTask


在ArcGIS API中查询功能是非常常用的,Esri给我们提供了三个类用于查询功能,FindTask,QueryTask,IdentifyTask,他们之间的区别为:

查询分为属性查询和空间查询类

属性查询:QueryTask,FindTask(只能属性。多个图层)

空间查询:IdentifyTask(多个图层),QueryTask(单个图层)

任务,查询,和FeatureSet一起被用于查询地图里的图层并显示结果。流程

  1. 查询:等同于下搜寻条件,可以输入地图上选择的元素,列表里选择的值或输入值。
  2. 任务:将建立好的查询执行,搜寻结果会用的FeatureSet回传。
  3. 的FeatureSet:为搜寻的结果,包含多边形,信息窗口或该区块的表格栏位内容。


FindTask

FindTask是在某个地图服务中进行属性查询的功能类,FindTask以FindParameters对象为参数,能查询同一个地图服务的一个或多个图层,并且可以在多个字段中进行查询.DindTask 
只能用于属性资讯的查询,在FindTask执行结束后,可以从其回传结果中获取查询的对象来自哪个图层和哪个字段。

###代码上
基本页面

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

创建属性查询对象并给按钮绑定点击事件

//地图服务的URL
var MapServer = "http://localhost:6080/arcgis/rest/services/Test/MyService/MapServer";
//创建属性查询对象
var findTask = new FindTask(MapServer);
//创建属性查询参数
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";//执行查询对象findTask.execute(findParams, ShowFindResult);
})

处理属性查询返回给我们的数据

function ShowFindResult(queryResult) {//创建线符号var lineSymbol=new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 3);//创建面符号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添加到地图中,从而实现高亮效果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是进行空间和属性查询的功能类,可以在某个地图服务的某个子图层进行查询。

###先决条件

  1. 有需要查询的图层网址
  2. 进行查询的过滤条件

###上代码

// 新建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 + "'";//數字查詢:  query.where = "POP04 > " + population;//使用"like"的where子句的縮寫: query.text = stateName;//當用戶在地圖上選擇要素時使用(使用地圖查詢的意思): query.geometry = evt.mapPoint;**********/
// 創建了查詢過濾器以後,執行查詢。通過QueryTask.execute()方法執行查詢。
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) {//定义空间查询对象,注意他的参数是整个地图服务,而不是单个图层var identifyTask = new IdentifyTask("http://localhost:6080/arcgis/rest/services/Test/Qingdao/MapServer");//定义空间查询参数对象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;//执行空间查询identifyTask.execute(params, showQueryResult);
}
//空间查询展示
function showQueryResult(idResults) {//创建线符号var lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 3);//创建面符号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的」空间查询和属性查询相关推荐

  1. Arcgis for Js之featurelayer实现空间查询和属性查询

    空间查询和属性查询是常用的两种对数据的检索与查询方式,在本节,将讲述Arcgis for Js下如何实现featurelayer的这两种查询方式,先贴图给大家看看: 实现界面 属性查询 空间查询 看完 ...

  2. ArcGIS API For JS之空间查询和属性查询

    说实在真是无聊,虽然很想干一些东西但是悲哀的是没有平台,前几天看到一个关于GIS开发的文章,这一行真的很容易被人取代,知识更新太快了,GIS并不像其他前端开发,不太注重用户体验,因为大多都是政府部分的 ...

  3. ArcGIS API for JS:实现属性查询

    项目记录:关于ArcGIS API for JS查询方法的比较和应用 查询方法比较:FindTask.QueryTask.IdentifyTask 不同点 FindTask只能进行属性查询,Query ...

  4. openlayers+geoserver+wms实现空间查询,属性查询

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/gisdoer/article/details/81530228 openlayers+geoserv ...

  5. ArcGIS Server 空间查询与属性查询

    QQ交流群:607330463 GIS开发技术最强交流群   未经允许 禁止转载  可以参考 属性查询 1. 空间查询 1.坐标点查询 2.图斑查询(四至)

  6. Arcgis Engine 二次开发之属性查询

    一.类库接口描述 1.IQueryFilter接口 过滤数据通过属性值或者属性之间的关系,一般为其赋WhereClause和SubFields属性. 2.IFeatureClass接口 (1)Sear ...

  7. ArcGIS中定义查询和属性查询的SQL语句的坑

    转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/93757726 之前遇到过这种情 ...

  8. ArcGIS api for JavaScript 之 空间、属性查询

    有一段时间又没有发表博客记录学习经过了,有点懈怠啊,学习之路还要坚持才行呢. 话不多说,进入今天的正题:arcgis的空间和属性查询 arcgis js api 有三种常见的查询:QueryTask. ...

  9. ArcGIS Engine属性查询和空间查询联合查询要素

    ArcGIS Engine属性查询和空间查询联合查询要素 项目中遇到了需要通过属性查询和空间查询两种查询方式联合,查找要素,主要流程是先通过空间查询,选择到符合条件的要素,添加到选择集中,然后再通过属 ...

最新文章

  1. 盘点Java框架常用的3大底层技术!
  2. python怎么用excel-Python使用xlwt模块操作Excel的方法详解
  3. c99变长数组_你学过数组,那你知道柔性数组吗?
  4. Shutdown SpringBoot App
  5. 网络流量监控分析工具 Ntopng 安装
  6. mysql正则通配符全解_mysql正则表达式与通配符
  7. 一段可自动点击运行代码(只偷偷的点一次)
  8. document.write() 和writeln()方法注意事项
  9. LaTeX常用的符号
  10. Camera 初始化(Preview) 一(Framework-HAL3)
  11. VLfeat库---研习
  12. 串口服务器接无线网桥,AB7006-HMS串口服务器、Anybus-M主站、Anybus-S从站接口模块...
  13. matlab李雅普诺夫吸引子,matlab计算Rossler吸引子的李雅普诺夫指数
  14. 地球物理勘探技术类毕业论文文献有哪些?
  15. oracle中调用过程,oracle中如何调用存储过程
  16. 金蝶EAS BOS开发固定报表流程
  17. c语言投影是什么,计算机c语言中什么是关系的投影运算
  18. [Recovery] 小米 MIX2s TWRP recovery下载
  19. 新海诚没有参与制作的作品_新海诚作品天气之子作画更上一步 各种好玩的梗值得一观...
  20. 《游戏脚本的设计与开发》-(RPG部分)3.8 通过脚本来自由控制游戏(一)

热门文章

  1. 初学MVC框架怎么理清思路
  2. 雅思考生在2018年创下350万人次的新高
  3. python两层循环 循环完整体一个_Python编写循环的两个建议 | 鹅厂实战(文末有福利)...
  4. python默认路径安装第三方包错误问题:ERROR: Cannot determine archive format of XXX
  5. [程序设计语言]-[核心概念]-04:数据类型
  6. 【sequoiadb|巨杉数据库】创建数据表
  7. CS224N 2019 Assignment 2
  8. “年”的追忆 !有你真好!
  9. sdcms_php_web,SDCMS通杀漏洞
  10. 安装es报错: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]