傳送門 ☞ 輪子的專欄 ☞ 轉載請註明 ☞ http://blog.csdn.net/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)這個用來輸入的表可以是文本文件,被關聯成一個外部表使用