我有一个多重多边形,它看起来像一个中间有一个空洞的星星:image
如何将此多重多边形转换为一个或多个多边形,其中还包括中间的孔,例如填充该孔(使用SQL Server 2008 CLR)?
空星WKT : MULTIPOLYGON ( -75.850724788384952 39.781027647924496,-75.847514688412119 39.777165541462658,-75.835440819564724 39.781232982437771,-75.850724788384952 39.781027647924496)),((-75.861083592601616 39.772592386436379,-75.836642464570019 39.764081172000729,-75.847514688412119 39.777165541462658,-75.861083592601639.772592386436379,-75.86108108359260161639.772592386436379),(-75.86832035574939.780808081927849,-75.850724788384952 39.781027647924496,-75.857585146436379,-75.8575851414924496-75.866832035574916 39.780809081927849)),( -75.8843643235475 39.764740937261692,-75.861083592601616 39.772592386436379,-75.8717486771904 39.776304058191712,-75.8843643235475 39.764740937261692),((-75.884021002483152 39.780573380153484,-75.8717486771904 39.776304058191712,-75.866832035574916 39.780809081927849,-75.884021002483152 39.7805780153484))
谢谢。
发布于 2012-02-01 13:49:02
也许不是最快的方法,但有一种方法可以做到:
使用包含输入几何体的几何体:使用
下面是一个示例脚本:
DECLARE @g geometry;
DECLARE @hull geometry;
DECLARE @regions geometry;
DECLARE @boundary geometry;
SET @g = geometry::STGeomFromText(...);
SET @hull = @g.STConvexHull();
SET @regions = @hull.STDifference(@g);
SET @boundary = @hull.STBoundary();
WITH Geoms AS
(
SELECT 1 i
UNION ALL
SELECT i + 1
FROM Geoms
WHERE i < @regions.STNumGeometries()
)
SELECT @g = @g.STUnion(@regions.STGeometryN(i))
FROM Geoms
WHERE @regions.STGeometryN(i).STTouches(@boundary) = 0
SELECT @ghttps://stackoverflow.com/questions/9090662
复制相似问题