上面说的第三步必须保证每个点不能重复分配,有些难度,还是用过程代码吧。

CREATE TABLE t_offset as

select 1           id,1.001  x,1.002   y, 10 mark from dual

union all

select 2011      id,1.001  x,1.012   y, 31 mark from dual

union all

select 34213     id,2.009  x,2.504   y, 51 mark from dual

union all

select 42        id,1.001  x,1.002   y, 92 mark from dual

union all

select 555       id,1.001  x,1.002   y, 71 mark from dual

union all

select 678       id,3.122  x,4.998   y, 43 mark from dual

union all

select 730       id,7.010  x,1.111   y, 11 mark from dual

;

CREATE INDEX t_offset_idx ON t_offset(x,y);

CREATE TYPE obj_dots AS OBJECT (id NUMBER,x number,y NUMBER);

/

CREATE TYPE t_obj_dots AS TABLE OF obj_dots;

/

DECLARE

lv_dots t_obj_dots:=t_obj_dots();

lv_level NUMBER;

BEGIN

FOR lv_dup IN

(   SELECT *

FROM (SELECT t_offset.*

,ROW_NUMBER() OVER(PARTITION BY x,y ORDER BY id) rn

FROM t_offset

)

WHERE rn>1

)

LOOP

lv_level :=1;

WHILE lv_level>0 LOOP

FOR lv_new IN

(   SELECT *

FROM (SELECT off_x

,off_y

,lv_dup.x + off_x*0.001 x

,lv_dup.y + off_y*0.001 y

FROM (SELECT LEVEL-lv_level-1 off_x FROM DUAL CONNECT BY LEVEL<=lv_level*2+1)

,(SELECT LEVEL-lv_level-1 off_y FROM DUAL CONNECT BY LEVEL<=lv_level*2+1)

WHERE off_x IN (lv_level,-lv_level) OR off_y IN (lv_level,-lv_level)

)

WHERE (x,y) NOT IN (SELECT x,y FROM t_offset)

AND (x,y) NOT IN (SELECT x,y FROM TABLE(lv_dots))

ORDER BY off_x*off_x+off_y*off_y

)

LOOP

lv_dots.EXTEND;

lv_dots(lv_dots.COUNT):=obj_dots(lv_dup.id,lv_new.x,lv_new.y);

lv_level := -999;

EXIT;

END LOOP;

lv_level := lv_level+1;

END LOOP;

END LOOP;

FOR i IN 1..lv_dots.COUNT LOOP

DBMS_OUTPUT.PUT_LINE('id:'||lv_dots(i).id||' x:'||lv_dots(i).x||' y:'||lv_dots(i).y);

END LOOP;

END;

/

