高效的使用空间SQL操作空间数据库系列之四

接下来介绍一下,具体如何使用SQL操作Geodatabase。

1. 先介绍一下如何使用SQL编辑FeatureClass。

可以使用非版本和版本两种方式来编辑FeatureClass,使用SQL是支持这两种编辑方式,编辑的FeatureClass对象只能是简单对象,如点,线,面,不能包含空间数据的行为,如网络,拓扑等。

对于非版本编辑,编辑后的数据会直接应用到B表中,比较容易一些。编辑非版本的FeatureClass主要需要一个方面,就是OBJECTID如何来获得,如何让OBJECTID和Desktop等ESRIClient软件统一起来,ESRI已经给我们提供了相应的存储过程来解决这个问题,以下是Oracle和SQLSERVER的例子:

//Oracle
 
    SQL> SELECT registration_id FROM sde.table_registry
         WHERE owner = ‘TOMB’ AND table_name = ‘PARCELS’;
 
    SQL> SELECT sde.version_user_ddl.next_row_id(‘TOMB’, 114) 
      FROM dual;

//SQL*Server
 
    SELECT registration_id FROM sde.sde_table_registry
    WHERE owner = ‘TOMB’ AND table_name = ‘PARCELS’
 
    DECLARE @id AS INTEGER
    DECLARE @num_ids AS INTEGER
    exec sde.i114_get_ids 2, 1, @id OUTPUT, @num_ids OUTPUT

2. 使用SQL编辑版本的FeatureClass。

对于版本编辑必须按照ESRI定义的流程进行操作,否则会造成一些不可逆转的错误,以下以DB2数据库为例子介绍整个流程。

A. 使用sdetable命令为要进行编辑的FeatureClass创建一个多版本视图,具体语法如下:

sdetable –o create_mv_view –T <view_name> -t <table_name>
  [-i <service>] [-s <server_name>] [-D <database>] 
  –u <DB_User_name> [-p <DB_User_password>] [-N] [-q]
 
sdetable –o create_mv_view –T parcels_mv –t parcels –i 5151
  –s sde –u sde -N

B. 创建一个新的版本:

db2 CALL sde.create_version ('SDE.DEFAULT', ‘versionname', 1, 1, 'multiversioned view edit test1 version', ?, ?) 

C. 设定当前要编辑的版本:

db2 CALL sde.set_current_version(‘versionname’,?,?)

D. 开始编辑

db2 CALL sde.edit_version(’versionname’,1,?,?)

E. 开始使用SQL进行先关的编辑

db2 Insert into test values (…………)
Commit;
db2 Delete from test where ……
Savepoint a;
db2 Update test set shape=…….
Rollback to a;
…………………………………
 
F. 结束编辑
db2 CALL sde.edit_version(’versionname’,2,?,?)

G. 利用ArcGIS前软处理软件(Desktop或者ArcEngine接口)调和并且将数据合并到相应的父版本中。

H. 删除版本

db2 CALL sde.delete_version(’versionname’,?,?)

I. 使用sdeversion命令进行压缩:

sdeversion –o compress
 
J. 删除当初创建的多版本视图
sdetable -o delete_mv_view -t <table_name>
[-i <service>] [-s <server_name>] [-D <database>]
 [-u <DB_User_name>] [-p <DB_User_password>] [-N] [-q]
 
sdetable –o delete_mv_view  –t parcels –i 5151
  –s sde –u sde –N

至此整个流程全部介绍完毕。另外使用SQL操作多版本的FeatureClass需要注意以下几方面的问题:

A. 创建多版本视图之前必须先将相应的FeatureClass注册版本。

B. 添加记录的时候不需要自己计算相应的OBJECTID,后台的存储过程会自动计算的。

C. 不要用SQL来更新已有记录的ID。

D. 尽量不要在Default版本下作编辑。

最后介绍一下使用SQL操作栅格数据:

A. 先安装ST_RASTER存储类型,至于如何安装已经在前面介绍过了。

B. 安装完后可以使用下面的命令来确定是否安装成功了。

如果安装成功:

高效的使用空间SQL操作空间数据库系列之四_第1张图片

如果没有安装成功:

高效的使用空间SQL操作空间数据库系列之四_第2张图片

C. 创建一张包含ST_RASTER列的表

image

D. 初始化Raster列

image

E. 将影像插入到该表中

image

F. 如果想在Desktop软件能够显示和处理,需要使用ArcCatalog或者ArcEngine将其注册成geodatabase.

至此高效的使用空间SQL操作空间数据库系列全部介绍完毕。

你可能感兴趣的:(sql,数据库,db2,table,Integer,sqlserver)