ST_NumInteriorRing
islands表
查询结果
SELECT name, st_numinteriorring (land) FROM islands
定义:大多边形内包涵几个多边形
ST_NumPoints
numpoints_test表
查询结果
SELECT geotype, st_numpoints (g1) AS Number_of_points FROM numpoints_test;
定义:用于返回几何中的点(折点)数。
ST_OrderingEquals
定义: ST_OrderingEquals 用于比较两个 ST_Geometries 对象,如果两个对象的几何相等且坐标顺序相同,则返回 1 (Oracle) 或 t (PostgreSQL);否则,其将返回 0 (Oracle) 或 f (PostgreSQL)。
linestring_test表
查询结果
SELECT lid, st_equals (ln1,ln2) AS Equals,st_orderingequals (1n1,ln2)As OrderingEquals
FROM linestring_test;
ST_Overlaps
定义:ST_Overlaps 将以两个几何对象作为输入参数,如果两个对象的交集生成的几何对象维度相同但不等于任一源对象,则返回 1(Oracle 和 SQLite)或 t (PostgreSQL)。否则,返回 0(Oracle 和 SQLite)或 f (PostgreSQL)。
sensitive_areas表
hazardous_sites表
查询结果
SELECT DISTINCT (hs.id) AS "Hazardous Site ID"
FROM hazardous_sites hs, sensitive_areas sa
WHERE st_overlaps (st_buffer (hs.site, .001), sa.shape) = 't';
ST_PointFromWKB
定义: ST_PointFromWKB 以熟知二进制 (WKB) 表示和空间参考 ID 作为输入参数返回 ST_Point 类型的对象。
sample_points表
查询结果:
SELECT id, st_astext (st_pointfromwkb(wkb, 4326))
AS points
FROM sample_points;
ST_PointN
定义: ST_PointN 采用 ST_LineString 和整型索引,并返回 ST_LineString 的路径中作为第 n 个折点的点
pointn_test表
查询结果:
SELECT gid, st_astext (st_pointn (ln1, 2))
AS The_2ndvertex
FROM pointn_test;
ST_PointOnSurface
定义: ST_PointOnSurface 以 ST_Polygon 或 ST_MultiPolygon 类型的对象为输入参数,并返回保证位于其表面上的 ST_Point
hbuildings 表
查询结果
SELECT st_astext (st_pointonsurface (footprint))
AS "Historic Site"
FROM hbuildings;
ST_PolyFromWKB
定义: ST_PolyFromWKB 以熟知二进制 (WKB) 表示和空间参考 ID 作为输入参数,返回 ST_Polygon 类型的对象。
sample_polys表
查询结果
SELECT id, st_astext (st_polyfromwkb (wkb, 4326))
AS POLYS
FROM sample_polys;
ST_Relate
定义: ST_Relate 比较两个几何,如果几何满足 DE-9IM 模式矩阵字符串指定的条件,则返回 1(Oracle 和 SQLite)或 t (PostgreSQL);否则,返回 0(Oracle 和 SQLite)或 f (PostgreSQL)。
relate_test表
查询结果
SELECT st_relate (g1, g2, 'T*F**FFF*') AS "g1=g2",
st_relate (g1, g3, 'T*F**FFF*') AS "g1=g3",
st_relate (g2, g3, 'T*F**FFF*') AS "g2=g3"
FROM relate_test;
ST_SRID
定义: ST_SRID 以几何对象作为输入参数,并返回其空间参考 ID。
srid_test表
查询结果
SELECT st_srid (g1)
AS SRID_G1
FROM srid_test;
ST_StartPoint
定义: ST_StartPoint 用于返回线串的第一个点。
startpoint_test表
查询结果
SELECT gid, st_astext (st_startpoint (ln1))
AS Startpoint
FROM startpoint_test;
ST_SymmetricDiff
定义: ST_SymmetricDiff 以两个几何对象作为输入参数,并返回由源对象的非公共部分组成的几何对象
watershed表
plumes表
查询结果:
SELECT ws.id WS_ID,
st_area(st_symmetricdifference (st_buffer (p.site, .1), ws.shape)) AREA_NO_INT
FROM PLUMES p, WATERSHED ws
WHERE p.id = 20;
ST_Touches
定义: 如果两个几何的公共点都不与两个几何的内部相交,则 ST_Touches 返回 1(Oracle 和 SQLite)或 t (PostgreSQL);否则,返回 0(Oracle 和 SQLite)或 f (PostgreSQL)。其中至少一个几何必须是 ST_LineString、ST_Polygon、ST_MultiLineString 或 ST_MultiPolygon。
sewerlines表
查询结果
SELECT s1.sewer_id, s2.sewer_id
FROM sewerlines s1, sewerlines s2
WHERE st_touches (s1.sewer, s2.sewer) = 't';
ST_Transform
ST_Transform 将二维 ST_Geometry 数据作为输入,并返回已转换为空间参考的值,该空间参考由您所提供的空间参考 ID (SRID) 指定。
警告:
- 如果使用 st_register_spatial_column 函数将空间列注册到 PostgreSQL 数据库,注册时 SRID 将写入
sde_geometry_columns 表。如果在 Oracle 数据库的空间列中创建了空间索引,创建空间索引时 SRID 将写入
st_geometry_columns 表。使用 ST_Transform 更改 ST_Geometry 数据的 SRID 不会在
sde_geometry_columns 或 st_geometry_columns 表中更新 SRID。
- 如果地理坐标系不同,则 ST_Transform 将执行地理变换。地理变换是指在两个地理坐标系间进行转换。
地理变换定义为在特定转换方向上进行,例如,从 NAD 1927 到 NAD 1983,但不管源和目标坐标系是什么,
ST_Transform 函数都能正确执行变换。
- 地理转换方法可以分为两类:基于方程和基于文件。基于方程的方法是独立的,不需要任何外部信息。
基于文件的方法使用磁盘上的文件计算偏移值。与基于方程的方法相比,基于文件的方法通常更加精确。
在澳大利亚、加拿大、德国、新西兰、西班牙和美国,一般使用基于文件的方法。
文件(加拿大除外)可从 ArcGIS Desktop 安装获得或直接从各种国家制图机构获得。
- 要支持基于文件的变换,必须将文件置于数据库服务器中与 ArcGIS Desktop或 ArcGIS Pro
安装目录中的 pedata 文件夹相同的相对文件夹结构中。
使用方式
CREATE TABLE transform_test (
ln1 sde.st_geometry,
ln2 sde.st_geometry);
INSERT INTO transform_test (ln1) VALUES (
sde.st_geometry ('linestring (10.01 40.03, 92.32 29.39)', 4326)
);
UPDATE transform_test
SET ln2 = sde.st_transform (ln1, 3857);
ST_Union
定义: ST_Union 返回两个源对象组合而成的几何对象。
sensitive_areas表
hazardous_sites表
查询结果
SELECT sa.id AS SA_ID, hs.id AS HS_ID,
st_area (st_union (st_buffer (hs.site, .01), sa.shape)) AS UNION_AREA
FROM hazardous_sites hs, sensitive_areas sa;
ST_Within
定义: 如果第一个 ST_Geometry 对象完全位于第二个 ST_Geometry 对象的范围内,则 ST_Within 返回 1(Oracle 和 SQLite)或 t (PostgreSQL);否则,返回 0(Oracle 和 SQLite)或 f (PostgreSQL)
squares表
zones表
查询结果
SELECT s.id
AS sq_id
FROM squares s, zones z
WHERE st_intersects (s.shape, z.shape) = 't'
AND st_within (s.shape, z.shape) = 'f';