对于在Oracle或是SQL Server等数据库中,用视图(View)来提高的表间的查询检索效率的方法会经常用到。在GIS系统中,我们也会经常需要进行表间的查询,如:从空间位置查找该空间地物相关的属性信息表。我们常规的做法一般是先通过空间查询,再用关键字段进行关联查询。但在有些情况,如:进行插值时,需要空间表的空间位置,但需要另外一张表的某个属性作为插值字段,就无法实现,必须通过视图的方式来实现。
在ArcSDE中,可通过sdetable命令来创建视图,该视图可为一般的没有空间信息的,也可为有空间位置的。
sdetable命令的格式为:
sdetable -o create_view -T -t -c [-a ] [-w <"where_clause">] [-i ] [-s ] [-D ]
[-u ] [-p ] [-N] [-q]
[-u ] [-p ] [-N] [-q]
其中:
-T 为视图名,创建完成后,在arccatalog中浏览与普通的table或是featureclass相同;
-t 为参与的表名,各表间用“,”隔开,另外,各表名前需加上所属用户,如:sde.tablename;
-c 为目标视图列,一般格为:用户.表名.字段名,如:sde.sampletable.samplefield。可用.*代表所指定表的所有字段。若参与的table有featureclass(空间表),则若指了shape字段,则结果视图将带有空间信息,与featureclass相似,若没有指定shape字段,则为普通表,与table类似。
[-a ]为可选项,一般不用设置;
[-w <"where_clause">]为视图的逻辑条件,为一般的SQL语句where 后面的语句,注意:该语句需用双引号;
[-i ] [-s ] [-D ]为指定ArcSDE所在服务器,数据库名以及服务名,若是在本机上操作,则这些参数可省;
[-u ]为用户名,该用户名为SDE用户名;
[-p ]为SDE密码,即登陆SDE数据库的密码。
以下为创建一个带有空间信息的视图例子:
sdetable -o create_view -T dcpntView -t sde.dc_pnt_pc, sde.gz_pc_soilfield -c sde.dc_pnt_pc.Shape, sde.gz_pc_soilfield.* -w "sde.dc_pnt_pc.FieldID = sde.gz_pc_soilfield.FieldID" -u sde -p sde
其中:视图名为dcpntView;参加的表有:sde.dc_pnt_pc和sde.gz_pc_soilfield;目标列为:dc_pnt_pc中的空间位置字段(shape)和gz_pc_soilfield中的所有字段;关联条件为:sde.dc_pnt_pc.FieldID =sde.gz_pc_soilfield.FieldID;用户为:sde,密码:sde。
具体创建时,需要dos的命令行窗口键入以上命令即可,若无法创建成功,则在DOS窗口中会有相应提示信息。但在创建时,即使创建成功,也会出现以下的错误提示,可不用理会,在数据库内部已创建成功:
视图的用法与普通的Table和Featureclass用法相同,不用做任何特殊处理,在此不在详述。
来自:http://blog.sina.com.cn/s/blog_4c5f70df01009yki.html