arcgis9.3.1

现在大家很喜欢使用ArcSDE的SQL操作,这种方式在特殊的环境要求下显得比较方便,那么使用SQL操作最多的是读和写,而写最多的就是新建一个对象,那么翻译成SQL语言就是使用insert方式比较多,那么问题出来了,大家都知道ArcGIS的每一个要素类都是有ObjectID的,而且这个字段是不能重复的,那么当我要插入一个新的对象,这个ObjectID值怎么获得呢?

如果对ArcSDE或者是数据库比较熟悉的话,可能会将要素类(数据库层次就是表),表对象的序列找出来,其实ObjectID走的也是一个序列,然后获得nextValue即可,这种方式是不严谨的。

下一个可用对象 ID 不一定是最后所插入对象 ID 之后的下一个顺序编号。某些客户端应用程序的对象 ID 会进行批量分配,因此下一个可用对象 ID 的编号可能比最后使用的对象 ID 大许多。同样,批中任何未使用的对象 ID 会返回可用值池中,这意味着下一个可用对象 ID 值可能实际上小于最后插入的对象 ID 值。

那么我们该使用什么方式呢?

使用 sde.version_user_ddl 包中的 next_row_id 函数为对象 ID 生成新的唯一值。

next_row_id 函数使用两个参数:所有者和注册 ID。所有者是拥有该表的用户的名称。注册 ID 来自 TABLE_REGISTRY ArcSDE 系统表。利用表的所有者名称和注册 ID,可创建 SQL 语句来填充对象 ID 列。

操作步骤:

1:连接到Sqlplus

2:找到操作对象要素类对应的注册ID

  1. SELECT registration_id FROM sde.table_registry WHERE table_name = 'STREAMS' and owner = 'ENG2';
  2. REGISTRATION_ID   131

3:进行操作

  1. INSERT INTO eng2.streams (OBJECTID,NAME,SHAPE) VALUES(sde.version_user_ddl.next_row_id('ENG2', 131),
  2. 'TRANQUIL', sde.ST_GEOMETRY('linestring (750 150, 750 750)', 4) );

PS:如果用户需要GUID,也可以使用version_user_ddl.retrieve_guid函数进行创建

INSERT INTO mytable_vw (globalid,shape)   VALUES  (sde.version_user_ddl.retrieve_guid,(sde.st_polygon  ('polygon ((10000 520000, 100008889 55000, 1045545983 234280934,  10000 520000))',4)));

10.1

通过ArcMap的编辑或导入功能向空间表插入数据时,新插入记录的ObjectId默认是自增的。但是通过SDE SQL向空间表中插入数据时,使用最大Objectid+1作为新记录的Objectid就可能会导致,在arcmap中编辑数据时Objectid重复。显然空间表中Objectid是通过一个序列生成的,不能简单通过最大Objectid+1的方式生成。

  1. 解决:在sde10.1中,使用sde库提供的函数sde.next_rowid(i_owner character varying, i_table_name character varying)生成当前记录的Objectid。经试验函数sde.next_rowid生成Objectid的策略和序列有所不同,但是使用函数sde.next_rowid能够避免Objectid重复的问题。

    参考文章:http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/006z000000w8000000/

使用ArcSDE SQL操作怎么获得新对象的objectid、GUID的更多相关文章

  1. SQL Server 2014 BI新特性(一)五个关键点带你了解Excel下的Data Explorer

    Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企业中的自助式的商业智能变得更加的灵活,从而也降低了商业智能的门槛. 此文是在微软商业智能官方博客里 ...

  2. hibernate将本地SQL查询结果封装成对象

    hibernate将本地SQL查询结果封装成对象 不知道大家有没有碰过这种情况,迫于很多情况只能用native SQL来查询(如:复杂统计等),然而使用native查询后,结果会被放到object里, ...

  3. ArcSDE10.1配置Oracle 监听器来使用SQL操作ST_Geometry(个人改动版)

    发了两天的时间来解决配置Oracle 监听器来使用SQL操作ST_Geometry的配置,网上搜索一大片,结果真正找到的只有方法可用,下面把这个方法我个人在总结下. ArcSDE10.1配置Oracl ...

  4. 怎么配置 Oracle 侦听器来使用SQL操作ST_Geometry

    关于这个内容,其实从ArcSDE9.2推出ST_Geometry就让用户感到很有吸引力,而且特别是在ArcSDE9.3之后,用户使用SQL操作ST_geometry越来越多,但是在配置Oracle监听 ...

  5. ArcSDE10.2.2使用SQL操作ST_Geometry时报ORA-28579或ORA-20006错误

    ArcSDE10.2.2使用SQL操作ST_Geometry时报ORA-28579或ORA-20006错误 1.测试环境说明 ArcSDE版本:10.2.2 Oracle版本:12.1.0.1和11. ...

  6. Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)

    Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...

  7. legend---十、thinkphp中如何进行原生sql操作

    legend---十.thinkphp中如何进行原生sql操作 一.总结 一句话总结:query方法和execute方法 Db类支持原生SQL查询操作,主要包括下面两个方法: query方法 quer ...

  8. mysql简单的sql操作语句

    一,常用.简单的SQL操作语句 1.数据库操作: 1)创建数据库: create database database_name: 创建并设置字符编码 create database database_ ...

  9. sql操作数据库(1)-->DDL、DML、DQL

    SQL 操作数据库 概念:结构化查询语言 Structured Quary Language 作用:  1.是一种数据库的查询的标准,对所有的数据库都支持  2.不同的数据库SQL语句可能有点不同 ( ...

随机推荐

  1. Js的小技巧

    感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...

  2. 暗示net core

    using (var scope = ServiceProvider.CreateScope()){ var aSubscriber = Activator.CreateInstance(aSubsc ...

  3. 二:Vim常用命令

    一般模式下的命令: -- 插入命令 i 光标前插入 I 当前行开始 o 下一行 O 上一行插入新行 a 光标后插入 A 当前行末尾 -- 定位命令 :set nu 显示行号 :set nonu 取消行 ...

  4. IDEA 2017的插件mybatis plugin(绿色免安装)

    https://blog.csdn.net/u014365133/article/details/78885189 插件下载 https://files.cnblogs.com/files/techl ...

  5. @media print样式 关于table断页

    <html> <head> <style> @media print { table { page-break-after:auto } tr { page-bre ...

  6. 使用maven搭建Spring MVC

    在maven项目中搭建SpringMvc 1.pom文件 <span style="white-space:pre"> </span><propert ...

  7. vue-cli项目打包多个与static文件同级的静态资源目录(copy-webpack-plugin插件的使用)

    场景 业务要求能够直接通过 "域名+/file"的方式访问静态资源的html,然而产品绝对static暴露在url中不好看又不能直接将html放在static中.所以想到了既然st ...

  8. ioc autofac简单示例

    1.winform用法: nuget安装autofac public interface ILog { bool Log(string msg); } public class TXTLogger : ...

  9. 纯css模仿天猫首页

    <style> *{margin:0;padding:0} li{list-style:none} a{text-decoration:none} #wrapper{font: 12px/ ...

  10. 删除SVN版本信息 .svn文件夹

    环境:MyEclipse.Windows 问题描述: 在MyEclipse中当我们需要将一个文件夹(包含若干文件或嵌套文件夹)拷贝到另一个文件夹时,此时文件内容虽然拷贝过去了,但其下面的 .svn文件 ...