oracle中偏移,怎么对相同的坐标点偏移?相关推荐

  1. oracle中的sql文本类型,Oracle数据库的空间数据类型

    Oracle数据库中空间数据类型随着GIS.CAD/CAM的广泛应用,对数据库系统提出了更高的要求,不仅要存储大量空间几何数据,且以事物的空间关系作为查询或处理的主要内容.Oracle数据库从9i开始 ...

  2. 关于火星坐标、偏移、加偏和纠偏、无偏的理解

    刚开始玩GPS,看到不少对GPS图纸偏移问题的认识存在误区,俺根据在轮坛看帖思考理解的有关内容,整理一下,希望对在这个问题上存在疑惑的朋友有所帮助. 1.偏移的起因:天朝测绘局以国家安全为理由,用法律 ...

  3. oracle 中触发器的作用是什么,oracle创建触发器及作用举例

    --创建触发器及作用举例 create or replace trigger tri before delete on emp --在删除emp表数据之前需要做的事根据自己的业务去写,before是在 ...

  4. Oracle中的索引

    文章目录 1.索引的说明 2.索引的目的 3.索引结构 3.1B树索引结构 3.2 位图索引结构 4.建立索引的方式 5.索引碎片问题 1.索引的说明 索引是与表相关的一个可选结构,在逻辑上和物理上都 ...

  5. Oracle 中的 ST_Geometry

    Oracle 中的 ST_Geometry ST_Geometry 如何存储空间数据 在 Oracle 中使用 ST_Geometry 存储创建要素类 Esri ST_Geometry 空间数据类型可 ...

  6. oracle中常用关键字,oracle常用函数及关键字笔记

    --函数及关键字-- 1.trim,ltrim,rtrim 去除字符,无指定默认去除空格 SELECT TRIM('a' FROM 'aafhfhaaaaaaaa'), LTRIM('aafhfhaa ...

  7. postgis中批量对矢量数据进行火星坐标加/纠偏

    postgis中批量对矢量数据进行火星坐标加/纠偏 前言 最近写了一个批量对postgis中图层进行坐标加偏,纠偏.当然是非严格意义上的精确,只是保证开发者自己的矢量数据能比较正确的叠加常用的在/离线 ...

  8. oracle中的checkpoint,Oracle checkpoint详解

    checkpoint扫盲 什么是checkpoint 在数据库系统中,写日志和写数据文件是数据库中IO消耗最大的两种操作,在这两种操作中写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库的性 ...

  9. 【GIS - 地理信息系统】WGS 84 坐标系和 GCJ-02 坐标加密偏移 ( 大地坐标系 和 加密坐标系 | WGS 84 坐标体系简介 | GCJ-02 坐标加密偏移 )

    文章目录 一.WGS 84 坐标系和 GCJ-02 坐标加密偏移 1.大地坐标系 和 加密坐标系 大地坐标系 加密坐标系 2.WGS 84 坐标体系简介 坐标加密 WGS 84 由来 经度和纬度 WG ...

最新文章

  1. 阿里、腾讯基本薪资曝光,资深算法工程师24万美元,高级研究员26万美元
  2. 18、计算机图形学——BRDF与渲染方程
  3. 网络推广外包浅析为什么网络推广外包中网站优化比百度竞价更友好?
  4. E2. Square-free division (hard version) dp + 质因子分解
  5. 关于CNN图像分类的一份综合设计指南
  6. 同时对view延时执行两个动画时候的现象
  7. python程序设计sgnx_Python中符号函数的数值积分
  8. javascript操作cookie实例
  9. Matlab:数据包络分析(DEA)入门教程
  10. element 源码学习五 —— Notice 系列组件学习
  11. 乘云远航|共赢新征程,打造数字化供应链竞争力!
  12. 高德地图实现多天路线规划(途经点显示自定义内容)+轨迹回放(显示车牌)
  13. 电脑无法修改ip地址
  14. 建筑业企业施工劳务资质备案申请条件及劳务分包的种类
  15. android 添加系统日历事件,添加系统日历事件
  16. JS和jQuery通过this获取html标签中的属性值
  17. 2021年锦州高考成绩查询,2021年锦州高考状元多少分是谁,锦州高考状元名单资料...
  18. it之家鸿蒙手机系统,IT之家安卓版新功能!支持识别鸿蒙系统与鸿蒙应用,无需更新...
  19. 利用python实现将文本、摩尔斯电码与用滴答表示的摩尔斯电码三者相互转换
  20. 《预言者》:从路人甲到教父的预言之路

热门文章

  1. 系统开发基础:UML中图的相关知识笔记(上)
  2. 数据库技术:数据存储和查询知识笔记
  3. 程序员幽默:当代程序员的主要矛盾是什么?
  4. 产品经理必备神器推荐
  5. Asp.Net页面传值的方法简单总结【原创】
  6. 嵌入式C语言基础(一)
  7. 一次回母校教前端的经历
  8. VueConf China 2021 《Vue3生态进展-尤雨溪》 Reaction
  9. pycharm工具下代码下面显示波浪线的去处方法
  10. AQS源码阅读笔记(一)