sql-server - 可以在多重多边形中获得单独的多边形吗?

标签 sql-server azure-sql-database geography

我有一个 sql server 表,其中有一列包含 Geography实例。其中一些实例是MultiPolygons

有什么方法可以从多重多边形中提取单个多边形吗?

例如 - 如果我有以下多边形:

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))

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

最佳答案

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

关于sql-server - 可以在多重多边形中获得单独的多边形吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53856410/

相关文章:

c# - 将 SQL Server 地理转换为 PNG 图像

sql - 使用 Excel(或 SQL)合并或删除列中的重复值

java - 区分 'Could not allocate space for object'异常

c# - 使用表达式树添加新的 lambda 表达式

SQL Azure 联合和索引 - 性能说明

sql - PostGIS:注册一个没有 AddGeometryColumn 的 "geometry"列

sql-server - nHibernate 主细节删除

azure - 如何删除源数据集 (JSON) 中的重复项并将数据加载到 azure 数据工厂中的 azure SQL DB

sql - 如何编写T-SQL STRING_AGG 函数

r - 计算 2 lon lats 之间的距离,但避免通过 R 中的 coaSTLine