• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

在Oracle 11g中构建点云数据类型

mysql 搞代码 4年前 (2022-01-09) 9次浏览 已收录 0个评论

传送门 ? 轮子的专栏 ? ? http://blog.gaodaima.com/leverage本文来源gao*daima.com搞@代#码&网6_1229 1发展历程 2处理流程 3存储模型 将逻辑结构从物理结构中分离出来 (1)逻辑结构: 这些表含有一个类型为SDO_PC的列 包含一般的属性和所占用空间的单位数量 并且包含一个指向点云块表的指针 (2

传送门 ? 轮子的专栏 ? ? http://blog.gaodaima.com/leverage_1229

1发展历程

2处理流程

3存储模型

将逻辑结构从物理结构中分离出来
(1)逻辑结构:
这些表含有一个类型为SDO_PC的列
包含一般的属性和所占用空间的单位数量
并且包含一个指向点云块表的指针
(2)物理结构:
“分块表”
包含点云块
可以是非常庞大的
在SDO_PC_BLK对象类型中定义结构

4创建点云表

点云表的数量没有限制
支持由任何类型的字段组合
场景可以被任何属性所检索
并且场景具有空间幅度
CREATE TABLE LIDAR_SCENES (
SCENE_ID NUMBER PRIMARY KEY,
COLLECTION_TS TIMESTAMP,
DESCRIPTION CLOB,
… (any number of attributes) …
POINT_CLOUD SDO_PC
);

5SDO_PC类型

PC_EXTENT是点云所占空间的单位数量
需要一个空间索引以支持空间检索

属性

说明

BASE_TABLE

包含一个SDO_PC类型的列的表名称

BASE_TABLE_COL

SDO_PC类型的列的名称

PC_ID

点云ID

BLK_ID

包含点云中各块信息的表名称

PTN_PARAMS

点云分区的参数

PC_EXTENT

SDO_GEOMETRY对象展示点云的空间幅度(最小边界对象封闭点云中所有对象)

PC_TOL

点云中点的容差值

PC_TOT_DIMENSIONS

点云中维度的总数。包括空间维度和其他非空间维度,最大值为9

PC_DOMAIN

(目前未使用)

PC_VAL_ATTR_TABLES

SDO_STRING_ARRAY对象为点云指定任何值属性表的名称

PC_OTHER_ATTRS

XMLTYPE对象指定点云的任何其他属性

6创建点云分块表

使用SDO_PC_BLK类型
在块ID上定义一个主键
使用SECUREFILE lobs(11g的新结构)
允许LOBs压缩(加密和删除重复)
CREATE TABLE PC_BLK_01 OF SDO_PC_BLK (
PRIMARY KEY (
OBJ_ID, BLK_ID
)
)
LOB(POINTS) STORE AS SECUREFILE
(COMPRESS HIGH NOCACHE NOLOGGING);

7SDO_PC_BLK类型

描述点的一块
包含块的唯一标识
场景ID(OBJ_ID与PC_ID一致)和分块ID(BLK_ID)

属性

说明

OBJ_ID

点云对象ID

BLK_ID

块ID

BLK_EXTENT

块的空间幅度

BLK_DOMAIN

(目前未使用)

PCBLK_MIN_RES

在一个查询中可见块的最小分辨率

PCBLK_MAX_RES

在一个查询中可见块的最大分辨率

NUM_POINTS

POINTS BLOB中点的总数

NUM_UNSORTED_POINTS

POINTS BLOB中无序点的数量

PT_SORT_DIM

有序点的维度

POINTS

BLOB包含的点

8BLOB结构

BLOB包含一个存放点的数组
各点编码
d 64位浮点数(d = 点的维度)
一个32位整型表示点数
一个32位整型表示分区数
将来:压缩格式
从块MBR的来源处存储坐标以作为偏移量
使用短整型

9初始化一个点云

(1)定义点云的结构和组织
分辨率、维度、幅度
块的容量
(2)为各点云指定块的位置
点块表的名称
表的唯一标识
INSERT INTO LIDAR_SCENES (
SCENE_ID, POINT_CLOUD)
VALUES (
1,
SDO_PC_PKG.INIT (
BASETABLE => ‘LIDAR_SCENES’,
BASECOL => ‘POINT_CLOUD’,
BLKTABLE => ‘PC_BLK_01’,
PTN_PARAMS => ‘BLK_CAPACITY=1000’,
PC_TOL => 0.005,
PC_TOT_DIMENSIONS => 3,
PC_EXTENT =>
SDO_GEOMETRY (2003, 4326, NULL,
SDO_ELEM_INFO_ARRAY (1, 1003, 3),
SDO_ORDINATE_ARRAY (-74, 40, -73, 41)
)
)
);

10加载一个点云

(1)从一个普通表中加载一个点云
DECLARE
PC SDO_PC;
BEGIN
SELECT POINT_CLOUD INTO PC
FROM LIDAR_SCENES WHERE SCENE_ID = 1;
SDO_PC_PKG.CREATE_PC (PC, ‘INPUT_POINTS’);
END;
(2)用来输入的表的结构

(3)这个用来输入的表可以是文本文件,被关联成一个外部表使用


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:在Oracle 11g中构建点云数据类型

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址