首先描述来形容什么问题:

周边环境:ArcGIS10.x、Oracle 11g R2,这个问题无关与环境

假设用户使用关联查询(比方一个空间数据与一个属性数据进行关联),在ArcGIS for Desktop中查询的结果(查看属性表)。与进行REST的Query(where条件输入1=1即查询全部数据)查询的结果不一致。普通情况下REST的Query查询比桌面查询的结果要多。

----------------------------------------------------------------------------------

版权全部。文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!

Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

測试数据说明:

空间数据place

属性数据 owner

我们能够看出空间数据的place.pid与属性数据的owner.pid是关联字段,那么我们能够看到place有三个要素与owner的5条记录能够关联上。

----------------------------------------------------------------------------------

版权全部,文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!

Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

那么假设用户使用ArcGIS for Desktop的Join之后,在ArcMap中就能够看到空间数据的三条记录

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluZ2hlMzAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

可是我在REST接口Query中WHERE输入“1=1”查出来的结果是5条记录

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluZ2hlMzAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

从上图分析能够看出,REST的Query查询结果为5条记录。可是细心的读者能够看出,当中各有两条记录是反复记录,这个联系到我们看到的Owner表记录的信息,事实上这就是一个Oracle的连接关系,假设以属性数据为基准,那么关联起来的数据应该就是5条记录。

----------------------------------------------------------------------------------

版权全部,文章同意转载。但必须以链接方式注明源地址,否则追究法律责任!

Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

我也使用了QueryLayer或者ArcSDE视图分别进行了測试,结果都是一样的,并且。通过Oracle数据库查看创建的视图也能够看出来。数据库中的确存储了5条记录。

那么问题又出来了,为什么ArcGIS for Desktop记录的是3条数据呢?通过跟踪ArcGIS操作的Oracle后台trace文件能够看出:

1:通过空间关系查询语句,以我创建的SDE视图MyVIEW为例

ArcMap首先做了一个空间查询。使用SDE.ST_EnvIntersects过滤。假设输入相关值,能够得到5条记录。

----------------------------------------------------------------------------------

版权全部,文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!

Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

2:通过空间索引进行过滤

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluZ2hlMzAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

那么ArcMap又做了一层过滤。通过空间索引,并且有一个很关键的SQLkeyword(“distinct”),所以通过这个,ArcMap结果已经从5条变成了3条。

----------------------------------------------------------------------------------

版权全部。文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!

Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

那么问题的解决办法基本上明确了。ArcMap内部做了一个过滤反复的操作,可是REST的Query页面中。因为基本没有对SELECT选项的操作(Distinct一般都输入在Selectkeyword后),所以无法获得正确的结果。

那么用户能够使用QueryLayer的方式在进行操作。

----------------------------------------------------------------------------------

版权全部。文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!

Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

通过QueryLayer,我们能够加入Distinctkeyword,过滤反复记录。那么我们就能够在REST的Query里面获得正确的结果了。

----------------------------------------------------------------------------------

版权全部,文章同意转载。但必须以链接方式注明源地址,否则追究法律责任!

Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

其它參考:

ArcGIS表关联方式介绍(一)-Join、Relate
http://blog.csdn.net/linghe301/article/details/6649689

ArcGIS表关联方式介绍(二)-ArcSDE视图、QueryLayer、RelationshipClass
http://blog.csdn.net/linghe301/article/details/6649717

ArcSDE性能分析——跟踪Oracle的Trace文件
http://blog.csdn.net/linghe301/article/details/8640864

----------------------------------------------------------------------------------

版权全部,文章同意转载,但必须以链接方式注明源地址。否则追究法律责任!

Blog:               http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

版权声明:本文博客原创文章,博客,未经同意,不得转载。

