FAQ: 如何创建包括多个ST_GEOMETRY列的表并且同时视图来操作它
文章编号 : 34919
软件: ArcSDE 9.2, 9.3, 9.3.1
操作系统: N/A
软件: ArcSDE 9.2, 9.3, 9.3.1
操作系统: N/A
发起人
相关问题
- 有谁知道哪里可以免费获取各省市地图数据呢,包括详细的shape文件数据
- 微信页面 arcgis api 地图无法操作
- 把shp多个文件整到一起的一个专门的软件,不是ARCGIS是其他的,
- Arcgis10.4 创建企业级地理数据库 “用户不具有创建数据库对象的必要权限 ”
- ArcGIS Pro 创建矢量切片包时报错ERROR 001117,但已设置了元数据
- Arcgis10.2创建泰森多边形失败
- 在arcgispro里面创建并共享场景图层包,在online里面发布查看报一下错误,求原因
- 布局视图能固定比例尺吗?
- 有多个mxd文件 每个mxd都包含数据驱动页面 如何批量导出图片?
- 新建.shp类型的FeatureClass,一系列操作后,想要删除源文件。如何解除文件的占用?
- portal for arcgis 1031使用管理员角色创建的3d场景怎么没有发布功能?
问题状态
- 最新活动: 2015-11-23 07:45
- 浏览: 1438
- 关注: 1 人
1 个回复
EsriSupport
赞同来自:
回答:
有一些工作流程需要在ArcGIS中操作包含多个ST_GEOMETRY列的表或图层。下面所描述的是如何在Oracle总创建包括多个st_geometry列的,多个空间索引的表和oracle视图,并且如何使用ArcSDE将视图注册成ArcGIS能够访问的数据。 下面的过程演示了一下几个过程,在Oracle中创建一个包括多个st_geometry列的表,针对于每一个st_geometry创建一个空间索引和视图,对每个视图使用ArcSDE将其注册成ArcGIS软件能够访问的数据。 1. 使用SQL*Plus创建一张表。这个例子演示创建一个包括三列st_geometry属性的表。 SQL> CREATE TABLE spatial_objects
2 (objectid NUMBER(38) NOT NULL,
3 shape_pt sde.st_geometry,
4 shape_ln sde.st_geometry,
5 shape_py sde.st_geometry);
Table Created.
2. 下一步使用SQL*Plus向表中添加一行记录,并且更令另外两个geometry属性字段,由于ArcGIS并不直接支持在同一featureclass中包括多个空间字段,因此下一步需要创建Oracle的视图,ObjectID字段必要使用用户维护模式而且在插入语句中必须显示的制定ObjectID值。
SQL> INSERT INTO spatial_objects VALUES
2 (1, sde.st_point(1395735.6, 405588.4,1), NULL, NULL);
1 row created.
接下来shape_In和shape_py字段也使用st_linestring和st_polygon构造符进行更新。
SQL> UPDATE spatial_objects SET
2 shape_ln = sde.st_linestring('linestring (1395735.6 405588.4, 1395767.3 405421.1)',1),
3 shape_py = sde.st_polygon('polygon ((1395652.5 405380.6, 1395652.5 405880.6, 1396152.5 405580.6,
4 1396152.5 405380.6, 1395652.5 405380.6))',1)
5 WHERE objectid = 1;
1 row updated.
SQL> COMMIT;
3. 下一步针对每一个st_geometry字段创建一个索引,这个例子中值为1的空间参考ID已经存在,并使用与三个st_geometry字段上。
SQL> CREATE INDEX shape_pt_idx
2 ON spatial_objects (shape_pt)
3 INDEXTYPE IS sde.st_spatial_index
4 parameters ('st_grids=100 st_srid=1');
Index created.
SQL> CREATE INDEX shape_ln_idx
2 ON spatial_objects (shape_ln)
3 INDEXTYPE IS sde.st_spatial_index
4 parameters ('st_grids=100 st_srid=1');
Index created.
SQL> CREATE INDEX shape_py_idx
2 ON spatial_objects (shape_py)
3 INDEXTYPE IS sde.st_spatial_index
4 parameters ('st_grids=100 st_srid=1');
Index created.
4. 下一步引用ObjectID字段和每个类型为st_geometry字段创建视图,每个视图的名称是唯一的。
SQL> CREATE OR REPLACE VIEW spatial_view_pt AS
2 SELECT objectid, shape_pt
3 FROM spatial_objects;
View created.
SQL> CREATE OR REPLACE VIEW spatial_view_ln AS
2 SELECT objectid, shape_ln
3 FROM spatial_objects;
View created.
SQL> CREATE OR REPLACE VIEW spatial_view_py AS
2 SELECT objectid, shape_py
3 FROM spatial_objects;
View created.
5. 最后一步使用ArcSDE的命令注册每一个视图。注册过程是向ArcSDE的元信息表中添加相关记录,只有这样才能让ArcMap认为视图为一个Featureclass。
D:\> sdelayer -o register -l spatial_view_pt,shape_pt -e p -u tomb -i 5151 -t st_geometry -C objectid,user
ArcSDE 9.2 for Oracle10g Build 508 Thu Apr 17 12:23:18 2008
Layer Administration Utility
-----------------------------------------------------
Successfully Created Layer.
D:\> sdelayer -o register -l spatial_view_ln,shape_ln -e l -u tomb -i 5151 -t st_geometry -C objectid,user
ArcSDE 9.2 for Oracle10g Build 508 Thu Apr 17 12:23:18 2008
Layer Administration Utility
-----------------------------------------------------
Successfully Created Layer.
D:\> sdelayer -o register -l spatial_view_py,shape_py -e a -u tomb -i 5151 -t st_geometry -C objectid,user
ArcSDE 9.2 for Oracle10g Build 508 Thu Apr 17 12:23:18 2008
Layer Administration Utility
-----------------------------------------------------
Successfully Created Layer.
注册过程需要提供视图的名称和shape属性(-l参数),entity类型(-e 参数),表示表包括st_geometry字段(-t 参数 ),以及哪一列被用作sde_row_id属性,该属性石SDE维护还是用户维护。
数据被ArcSDE注册后,他将作为能被ArcCatalog和ArcMap使用的feature class.这个视图不能被注册成geodatabase或者被ArcGIS编辑。
创建时间:2008-06-02
最近更新: 2009-10-03
【原文链接】
http://support.esrichina.com.cn/2008/0602/855.html
要回复问题请先登录或注册