sde在DBMS中的儲存表結構

2022-10-11 17:24:10 字數 2017 閱讀 3729

今天開始想分析一下sde的表結構,希望能夠弄明白sde乙個要素類的每個feature是如何儲存的。

弄arcsde的人都知道,arcsde內乙個要素類在關聯式資料庫(以ms   sql   server為例)中有一系列的表,

每個表的作用不同。

sde的乙個featureclass包含以下幾種表:

b表(與要素類名稱同名,用來儲存屬性資料結構),表結構如下:

欄位名稱

型別 說明

geometryid

int

要素唯一id

shape

int

似乎與geometryid值相同,備用字段?

…..

…..

其他使用者定義字段 

注:如果該要素類沒有註冊為版本,b表有記錄,如果該要素類已經註冊,b表記錄相應的轉移到a表

f表(f+layerid(如f1,f2等),用來儲存圖形座標、外邊界矩形等圖形資訊)

欄位名稱

型別 說明

fid

int

要素唯一id

numofpts

int

座標個數(島、洞的座標如何計數)

entity

smallint

要素型別**(點、線、面)

eminx

float

邊界矩形

eminy

float

邊界矩形

emaxx

float

邊界矩形

emaxy

float

邊界矩形

eminz

float 

emaxz

float 

min_measure

float 

max_measure

float 

area

float

面積 len

float

長度 points

image

座標串(具體二進位制內如何儲存,如何提取) 

s表(s+layerid,用來儲存地物空間索引,sde採用正方形網格索引)

欄位名稱

型別 說明

sp_fid

int

要素唯一id

gx int

行號((網格左下點x座標-圖形區域最小x座標)/網格大小)

gy 列號((網格左下點y座標-圖形區域最小y座標)/網格大小)

eminx

int

從名字看上去是要素的邊界矩形座標。但是我新增乙個要素進去後,卻發現不是直接儲存的地物邊界矩形座標,邊界矩形的座標在f表已經儲存了,這裡不知道幹什麼用?

eminy

int

emaxx

int

emaxy

int 

a表(a+layerid_register,當要素類註冊版本以後,該錶儲存原b表的資料,並記錄資料狀態)

欄位名稱

型別 說明

geometryid

int

要素唯一id

shape

int

似乎與geometryid值相同,備用字段?

sde_state_id

int

要素狀態id(沒有仔細研究,似乎每個操作就會+1)

…..

…..

其他使用者定義字段

d表(d+layerid_register,僅當要素類註冊版本之後,該錶存在,並記錄當前被刪除的地物)

欄位名稱

型別 說明

sde_state_id

int

刪除要素的stateid

sde_deletes_row_id

int

刪除要素的id

deleted_at

int

刪除操作的stateid?

廣義表的儲存結構

1 廣義表是線性表的推廣 2 線性表的n個元素都是單元素 3 廣義表中的元素不僅可以是乙個單元素,也可以是另乙個廣義表 結點的定義如下圖 typedef struct gnode glist struct gnode uregion glist next 指向下乙個結點 可以稍作改進 typedef...

Hive元資料在MySQL中的儲存結構

元資料表有以下 id主鍵 hive版本 版本說明 1.1.0 set by metastore 如果該錶出現問題,根本進入不了hive cli。比如該錶不存在,當啟動hive cli時候,就會報錯 table hive.version doesn t exist dbs 該錶儲存hive中所有資料庫...

表變數在儲存過程或sql server中的運用

經常遇見過這種情況,在儲存過程中經常用with建立臨時表,這個臨時表這這個功能模組中多次運用,如果都用with建立相同功能的臨時表,好效能和儲存過程中有很多冗餘 為此,我用表變數來實現此種功能 不是錶值變數 定義表變數的語法 declare 表變數名字 table 列名 列型別 是否為空,列名 列型...