先来说说我遇到的问题,当我们创建了一个空间数据的视图之后,我们可以在ArcGIS中的数据库连接的展开树下面可以看到该目录树,并且可以使用。但是我们使用常用的SQL命令,无法在数据库中的SDE用户下查询到该节点。这里看看我的SQL。(同时使用二个SQL的查询结果,进行综合)
select t1.physicalname as fullname,t1.physicalname as aliasname,t1.path as path,decode(t2.name,'Feature Dataset','dataset',decode(t2.name,'Raster Catalog','rastercatalog',decode(t2.name,'Raster Dataset','rasterdataset',decode(t2.name,'Table','table',decode(datasetsubtype1,11,'anno',decode(datasetsubtype2,1,'point',decode(datasetsubtype2,3,'polyline',decode(datasetsubtype2,4,'polygon',decode(datasetsubtype2,2,'multipoint',decode(datasetsubtype2,9,'multipatch','')))))))))) as type,t1.datasetsubtype2 as geometrytype, t1.datasetsubtype1 as featuretype from sde.gdb_items t1, sde.gdb_itemtypes t2 where t1.type=t2.uuid and t2.name !='Table' and instr(upper(t1.physicalname), upper('数据库连接用户名'))=1 order by fullname
select t.table_name 表名,m.geometry_type 类型 from sde.layers t,sde.geometry_columns m where t.owner='数据库连接用户名' and m.f_table_schema=t.owner and m.f_table_name=t.table_name order by 表名
使用这二句SQL命令我们可以查询到对应用户下的所有节点名称,但是这里值得注意的是,这里没有你创建的那个视图。我们看一下普通空间数据视图和空间数据在打开属性之后的差异。
创建的视图:
普通要素类的空间数据:
这里可以看到普通要素类的属性和视图是不一样的,虽然在ArcGIS中都可以作为空间数据进行显示,并且这个视图的名称无法使用上面SQL在SDE用户下进行查询,这里值得我们使用注册到地理数据库功能,对数据进行注册既可以使用上面的SQL语句查询到了。
演示一下注册之后的属性:
我这里是灰色的,因为我这里的截图使用的是ArcGIS10.2版本的,这里注意的是在ArcGIS10.5版本以前是不支持视图的,这里我们可以看一下官方文档进行对比。官方连接