geodatabase中如何获取feature class的ObjectID
来源:互联网 发布:mac销量 编辑:程序博客网 时间:2024/05/27 06:54
ArcGIS geodatabase数据库中,所有的空间数据表(feature class)都带有objectid字段,该字段是ArcGIS自动创建和维护的主键字段。在一个feature class中,该字段的只不允许为空或重复。当我们在应用程序中,通过SQL的方式往feature class表中插入记录或将一个feature class的数据迁移到另一个feature class表中时,如何自动生成objectid字段的值,保证唯一性,是我们经常遇到的问题。以Oracle geodatabase为例,Arcgis SDE用户下提供了一个函数专门用于生成objectid的值。该函数的用法如下:
.next_rowid (
, )其中,geodatabase administrator schema就是我们创建geodatabase后,在oralce中创建的arcgis管理员用户,一般为sde用户。
该函数有两个入参,分别为:
table owner为我们所要生产objectid值得feature class所在的数据库用户名。
table name为我们要生产objectid值得feature class名称。
函数返回Integer类型的objectid值,该值保证是和该表中现有记录的objectid值不存在重复。
比如,我们需要将一个feature class表中的记录插入到另一个feature class中,可以一通过如下SQL语句实现:
INSERI INTO c_cblseg_l_backup(objectid, g3e_fid,name,code,shape)
SELECT sde.next_rowid(‘shtfm’,’c_cblseg_l_backup’) objectid,
g3e_fid,name,code,shape
FROM c_cblseg_l_1
INSERI INTO c_cblseg_l_backup(objectid, g3e_fid,name,code,shape)
SELECT sde.next_rowid(‘shtfm’,’c_cblseg_l_backup’) objectid,
g3e_fid,name,code,shape
FROM c_cblseg_l_2
通过此方式,可以保证两句INSERT INTO语句执行后,所插入到c_cblseg_l_backup表中的objectid字段值不会重复。即使在c_cblseg_l_1和c_cblseg_l_2中的数据objectid值都是从1开始编号的,即存在重复的情况。
另外,需要注意的是,使用此函数的表,一定是在ArcGIS geodatabase中注册的feature class(通过ArcMap创建的feature class即为geodatabase中注册的表。),未注册的表使用此函数,会如下报错。
INSERT INTO webman.logins (id, l_name)
VALUES
(sde.gdb_util.next_rowid(‘WEBMAN’, ‘LOGINS’), ‘maplebutter’);
(sde.gdb_util.next_rowid(‘WEBMAN’, ‘LOGINS’), ‘maplebutter’);
*
ERROR at line 3:
ORA-20220: Class WEBMAN.LOGINS not registered to the Geodatabase.
- geodatabase中如何获取feature class的ObjectID
- MongoDB在插入后,如何获取对应的ObjectId
- ArcSDE的SQL操作ObjectID获取方式
- ArcEngine如何获取mxd中feature所在图层的渲染方式
- Arcengine, C#,有objectid返回Feature
- mongoDB 获取最后插入的文档的ObjectID/_id方法
- java mongoDB 获取并使用_id(ObjectId)的值
- 获取mxd中feature所在图层的渲染方式
- mongo的objectid如果重复插入如何解决
- C# 获取Geodatabase个人数据库中要素类
- C# 获取Geodatabase个人数据库中要素类
- C# 获取Geodatabase个人数据库中要素类
- MongoDB中ObjectId的误区,以及引起的一系列问题
- 如何设置Installshield中 feature的选中状态
- 如何在单个Oracle实例中创建多个Geodatabase
- 如何在单个Oracle实例中创建多个Geodatabase
- 【Mongodb】使用Python对Mongodb中ObjectId的操作
- MongoDB ObjectId的优化
- Android 6.0 变化
- SQLAlchemy+MySQL入门
- Android基础知识
- 磁臂调度算法
- 关于essay的使用问题
- geodatabase中如何获取feature class的ObjectID
- Attention model 的一些概念
- 51nod 1515:明辨是非 并查集合并
- Homework1
- 自动化测试软件UFT实验
- PostgreSQL (User defined Operator) UDO & Operator Optimization Information
- android sqlite的SqliteDataBase.insert()方法,以及如何在事务管理中使用
- Caffe matlab之基于Alex network的特征提取
- Word2Vec