惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
小众软件
小众软件
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】
爱范儿
爱范儿
博客园 - 聂微东
美团技术团队
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
云风的 BLOG
云风的 BLOG
罗磊的独立博客
V
Visual Studio Blog
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
V
V2EX
The GitHub Blog
The GitHub Blog
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 卢伟亮

ArcGIS Server如何使用查询图层(QueryLayer)发布自定义坐标系数据(支持查询和编辑) ArcGIS Pro如何引用自定义Python模块 ArcGIS Pro 3创建Python环境失败的解决方法 ArcGIS Pro 补丁 如何使用阿里云OSS存储发布ArcGIS缓存地图服务 反注册PostgreSQL企业级地理数据库中的要素类 ERROR: Unable to start the RMI connector for NodeAgent的ArcGIS Server启动错误 检查SDE版本健康情况的常用SQL语句 免重启下刷新新添加的磁盘信息 启用只使用PostGIS的ArcSDE Geodatabase ArcSDE归档记录迁移 大体量点位置数据动态聚合Binning可视化效果 如何解决Portal无法设置托管GIS服务器的问题 Schema is out of date,Retry as owner or sdeadmin 问题解决方法 ArcGIS Server前端Varnish缓存解决方案 如何使用ArcGIS Pro发布自定义打印服务 ArcGIS Enterprise 10.7.1新特性:批量发布服务 影像优化 OptimizeRaster工具包介绍 Pro自定义数据源原理
ArcSDE 版本差异提取
卢伟亮 · 2021-08-11 · via 博客园 - 卢伟亮

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)