今天開始想分析一下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 列名 列型別 是否為空,列名 列型...