ArcSDE 版本差異提取
ArcGIS通過版本化技術管理多人編輯的事務記錄,其桌面軟體ArcMap和Pro都提供了版本管理工具。其中對兩個版本之間的差異對比需求,可以通過ArcMap或Pro提供的VersionChange功能進行檢視。下圖是在Pro中使用該功能的截圖。
該功能十分便捷,但卻無法把差異批量匯出為表格或要素。下文將介紹如何直接從SDE資料庫匯出指定版本間的差異。
以PostgresSQL ArcSDE空間資料庫為示例,poi為一個已經註冊為版本化的點要素圖層,假設已經建立好了一個版本“Ver1”,現在對比預設版本和Ver1版本的差異。具體步驟如下:
1、 建立版本物化檢視。
示例程式碼:
select sde.sde_set_current_version('DEFAULT');
create materialized view poidefault as
SELECT * from poi_evw;
select sde.sde_set_current_version('Ver1');
create materialized view poiv1 as
SELECT * from poi_evw;
2、 查詢Ver1版本更新的記錄。
示例程式碼:
select v1.*
from poidefault d,poiv1 v1
where d.objectid = v1.objectid and not st_equals(d.shape,v1.shape)
3、 查詢Ver1版本新增的記錄。
示例程式碼:
select v1.*
from poiv1 v1
where v1.objectid not in (select d.objectid from poidefault d)
4、 查詢Ver1版本刪除的記錄。
示例程式碼:
select d.*
from poidefault d
where d.objectid not in (select v1.objectid from poiv1 v1)