sde用sql实现erase

概述:

本文讲述基于Arc SDE forOracle实现erase空间分析计算。

实现流程:

1、叠加计算

判断叠加,非叠加部分即为一部分所要结果,叠加部分进入第二步;

2、合并计算

根据objectid进行union计算;

3、差异计算

用原始数据data1和合并计算后的结果进行差异计算,所得的结果即为另一部分所要结果。

相关sde函数介绍:

1、sde.st_intersection(st_geometryshape1,  st_geometry shape2)

         语法:

参数:(st_geometry shape1,  st_geometryshape2)

                   返回值:st_geometry shape

         解释:

Returns a geometry that represents the shared portion of shape1 andshape2.

示意:

2、sde.st_union(st_geometryshape1,  st_geometry shape2)

         语法:

参数:(st_geometry shape1,  st_geometryshape2)

                   返回值:st_geometry shape

         解释:

Returns a geometry that represents the point set union of theGeometries.

         示意:

3、sde.st_difference(st_geometryshape1,  st_geometry shape2)

         语法:

参数:(st_geometry shape1,  st_geometryshape2)

                   返回值:st_geometry shape

         解释:

                   Returns a geometry thatrepresents that part of geometry A that does not intersect with geometry B.

         示意:

说明:

看到图3,很多人就开始问了:erase的效果不就是图3的效果吗,为什么还要那么多步?是的,对于两两的geometry来说,difference结果即为我们想要的erase的结果,但是,对于两个图层来说,difference后的结果是整个data2的结果,并且结果中会有一些叠加与重复。为什么会出现这样的结果呢,我想sde的算法实现中,也是两两做的计算,因此,计算的结果就是整个data2的结果。举例:A为data1的一个要素,B、C分别为data2的两个要素,在sde中,difference计算的结果为图4,1和2分别为计算后的结果,并重叠在一起显示,但是实际中,我们想要的及全国是图5。

图4

图5

实现sql实例:

1、计算叠加

insert intohx2q_risk_result_temp(objid,shape)

  select *

    from (select a.objectid,sde.st_intersection(a.shape, b.shape) as shape

            from hx2q_project a, hx2q_landnormb

           where a.ptcode = 'm01'

             and b.ptcode = 'm01'

             and a.status = '开工'

             and b.confirm = '已取得'

             and a.flag = 0

             and b.flag = 0)

   where sde.st_area(shape) > 0

2、计算union

3、计算difference

insert intoHX2Q_RISK_RESULT

  (objid, ptcode, Shape, objectid)

select a.objectid,

       a.ptcode,

       sde.st_difference(a.shape, b.shape) asshape,

       SDE.version_user_ddl.NEXT_ROW_ID('HX2Q','36') as objectid

  from hx2q_project a, hx2q_risk_result_temp b

 where a.objectid = b.objid

4、获取非叠加

insert intoHX2Q_RISK_RESULT

  (objid, ptcode, Shape, objectid)

select objectid,

       ptcode,

       shape,

       SDE.version_user_ddl.NEXT_ROW_ID('HX2Q','36')

  from hx2q_project

 where objectid not in (select distinct objidfrom hx2q_risk_result_temp)

 and ptcode = 'm01' and flag = 0 and status = '开工'

说明:

1、difference计算中,where后的条件是必须的;

2、union计算是通过后台程序实现的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

手把手教你用 PyTorch 辨别自然语言(附代码)

最近在学pyTorch的实际应用例子。这次说个简单的例子:给定一句话,判断是什么语言。这个例子是比如给定一句话: Give it to me 判断是 ENGLI...

3585
来自专栏AI科技评论

开发|简单有趣的 NLP 教程:手把手教你用 PyTorch 辨别自然语言(附代码)

最近在学pyTorch的实际应用例子。这次说个简单的例子:给定一句话,判断是什么语言。这个例子是比如给定一句话: Give it to me 判断是 ENGLI...

3067
来自专栏企鹅号快讯

受限玻尔兹曼机

关注AI君,领略人工智能之美 受限玻尔兹曼机 Restricted Bolltzmann Machine 概述 各位读者,新年好! 在《技术词条》系列文章的上一...

2949
来自专栏cs

NLP问题之word2vec

其用于有如下的 从「中文分词」、「词云画像」、「词性分析」到「自动摘要」、「关系挖掘」、「情感分析」、「知识图谱」等

1742
来自专栏新智元

自然语言处理中的Attention Model:是什么及为什么

要是关注深度学习在自然语言处理方面的研究进展,我相信你一定听说过Attention Model(后文有时会简称AM模型)这个词。AM模型应该说是过去一年来NLP...

4175
来自专栏灯塔大数据

每周学点大数据 | No.11亚线性算法

No.11期 亚线性算法 Mr. 王:从今天开始,我们正式讲解大数据算法的内容。首先谈谈关于亚线性算法的问题。 小可:我记得前面提到过亚线性算法,就是复杂度低...

3795
来自专栏小小挖掘机

算法面试太难?反手就是一波面经

八月参加了一些提前批的面试,包括阿里、百度、头条、贝壳、一点资讯等。整理了一些面试题,分享给大家。

2433
来自专栏人工智能

Bi-LSTM+CRF在文本序列标注中的应用

机器之心专栏 作者:触宝AI实验室Principal Engineer董冰峰 传统 CRF 中的输入 X 向量一般是 word 的 one-hot 形式,前面提...

7218
来自专栏calmound

JOJ 2680 Problem F: Coin Game

题意:给你两组数,第一组按从大到小的顺序给出,第二组随机给,让你求挪动最小的次数使第二组的数字比第一组相对应位置的数字要小,挪动的顺序只能够相邻的挪动 分析:从...

3173
来自专栏CreateAMind

浅析互信息与特征选择

那么什么是互信息呢?变量x与变量y之间的互信息,可以用来衡量已知变量x时变量y的不确定性减少的程度,同样的,也可以衡量已知变量y时变量x的不确定性减少的程度。

3122

扫码关注云+社区