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

    技术2025-05-02  29

    接下来介绍一下,具体如何使用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. 安装完后可以使用下面的命令来确定是否安装成功了。

    如果安装成功:

    如果没有安装成功:

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

    D. 初始化Raster列

    E. 将影像插入到该表中

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

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

    最新回复(0)