Ros*_*oss 6 spatial sql-server-2008
我的多边形看起来像一个中间有空洞的星形: 图像
如何将此多面转换为单个多边形或多边形,同时还包括中间的孔,例如填充孔(使用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.861083592601616 39.772592386436379,-75.861083592601616 39.772592386436379) ),((-75.866832035574916 39.780809081927849,-75.850724788384952 39.781027647924496,-75.857585145413083 39.78927966926625,-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.780573380153484)))
谢谢.
Mic*_*ito 11
也许不是最快的方式,但有一种方法可以做到:
这是一个示例脚本:
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 @g
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2843 次 |
| 最近记录: |