用于 ST_Geometry 和 ST_Raster 类型的 SQL 函数快速浏览

结构化查询语言 (SQL) 是一种标准化语言,可用于选择及处理存储在数据库管理系统 (DBMS) 中的数据。ArcSDE 在 Oracle、PostgreSQL 和 Microsoft SQL Server 的地理数据库中安装特定的 SQL 函数及类型。可以使用 SQL 以及这些函数和类型来查询并编辑数据。

本部分包含了针对每种函数的相关主题,这些函数可通过 Oracle 和 PostgreSQL 中 ArcSDE 地理数据库内的 ST_Geometry 空间类型以及 Oracle、PostgreSQL 和 SQL Server 中的 ST_Raster 类型来实现。它们存储在 ArcSDE 管理员(通常为 sde 用户)的方案中,提供了有效的操作并返回有关几何与栅格的信息。

函数的主题按如下结构组织:

注注:

本部分中的示例不会在已创建的表中构建空间索引。如果想要创建空间索引,请参阅为包含 ST_Geometry 列的表创建空间索引获取相关说明。

有关针对 ST_Geometry 的“IBM 函数参考”的信息,请参阅 IBM Informix Spatial DataBlade 模块用户指南 的第 8 章“SQL 函数”,以及 DB2 Spatial Extender 和 Geodetic Extender 用户指南和参考 中的第 22 章“空间函数:类别和用途”与第 23 章“空间函数:语法和参数”。

空间参考 ID

创建几何并将其插入表中之前,必须具有可用的有效空间参考 ID (SRID)。对于 Oracle 的空间类型,SRID 必须位于 ST_SPATIAL_REFERENCES 表中,并且在 SDE.SPATIAL_REFERENCES 表中具有匹配的记录。对于 PostgreSQL 的空间类型,SRID 必须位于 public.sde_spatial_references 表中。

实现上述要求的最简单方法是使用 ArcGIS Desktop 加载或创建带有要使用的有效空间参考值的要素类。确保创建的要素类使用 ST_Geometry 存储。可以创建带有所需空间参考信息的空要素类作为模板。这样将在 Oracle 的 SDE.SPATIAL_REFERENCES 和 ST_SPATIAL_REFERENCES 表中创建记录,或在 PostgreSQL 的 public.sde_spatial_references 表中创建记录。查询 LAYERS (Oracle) 或 sde_layers (PostgreSQL) 表可找到分配给图层的 SRID。然后可在使用 SQL 创建空间表并插入数据时使用该 SRID。

为了使用本帮助系统中的示例,已向 ST_SPATIAL_REFERENCES 和 sde_spatial_references 表中添加了一个记录来表示未知空间参考。该记录的 SRID 为 0。可以将此 SRID 用于帮助中的示例。这不是正式 SRID,它用于执行示例 SQL 代码。强烈建议不要为生产数据使用该 SRID。

注注:

从 ArcGIS 9.3 开始,Oracle 的 ArcSDE 地理数据库中包含 0 SRID。

如果决定使用数据库中已存在的其他 SRID 值执行这些示例,则必须更改示例的坐标以反映 SRID 值的空间参考。

如果要使用 SQL 将空间参考添加到 ST_SPATIAL_REFERENCES 或 sde_spatial_references 表中,请参阅使用 SQL 创建空间参考

SQL 函数的列表

单击下面的链接转到这些函数,这些函数可以与 Oracle 和 PostgreSQL 中的 ST_Geometry 结合使用,也可与 Oracle、PostgreSQL 和 SQL Server 中的 ST_Raster 结合使用。

从 ArcSDE 9.3 起,当在 ArcSDE for Oracle 的全新安装中使用 ST_Geometry 函数时,必须用 sde. 对函数和运算符进行限定例如,ST_Buffer 经过限定就是 sde.ST_Buffer。向软件添加 sde. 即表示函数存储在 sde 用户的方案中。由于 Oracle 不再支持曾用于映射至函数的公用同义词,因此必须进行此操作。对于已升级的 ArcSDE for Oracle 10g 或 Oracle 9i,和已升级的 ArcSDE for PostgreSQL,限定并非是必须的,但包括限定符是一种良好的做法。

当在所有数据库中使用 ST_Raster 函数时,必须使用 ArcSDE 管理员的方案来限定函数。在大多数情况下,该限定符为 sde.但在 SQL Server 数据库中却可能为 dbo.

构造函数

ST_Curve(仅限 Oracle)

ST_GeomCollection

ST_GeomCollFromShape(仅限 PostgreSQL)

ST_GeomCollFromWKB(仅限 PostgreSQL)

ST_Geometry

ST_GeomFromShape(仅限 PostgreSQL)

ST_GeomFromText(仅限 Oracle)

ST_GeomFromWKB

ST_LineFromShape(仅限 PostgreSQL)

ST_LineFromText(仅限 Oracle)

ST_LineFromWKB

ST_LineString

ST_MLineFromShape(仅限 PostgreSQL)

ST_MLineFromText(仅限 Oracle)

ST_MLineFromWKB

ST_MPointFromShape(仅限 PostgreSQL)

ST_MpointFromText(仅限 Oracle)

ST_MpointFromWKB

ST_MpolyFromText(仅限 Oracle)

ST_MpolyFromWKB

ST_MultiCurve(仅限 Oracle)

ST_MultiLineString

ST_MultiPoint

ST_MultiPolygon

ST_MultiSurface(仅限 Oracle)

ST_Point

ST_PointFromShape(仅限 PostgreSQL)

ST_PointFromText(仅限 Oracle)

ST_PointFromWKB

ST_PolyFromShape(仅限 PostgreSQL)

ST_PolyFromText(仅限 Oracle)

ST_PolyFromWKB

ST_Polygon

ST_Surface(仅限 Oracle)

提示提示:

对于除 ST_Geometry 之外的空间类型(如 PostGIS 几何类型或 Oracle SDO_Geometry 类型),请分别查阅 PostGIS 或 Oracle Spatial 文档,以获取每种类型所使用函数的信息。PostGIS 文档可在 www.postgis.org 中找到。Oracle 文档可在 Oracle 网站找到。

函数名称因 DBMS 实现的不同而有所不同。在 Oracle 和 SQL Server 中,函数是 ST_Raster 或 ST_PixelData 对象的成员方法。在 PostgreSQL 中,它们是在 PL/SQL 包级别实现的 SQL 函数。请注意,当您将这些函数与 SQL Server 结合使用时必须使用所示的大小写形式。在与 Oracle 或 PostgreSQL 结合使用时,无论使用全小写、全大写还是大小写混合形式都可以。

等效函数如下表所示:


7/10/2012