可以在多面体中获得单个面吗?

时间:2018-12-19 17:27:56

标签: sql-server azure-sql-database geography

我有一个SQL Server表,该表的列包含Geography实例。其中一些实例是MultiPolygons

是否可以从Multipolygon中提取单个多边形?

例如-如果我具有以下Multipolygon:

MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))

是否可以获取各个多边形:

POLYGON((40 40, 20 45, 45 30, 40 40))
POLYGON((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20))

使用内置函数而不进行某种形式的字符串解析/正则表达式?

2 个答案:

答案 0 :(得分:1)

Declare @MultiGeom Geometry
Set @MultiGeom = 'MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))'

DECLARE @n int = 1;

WHILE (@n <= @MultiGeom.STNumGeometries())
   BEGIN
      Print Convert(VarChar(4000), (@MultiGeom.STGeometryN(@n)))
   SET @n = @n + 1;
   END

答案 1 :(得分:0)

基于设定的已接受答案的一个即席。假设您有一个数字表(查看here的含义以及可能有用的其他示例),则可以执行以下操作:

$cookiequery = unserialize($_COOKIE['djsearchquery']);