ArcSDE当关系查询ArcMap与REST查询结果不一致问题的解决的更多相关文章

  1. Django框架表关系外键-多对多外键(增删改查)-正反向的概率-多表查询(子查询与联表查询)

    目录 一:表关系外键 1.提前创建表关系 2.目前只剩 书籍表和 书籍作者表没创建信息. 3.增 4.删 5.修改 二:多对多外键增删改查 1.给书籍绑定作者 2.删 3.修改 4.清空 三:正反向的 ...

  2. Atitit.Hibernate于Criteria 使用汇总and 关系查询 and 按照子对象查询 o9o

    Atitit.Hibernate于Criteria 使用总结and 关联查询 and 依照子对象查询 o9o 1. Criteria,,Criterion ,, 1 <2. 基本的对象黑头配置磊 ...

  3. Elasticsearch使用filter进行匹配关系and,or,not,range查询

    RESTful接口URL的格式: http://localhost:9200/<index>/<type>/[<id>] 其中index.type是必须提供的. i ...

  4. .NET应用架构设计—面向查询服务的参数化查询设计(分解业务点,单独配置各自的数据查询契约)

    阅读目录: 1.背景介绍 2.对业务功能点进行逻辑划分(如:A.B.C分别三个业务点) 2.1.配置映射关系,对业务点配置查询契约(构造VS插件方便生成查询契约) 2.2.将配置好的映射策略文件放在调 ...

  5. Thinkphp查询 1.查询方式 2.表达式查询 3.快捷查询 4.区间查询 5.组合查询 6.统计查询 7.动态查询 8.SQL 查询

    1.使用字符串作为条件查询 $user = M('User'); var_dump($user->where('id=1 AND user="蜡笔小新"')->sele ...

  6. 数据库基础(子查询练习、链接查询(join on 、union)及其练习)

    子查询练习一:查询销售部里的年龄大于35岁的人的所有信息 练习二:将haha表中部门的所有数字代码转换为bumen表中的字符串显示 练习三:将haha表中部门的所有数字代码转换为bumen表中的字符串 ...

  7. Python数据库查询之组合条件查询-F&Q查询

    F查询(取字段的值) 关于查询我们知道有filter( ) ,values( ) , get( ) ,exclude( ) ,如果是聚合分组,还会用到aggregate和annotate,甚至还有万能 ...

  8. django models的点查询/跨表查询/双下划线查询

    django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...

  9. MySQL数据查询之多表查询

    多表查询 多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment PRIMARY KEY, dna ...

随机推荐

  1. CentOS的ssh sftp配置及权限设置(流程相当完整)(关闭了SElinux才能上传了)

    从技术角度来分析,几个要求: 1.从安全方面看,sftp会更安全一点 2.线上服务器提供在线服务,对用户需要控制,只能让用户在自己的home目录下活动 3.用户只能使用sftp,不能ssh到机器进行操 ...

  2. jquery mobile自己定义webapp开发实例(一)——前言篇

    用jquery mobile做了一段时间的webapp开发,准备用自己的一个小demo做一个模块化的分享 点击demo演示 手机演示二维码: 此demo已经是比較老的版本号,用户体验流畅度确实还存在非 ...

  3. WinFrom - DataGridView控件右键选中记录并弹出菜单

    dataGridView右键菜单并选中该行 程序代码: private void dataGridView1_CellMouseDown(object sender, DataGridViewCell ...

  4. 关于自动刷新CSS

    由于最近系统调整大量的css,希望用户在浏览的时候能即时看到css的更改,而不是继续看到的是客户机上的缓存css. 在网络上找了下,发现很多人推荐一个叫cssrefresh的小工具. http://w ...

  5. 大豆生物柴油驱动的大巴斯(Bus)

    请看下图: 这是大豆生物柴油(Soybean biodiesel)驱动的大巴斯(Bus)的外观,感觉非常有劲. 回想历史,1893年,德国学者Rudolf Diesel(1858-1913)发明了一种 ...

  6. C# - 重写虚方法

    项目目录: 创建教师类(Teacher),虚方法有Teach(); 创建学生类(Student),重写的方法是Teach(); 教师类: · 加上关键字 Virtual 就是声明可以重写此方法. us ...

  7. Entity - 使用EF框架进行增删改查 - 数据库先行

    数据库先行:先创建数据库,然后进行增删查该操作. 要操作的表结构(表名:Tb_Category): 创建一个控制台程序: 添加一个ADO.NET实体数据模型: 1.对控制台程序右键 2.选择ADO.N ...

  8. fzu 1911 C. Construct a Matrix

    C. Construct a Matrix Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 32768KB Special Judge ...

  9. 基于visual Studio2013解决面试题之0204最大子集数组

     题目

  10. DAG上的动态规划

    嵌套矩形问题(最长路及其字典序)有n个举行,选出尽量多的矩阵排成一排,使得除了最后一个之外,每一个矩形可以嵌套在下一个矩形内,并且打印 #include <iostream> #inclu ...