ST_Geometry存储类型

创建日期:2024-06-21
更新日期:2025-01-20

参考文档: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常用函数

参考:https://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/using-sql-with-gdbs/a-quick-tour-of-sql-functions-used-with-st-geometry.htm

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;