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

周边环境: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. leetcode——Search a 2D Matrix 二维有序数组查找(AC)

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  2. uva 10127 - Ones(数论)

    题目链接:uva 10127 - Ones 题目大意:给出n,问说者少要多少为1才干够整除n. 解题思路:等于是高精度取模,直到余数为0为止. #include <cstdio> #inc ...

  3. Endnote从头开始五:修改output style(转载)

    Endnote从头开始五:修改output style Endnote中虽然有大量的期刊格式,但是并不能囊括所有我们需要的style,所以学会自己制作或编辑已有的期刊格式是很重要的,本节内容是Endn ...

  4. Eclipse用法和技巧二:自动生成Main方法1

    刚开始编写java小程序,基本都要用到main方法.后期开发大一点的程序,也可以用main方法进行单元测试.总是编写main方法,感觉太无聊了,幸好Eclipse可以帮我们自动生成main方法.见图: ...

  5. java常用内存设置

    Java虚拟机具有一个堆,是运行时的数据区域,所有类实例和数组内存均从此处分配.堆是在java虚拟机启动时创建的. 堆是留给开发人员用的内存区域.非堆就是JVM留给自己用的(方法区,JVM内部处理或优 ...

  6. 基于visual Studio2013解决面试题之0802数字最多元素

     题目

  7. FORM验证简单demo

    详解稍后加入. 项目结构如图: web.xml <?xml version="1.0" encoding="UTF-8" ?> <web-ap ...

  8. 【LeetCode从零单排】No 3 Longest Substring Without Repeating Characters

    题目 Given a string, find the length of the longest substring without repeating characters. For exampl ...

  9. Deep Learning深入研究整理学习笔记五

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  10. TEXT文本编辑框2

    Result: When you double clicks on the TextEdit control nothing happens, since the flow-logic of the ...