结合几个DbGeography多边形

我正在寻找组合几个多边形以减少点数的方法。 这将是前进的方向:

var pol1 = DbGeography.PolygonFromText("POLYGON ((-2.91790532309701 53.3657440952224, -2.91790532309701 53.3567508791632, -2.90283703655041 53.3567508791632, -2.9028338560513 53.3657440952224, -2.91790532309701 53.3657440952224))", 4326); var pol2 = DbGeography.PolygonFromText("POLYGON ((-2.90283703655041 53.3657440952224, -2.90283703655041 53.3567508791632, -2.88776875000381 53.3567508791632, -2.88776556950469 53.3657440952224, -2.90283703655041 53.3657440952224))", 4326); var pol3 = DbGeography.PolygonFromText("POLYGON ((-2.91641048851245 53.3747373112816, -2.91641048851245 53.3657440952224, -2.90133902146673 53.3657440952224, -2.90133583925323 53.3747373112816, -2.91641048851245 53.3747373112816))", 4326); var combined = (pol1.Union(pol2)).Union(pol3); 

基本上,如果多边形相互接触,我希望将它们组合起来。 不相交的多边形应保持不相交。

目前我不确定Union是否与TSQL函数STUnion()达到相同的效果。

PS:我只是在TSQL中运行STUnion并注意到它也没有产生预期的结果(即联合包含组合多边形内的点)。

这不是我看到的结果。

这是一个查询:

 declare @pol1 Geography, @pol2 Geography set @pol1 = Geography::STPolyFromText('POLYGON ((-2.91790532309701 53.3657440952224, -2.91790532309701 53.3567508791632, -2.90283703655041 53.3567508791632, -2.9028338560513 53.3657440952224, -2.91790532309701 53.3657440952224))', 4326); set @pol2 = Geography::STPolyFromText('POLYGON ((-2.90283703655041 53.3657440952224, -2.90283703655041 53.3567508791632, -2.88776875000381 53.3567508791632, -2.88776556950469 53.3657440952224, -2.90283703655041 53.3657440952224))', 4326); select @pol1.STUnion(@pol2) 

这是结果:

在此处输入图像描述

如果从问题中添加@ pol3,您可能会看到一个接缝forms。 尝试使用Geometry而不是Geography运行查询,接缝将消失。 我怀疑是地球的泥土推出它,所以如果使用地理位置,你可能需要更多的点来“拼接”。

(我实际上是想让它不加入, 如这里所述 。)