使用arccatalog向数据库添加空间数据图层则不需要对该图层进行注册
下列两种情况需要注册才能看到空间视图
1 : 直接使用 SQL 语句创建要素类
2 :使用 fme 创建要素类
SQL 语句创建要素类及注册方法如下:
使用 SQL 语句创建包含 ST_Geometry 列的表,注意:要使 SDE 能够认识你创建的要素类,新建的表中有且只能有一个 ST_Geometry 列,并且最好包含唯一标识的列。 执行下面的 sql 语句 CREATE TABLE sensitive_areas (area_id integer, name varchar(128),
area_size float, type varchar(10), zone sde.st_geometry);注意 st_geometry 前面应添加 sde schema 名,否则会报错。 使用 sdelayer 命令,将创建好的表注册到 SDE 中 注册的时候一定要保证下面几点才能成功: 1 必须是表的所有者才能注册。 2 表中只能有一个 ST_Geometry 列。 3 没有其他用户自定义类型的列。
4
必须是简单的集合类型
(points, lines, or polygons)
。
5Geometry
必须是有效的,否则读取的时候会产生不可预期的错误。
sdelayer
命令参数如下:
sdelayer -o register -l -e [Spatial_Index]
[{-R | [Spatial_Ref_Opts]}] [-P {BASIC | HIGH}]
{[-C NONE] | [-C [,{SDE|USER}[,]]]}
[-E {empty | xmin,ymin,xmax,ymax}] [-t ]
[-S ] [-q]
[-k ] [-i ] [-s
[-u ] [-p ] [-D ]
在命令行中执行下列命令
sdelayer -o register -l sensitive_areas,zone -e a -C area_id,SDE -u data -p sa -t ST_GEOMETRY
-o
参数为
register -l
参数为
表名
/ST_Geometry
列
-e
几何类型
-C
用户唯一
id/SDE
其中
SDE
表示由
sde
维护唯一
id
,使用
USER
选项,则有用户维护唯一
ID -u
注册地用户名
-p
用户密码
-t
数据存储类型
在
catalog
中查看,可以看到
sensitive_areas
已经被注册到
sde
中,并且图标显示为
polygon
类型。
Fme 创建要素类及注册方法
通过 fme 向数据库中添加图层,添加成功后
使用 sdelayer 命令,将创建好的表注册到 SDE 中 注册的时候一定要保证下面几点才能成功: 1 必须是表的所有者才能注册。 2 表中只能有一个 ST_Geometry 列。 3 没有其他用户自定义类型的列。 4 必须是简单的集合类型 (points, lines, or polygons) 。 5Geometry必须是有效的,否则读取的时候会产生不可预期的错误。
sdelayer 命令参数如下:
sdelayer -o register -l -e [Spatial_Index]
[{-R | [Spatial_Ref_Opts]}] [-P {BASIC | HIGH}]
{[-C NONE] | [-C [,{SDE|USER}[,]]]}
[-E {empty | xmin,ymin,xmax,ymax}] [-t ]
[-S ] [-q]
[-k ] [-i ] [-s
[-u ] [-p ] [-D ]
在命令行中执行下列命令
sdelayer -o register -l GGG,shap -e p -P BASIC -C NO,user -u cawy_cas -p 1@pguayas -i sde:oracle10g -t ST_GEOMETRY -R 2 -E -180,-90.144,180,90
-o 参数为 register -l 参数为 表名 /ST_Geometry 列 -e几何类型 -C用户唯一 id/SDE其中 SDE 表示由 sde 维护唯一 id ,使用 USER 选项,则有用户维护唯一 ID -u注册地用户名 -p用户密码 -t数据存储类型 在 catalog 中查看,可以看到 GGG 已经被注册到 sde 中,图标显示为 polygon 类型,但是看不到视图。原因不详
后来利用fme将数据导入到arcsde格式中。经测试完全可行
处理方法如下:
创建 arcsde 服务一般不需要创建,如需创建可按下列方法创建
创建方法分为两种:一种是在数据库服务器上安装,一种是分布式安装
1分布式安装
分布式安装通俗理解就是数据库与 ArcSDE 不在一台机器上,一般使用分布式的有两种情况:数据库端为 64Bit ,但是用户并没有 64Bit 的 ArcSDE ,所以再找一台机器安装 32BitArcSDE ,但是分布式安装一个必须的要求是, ArcSDE 端机器必须安装客户端,再或者是数据库端是非 Windows 操作系统,可能用户不习惯, ArcSDE 端在 Windows 操作系统上。
在安装 ArcSDE 之前,首先保证该机器安装数据库客户端,而且保证 sqlplus sys/oracle@orcl as sysdba (用户根据自己密码实例名而定,以下不再解释)可以连通。
1 :利用安装向导勾选 Custom ,勾掉创建 ArcSDE 服务项
2 :注册完毕后,修改 sdehome/etc/dbinit.sde set LOCAL=orcl( orcl 是实例名)
3 : sdehome/etc/Services.sde 添加 esri_sde 5151/tcp
4 : c:/windows/system32/drivers/etc/services添加 esri_sde 5151/tcp
5 :利用 ArcSDE 命令创建服务(必须使用命令创建)
sdeservice -o create -p sde -d "ORACLE10G,r5th" -n -i esri_sde -H "C:\Program Files\ArcGIS\ArcSDE\ora10gexe"
注: -d "ORACLE10G,SID" 中的 SID修改成的 ORACLE TNSNAME 。
-H 参数后的目录,根据实际安装目录而定
然后启动 sde 服务 ok
2 :一台机器多个服务
一台机器多个服务的应用多在使用 Oracle 数据库创建了多个实例(也可以理解为每个实例对应一个库),那么就需要创建多个 ArcSDE 服务针对每一个库的操作。其实可以理解为每一个库都需要创建 SDE 的表、 SDE 的用户。
所以多个服务的安装步骤为:
假设有两个库(实例名: orcl 和 orcl2 )
1 :参考基本向导安装,为库 orcl 创建相关的服务
2:复制一份 SDEHOME,在原文件夹直接粘贴,可以起名为 ora11gexe2
3:可以利用 Oracle命令连接 sqlplus sys/oracle@orcl2 as sysdba
创建 SDE表空间、用户、利用 sdesetup– o install创建 Schma
也可以利用向导创建,但前提是网络服务名要写清楚( orcl2 )
4 :修改 newsdehome/etc/dbinit.sde set local=orcl2
修改 newsdehome/etc/services.sde esri_sde2 5152/tcp
C:/windows/system32/drivers/etc/services 文件添加 esri_sde2 5152/tcp
注意:多个服务需要注意的是不能存在同样的端口和 ArcSDE 实例名
然后创建新 sde 服务
sdeservice -o create -p sde -d "ORACLE10G,nsamdon" -n -i esri_sdensa -H "C:\Program Files\ArcGIS\ArcSDE\ora10gexe"
最后启动服务
然后利用fme workbenc将其他格式数据导入sde格式中(转换参数如下)
导入成功后,通过arccatalog连接数据库,可以看到刚才导入的数据