Oracle Spatial是否支持ST_Boundary等价功能:从多边形取线串或线串取多点?
Oracle Spatial中实现ST_Boundary等价功能的方法
Oracle Spatial可以实现与PostGIS ST_Boundary、SQL Server STBoundary等价的功能,对应的函数是SDO_GEOM.SDO_BOUNDARY,支持从POLYGON提取边界线(LINESTRING/MULTILINESTRING),以及从LINESTRING提取端点集合(MULTIPOINT),具体用法如下:
1. 从POLYGON类型获取LINESTRING/MULTILINESTRING
对于简单多边形,SDO_GEOM.SDO_BOUNDARY会返回LINESTRING类型的边界;如果是带内环的复杂多边形,则返回MULTILINESTRING。
示例SQL:
-- 创建一个简单多边形并提取边界 SELECT SDO_GEOM.SDO_BOUNDARY( SDO_GEOMETRY( 2003, -- 二维多边形类型 NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1), SDO_ORDINATE_ARRAY(0,0, 0,10, 10,10, 10,0, 0,0) ), 0.005 -- 容差参数 ) AS polygon_boundary FROM DUAL;
2. 从LINESTRING类型获取MULTIPOINT
调用SDO_GEOM.SDO_BOUNDARY处理LINESTRING时,会返回包含该线串首尾两个端点的MULTIPOINT对象。
示例SQL:
-- 创建一个线串并提取端点边界 SELECT SDO_GEOM.SDO_BOUNDARY( SDO_GEOMETRY( 2002, -- 二维线串类型 NULL, NULL, SDO_ELEM_INFO_ARRAY(1,2,1), SDO_ORDINATE_ARRAY(0,0, 10,10, 20,5) ), 0.005 -- 容差参数 ) AS linestring_boundary FROM DUAL;
内容的提问来源于stack exchange,提问作者mxcolin
相关产品推荐
相关产品推荐

