参考文档:https:~/~/desktop.arcgis.com/en/arcmap/latest/manage-data/using-sql-with-gdbs/what-is-the-st-geometry-storage-type.htm
ST_Geometry子类型
Oracle可以创建ST_Geometry列,但是不能插入ST_Geometry数据。
ST_Point:点
ST_LineString:线(不交叉:简单线;首位连接:闭合线;既闭合又简单,是一个环)
ST_Polygon:面
ST_MultiPoint:多点
ST_MultiLineString:多线
ST_MultiPolygon:多面
ST_Geometry常用函数
ST_GeometryN:返回多点、多线、多面要素数量
ST_GeometryType:返回几何体子类型
ST_NumGeometries:返回集合中几何体数量
ST_AsText:转换为文本
常用SQL语句
注意:Oracle表名和字段名一定要用大写,SQL语句中的表名和字段名会自动转换为大写。
1、查询数据库支持的SRID。
select * from st_spatial_references;
2、创建空间索引。
CREATE INDEX test_geo_idx
ON test(geometry)
INDEXTYPE IS sde.st_spatial_index
PARAMETERS('st_grids=1,3,0 st_srid=0');
说明:st_grids第一级索引最小,第二级索引至少是第一级索引的三倍大,第三级索引至少是第二级索引的三倍大。0表示禁用。小于等于4个块,在当前层级建索引;大于4个块,在下一层级建索引。
4、删除空间索引。
DROP INDEX test_geo_idx;
5、使用空间索引的函数。
ST_Contains (PostgreSQL)
ST_Crosses
ST_Disjoint (PostgreSQL)
ST_Equals
ST_Intersects
ST_Overlaps
ST_Relate (Oracle)
ST_Touches
ST_Within
常见问题
1、Extproc 代理: DLL 路径无效。
(1)在服务器上,将ArcGIS\Desktop10.8\DatabaseSupport\Oracle\Windows64\st_shapelib.dll(10.0在这个目录:ArcGIS\Desktop10.0\Bin\ st_shapelib.dll)拷贝到D:\oracle\product\10.2.0\db_1\bin中。
(2)在终端中,切换到SDE用户,执行以下语句。
create or replace library ST_SHAPELIB as 'D:\oracle\product\10.2.0\db_1\bin\st_shapelib.dll';
alter package sde.st_geometry_shapelib_pkg compile reuse settings;
(3)验证配置是否正确。
查询用户库:select * from user_libraries;
检查配置是否成功:select sde.st_astext(sde.st_point(103.806709, 30.660408,4326)) from dual;