解决query查询输入geometry参数查询不到而通过where条件可以查到的问题

解决query查询输入geometry参数查询不到而通过where条件可以查到的问题

原因:

是因为geometry的坐标系和所要查询的图层不一样导致的(问题引起是由于底图中叠加了不同的坐标系的引起的)

问题描述:

我在公司做好的功能并且测好了,到现场出了问题,发现通过where语句查询时正常的,拉宽查询不正常。并且通过网页打开图层查询请求页面,手动输入代码中得到的geometry查询是可以查到数据的。

问题解决过程:

  1. 通过fiddler跟踪请求的http路径(因为arcgisAPI请求arcgisServer是通过http路径进行请求的不管是post还是get方法都可以通过fiddler拿到路径参数,)

这个地方有个疑问:按理说如果通过post方法请求不应该可以拿到参数的,这个问题有同学感兴趣的可以去研究一下,(我记得在某片文章中看到过arcgis api的post方法不是我们传统意义上表单post请求传参)

  1. 拿到参数后在浏览器中输入参数回车发现会下载一个query文件用编辑器打开里面是一些查询信息,信息不是很好解读。

  1. 又回到fiddler中跟踪网页查询和代码调用的区别

代码调用:

网页调用:

有没有发现问题,问题在于代码调用中inSR这个参数中有一个参考系的值,大概猜出是这个参数引起了问题,但是并不知怎么解决

  1. 回到浏览器中对比fiddler中复制的正常网页查询的url和代码调用的url,发现有一个细微差别

网页调用:

代码调用:

这是记起是返回值显示格式(html, amf,json)

所以把代码中的路径中的“amf”改成”html”问题找到了

这是就是我们的查询页面,并且自动输入了查询参数,里面InputSpatialReference参数中输入了fiddler中的InSR值,这时就对应上了输入的参数

  1. 找到问题,就到代码中去找这个输入参数,发现query对象中没有这个参数的输入,后思考后得出应该是继承了输入geometry中的坐标系参数,后去掉geometry中的坐标系参数,发现可以查出来了,到这一步问题已经解决。

  1. 后面我又想了解一下为什么会出现这个问题,我又在网页查询页面InputSpatialReference这个参数中输入当前服务的坐标系参数发现是可以查到的,这是才想起了应该是参考系不一样导致的,果然在对比了两个坐标系发现一个是北京54的另一个是WGS_1984的坐标系。

后面又去找这个问题,发现他们的底图是北京54的坐标系,而我们查询的专题是1984的坐标系统,而我们的DrawTool对象要绑定一个map对象,而地图对象的坐标系统正好也是底图的坐标系可以通过他去看distmap.map.spatialReference(北京54)

可能是这个时候默认是map底图的坐标系(暂时没去探究,感兴趣的可以去研究一下)。

时间: 08-01

解决query查询输入geometry参数查询不到而通过where条件可以查到的问题的相关文章

mybatis参数查询

单个参数查询 在mapper.xml配置文件中配置 <select id= "selectByNu" parameterType ="java.lang.String" resultMap="BaseResultMap" > select <include refid= "Base_Column_List" /> from consume_number where consume = #{consume

8.mybatis动态SQL模糊查询 (多参数查询,使用parameterType)

多参数查询,使用parameterType.实例: 用户User[id, name, age] 1.mysql建表并插入数据 2.Java实体类 public class User { public User() { } public User(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } private int id; private String name;

MyBatis查询传一个参数时报错:There is no getter for property named &#39;sleevetype&#39; in &#39;class java.lang.Integer

用MyBatis进行查询,传入参数只有一个时(非Map)如int,报错 There is no getter for property named 'sleevetype' in 'class java.lang.Integer 原因在于测试条件写法有误, <if test="sleevetype==0"><!-- 专属 --> exclusive=1 </if> <if test="sleevetype!=0">&l

在Mybatis中使用注解@多个参数查询

@Select("SELECT * FROM wc_homework WHERE organization_id=#{classId} ORDER BY createtime DESC LIMIT #{start},#{count}") @Results({ @Result(column = "course_id", property = "course_id"), @Result(column = "homework_id"

如何用js获取浏览器URL中查询字符串的参数

首先要知道Location这个对象以及这个对象中的一些属性: href:设置或返回完整的url.如本博客首页返回http://www.cnblogs.com/wymninja/ host:设置或返回主机名和当前的URL的端口号.本博客首页返回www.cnblogs.com hostname:设置或返回当前URL的主机名.本博客首页返回www.cnblogs.com hash:设置或返回从井号(#)开始的URL(锚).本博客首页返回 空 pathname:设置或返回当前URL的路径部分.本博客首页

lucene查询索引之解析查询——(八)

0.语法介绍: 1.公共部分代码同七中一样 // IndexReader IndexSearcher public IndexSearcher getIndexSearcher() throws Exception { // 第一步:创建一个Directory对象,也就是索引库存放的位置. Directory directory = FSDirectory.open(new File("E:\\lucene&solr\\index"));// 磁盘 // 第二步:创建一个ind

查询计划Hash和查询Hash

查询计划hash和查询hash 在SQL Server 2008中引入的围绕执行计划和缓冲的新功能被称为查询计划hash和查询hash.这是使用针对查询或查询计划的算法来生成二进制hash值的二进制对象. 可以从sys.dm_exec_query_stats或sys.dm_exec_requests检索查询计划hash和查询hash.虽然这是确认查询及其计划的一种机制,但是hash值不是唯一的.不相似的查询可能得出相同的hash,所以不能将其作为备份主键. 分别创建两个查询如下: SELECT

【知了堂学习笔记】SQL查询基础语句(单表查询、多表查询)

SQL查询基础 1.单表查询 从数据库中查找数据 专业的称谓又称为投影 基本查询语句结构 select 列 from 表 * 所有列不是所有其他东西 查询所有数据 例:SELECT * FROM t_studen 需要执行比较细的操作  加上条件筛选:查询id为2号的学生信息 SELECT * FROM t_student WHERE id=2; 筛选的执行步骤 例:SELECT * FROM t_student WHERE id=2; SELECT *          (3) 再查询  筛选

php+mysql预查询prepare 与普通查询的性能对比

prepare可以解决大访问量的网站给数据库服务器所带来的负载和开销,本文章通过实例向大家介绍预查询prepare与普通查询的性能对比,需要的朋友可以参考一下. 实例代码如下: <?php class timer { public $StartTime = 0; public $StopTime = 0; public $TimeSpent = 0; function start(){ $this->StartTime = microtime(); } function stop(){ $th