将 ST_Geometry 与 SQL 搭配使用,以Oracle为例

1.创建包含 ST_Geometry 列的表:

CREATE TABLE sensitive_areas (
 area_id integer,
 name varchar(128), 
 area_size float,
 type varchar(10),
 zone sde.st_geometry
);

2.注册 ST_Geometry 列

在 Oracle 中,于 ST_Geometry 列中创建空间索引将会注册列以使用特定空间参考。有关使用 SQL 在 Oracle 中创建空间索引的示例,请参阅为包含 ST_Geometry 列的表创建空间索引。

3.使用 SQL 创建空间参考(一般直接也用esri体系的空间索引,见步骤5)

INSERT INTO SDE.ST_SPATIAL_REFERENCES (SR_NAME, SRID, 
X_OFFSET, Y_OFFSET, XYUNITS, Z_OFFSET, Z_SCALE, M_OFFSET, 
M_SCALE, MIN_X, MAX_X, MIN_Y, MAX_Y, MIN_Z, MAX_Z, MIN_M, 
MAX_M, CS_ID, CS_NAME, CS_TYPE, ORGANIZATION, 
ORG_COORDSYS_ID, DEFINITION, DESCRIPTION)
VALUES (
 'GCS_North_American_1983', 
 310000,
 -400,
 -400,
 1000000000, 
 -100000, 
 100000, 
 -100000, 
 100000, 
 9.999E35,
 -9.999E35, 
 9.999E35, 
 -9.999E35, 
 9.999E35, 
 -9.999E35, 
 9.999E35, 
 -9.999E35, 
 4269, 
 'GCS_North_American_1983',
 'PROJECTED', 
 NULL,
 NULL,
 'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
 'ArcSDE SpRef'
);

4.向包含 ST_Geometry 列的表中插入要素

INSERT INTO SENSITIVE_AREAS (area_id, name, area_size, type, zone) VALUES (
 1,
 'Summerhill Elementary School',
 67920.64,
 'school',
 sde.st_geometry('polygon ((52 28,58 28,58 23,52 23,52 28))', 4326)
);

5.使用 SQL 为包含 ST_Geometry 列的表创建空间索引

CREATE INDEX sa_idx
 ON sensitive_areas(zone)
 INDEXTYPE IS sde.st_spatial_index
 PARAMETERS('st_grids=1,3,0 st_srid=4326');

6.更新 ST_Geometry 空间列中的值

UPDATE hazardous_sites 
 SET location = sde.st_geometry('point (18 57)', 4326) 
 WHERE site_id = 102;

7.从 ST_Geometry 空间列中删除值

DELETE FROM sensitive_areas WHERE names
(SELECT sa.names 
 FROM sensitive_areas sa, hazardous_sites hs
 WHERE sde.st_overlaps (sa.zone, sde.st_buffer (hs.location,.01)) = 1);

8.将表或视图注册到地理数据库

按照以下步骤使用注册到地理数据库地理处理工具将表或视图注册到地理数据库:

启动 ArcGIS Desktop 客户端并连接到包含要注册的表或视图的企业级地理数据库。
请以表或视图所有者的身份连接,因为只有所有者方可将其注册到地理数据库。

打开注册到地理数据库工具。
可以搜索该工具,在“数据管理”工具箱的“地理数据库管理”工具集中将其打开,也可在 ArcMap 的目录树中右键单击数据库连接下的表或视图,然后单击注册到地理数据库。

指定 ObjectID 字段。
注册表时,请选择一个现有整型列以用作 ObjectID 字段或清空 ObjectID 字段,该工具将随即向表添加 ObjectID 字段。
注册视图时,请选择一个包含唯一非空值的现有整型字段以用作 ObjectID 字段。
如果表或视图包含空间字段,请提供以下信息:
从 Shape 字段下拉列表中选择空间字段名。
从几何类型下拉列表中,选择存储在 shape 字段中的几何类型。
从坐标系下拉列表中选择 shape 字段的坐标系。
指定表中数据的空间范围。
单击确定 (ArcMap) 或运行 (ArcGIS Pro) 以运行工具并将表或视图注册到地理数据库。

总结:以上步骤根据使用数据库的不同,会有差异,本例在Oracle下编写,其中步骤3、6、7可根据需求使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值