将几何拆解为最低级的组件几何。
st_geometry_dump ( geometry [, options ] )
geometry 要拆解的几何值。
options 由分号分隔的参数和值的 VARCHAR(255) 字符串,可以使用该字符串配置过程的输出。
下表列出了可以指定的参数:
参数 | 缺省值 | 允许值 | 说明 |
---|---|---|---|
Format | Original | Original、Internal 或 Mixed | 以何种格式返回几何。指定 Original 以原始格式返回几何。指定 Internal 以规范化格式返回几何。指定 Mixed 则以任何可用的存储格式返回,每种格式一行。有关存储格式的详细信息,请参见STORAGE FORMAT 子句,CREATE SPATIAL REFERENCE SYSTEM 语句。 |
ExpandPoints | Yes | Yes、No | 缺省情况下,当拆解包含点(例如 ST_LineString 或 ST_MultiPoint)的几何时,st_geometry_dump 系统过程会将复合点输出到单独的行。如果不希望生成额外的行,可以将 ExpandPoints 设置为 No。 |
MaxDepth | -1 | -1,任何大于或等于零的数字 | 缺省情况下,st_geometry_dump 系统过程会继续拆解对象层次直到叶对象。可以设置 MaxDepth 参数限制拆解几何的层次级别数。当值为 0 时,只返回根几何。当值为 1 时,返回几何及其直接子几何,以此类推。 |
SetGeom | Yes | Yes、No | st_geometry_dump 系统过程返回与原始类型层次中的对象相关联的 ST_Geometry 列。如果不需要该列,可以将参数 SetGeom 设置为 No 以减少过程的运行时间和输出大小。 |
Validate | Basic | None、Basic、Full | 缺省情况下,st_geometry_dump 系统过程应用数据库服务器在装载几何时使用的校验规则,并且在行中的对象与这些规则匹配时将结果集的 Valid 列设置为 1。可以将 Validate 参数设置为 None 以禁用该检查,或者可以将其设置为 Full 以便应用由 ST_IsValid 方法执行的附加检查。完整检查需要更长的执行时间。 |
下表说明 st_geometry_dump 过程返回的结果:
列 | 数据类型 | 说明 |
---|---|---|
id | UNSIGNED BIGINT | 结果中该行的唯一 ID。 |
parent_id | UNSIGNED BIGINT | 该对象的直接父对象的 ID。 |
depth | INT | 从根对象到与该行相关联的对象的深度。 |
format | VARCHAR(128) | 判定几何是原始表示 (Original) 还是规范化表示 (Internal)。请参见STORAGE FORMAT 子句,CREATE SPATIAL REFERENCE SYSTEM 语句。 |
valid | BIT | 根据 Validate 选项指定的检查级别判定几何是否有效 (1)。 |
geom_type | VARCHAR(128) | ST_GeometryType 返回的几何类型。请参见类型 ST_Geometry 的 ST_GeometryType 方法。 |
geom | ST_Geometry | 几何说明。如果 SetGeom 参数设置为 No,则结果集中不返回几何说明。 |
xmin | DOUBLE | 几何的最小 x 值。 |
xmax | DOUBLE | 几何的最大 x 值。 |
ymin | DOUBLE | 几何的最小 y 值。 |
ymax | DOUBLE | 几何的最大 y 值。 |
zmin | DOUBLE | 几何的最小 z 值。 |
zmax | DOUBLE | 几何的最大 z 值。 |
mmin | DOUBLE | 几何的最小 m 值。 |
mmax | DOUBLE | 几何的最大 m 值。 |
details | LONG VARCHAR | 有关几何的任何其它详细信息,包括有关对象无效的原因的其它信息。 |
st_geometry_dump 系统过程拆解几何层次,层次中的每个对象(包括根对象)都包含一行内容。可以检验层次中的每个几何以确定其是否有效,如果无效则找出其原因。
可以使用类型特定的方法(例如 ST_GeometryN 或 ST_PointN)匹配 st_geometry_dump 系统过程的一些功能。
st_geometry_dump 系统过程可用于更正无效的几何。
无
无
以下示例将多边形 'Polygon ((0 0, 3 0, 3 3, 0 3, 0 0))'
拆解为组件几何:
SELECT * FROM st_geometry_dump( 'Polygon ((0 0, 3 0, 3 3, 0 3, 0 0))', 'SetGeom=No' ); |
id | parent_id | depth | format | valid | geom_type | geom | xmin | xmax | ymin | ymax | ... |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 0 | Internal | 1 | ST_Polygon | Polygon ((0 0, 3 0, 3 3, 0 3, 0 0)) |
0 | 3 | 0 | 3 | ... |
2 | 1 | 1 | Internal | 1 | ST_LineString | LineString (0 0, 3 0, 3 3, 0 3, 0 0) |
0 | 3 | 0 | 3 | ... |
3 | 2 | 2 | Internal | 1 | ST_Point | Point (0 0) |
0 | 0 | 0 | 0 | ... |
4 | 2 | 2 | Internal | 1 | ST_Point | Point (3 0) |
3 | 3 | 0 | 0 | ... |
5 | 2 | 2 | Internal | 1 | ST_Point | Point (3 3) |
3 | 3 | 3 | 3 | ... |
6 | 2 | 2 | Internal | 1 | ST_Point | Point (0 3) |
0 | 0 | 3 | 3 | ... |
7 | 2 | 2 | Internal | 1 | ST_Point | Point (0 0) |
0 | 0 | 0 | 0 | ... |
以下示例显示如何使用 st_geometry_dump 系统过程找出几何内的无效点。在此示例中,线串包含经度 1200 的点。因此,在结果中该点和线串都报告为无效 (valid=0)。
SET TEMPORARY OPTION st_geometry_on_invalid='Ignore'; CREATE OR REPLACE VARIABLE @geo ST_Geometry; SET @geo = new ST_LineString( 'LineString(1200 2, 80 10)', 4326 ); SELECT * FROM dbo.st_geometry_dump( @geo, 'SetGeom=No' ); |
id | parent_id | depth | format | valid | geom_type | geom | xmin | xmax | ymin | ymax | ... | details |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 0 | Original | 0 | ST_LineString | (NULL) | 80 | 1,200 | 2 | 10 | ... | 值 1200.000000 超出了经度坐标的范围(SRS 允许 -180.000000 到 180.000000)。 |
2 | 1 | 1 | Original | 0 | ST_LineString | (NULL) | 1,200 | 1,200 | 2 | 2 | ... | 值 1200.000000 超出了经度坐标的范围(SRS 允许 -180.000000 到 180.000000)。 |
3 | 1 | 1 | Original | 1 | ST_Point | (NULL) | 80 | 80 | 10 | 10 | ... |
发现无效数据后,st_geometry_dump 系统过程可以与其它空间方法一同使用,以纠正无效元素从而组合有效几何。以下示例显示如何将经度 1200 的无效点纠正为经度 120.0:
SELECT ST_LineString::ST_LineStringAggr( new ST_Point( IF xmax = 1200 then 120.0 ELSE xmax ENDIF, ymax, 4326 ) ORDER BY id ) FROM dbo.st_geometry_dump( @geo ) WHERE geom_type='ST_Point'; |
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |