1. 程式人生 > 其它 >ArcSDE 版本差異提取

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)