【发布时间】:2015-06-29 16:24:11
【问题描述】:
我正在寻找组合多个多边形以减少点数的方法。这会是前进的方向吗:
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 并注意到它也不会产生预期的结果(即联合包含组合多边形内的点)。
【问题讨论】:
-
有一个 UnionAggregate 函数应该尽可能从生成的联合多边形中删除内部边界(就像 Union 应该做的那样),但在测试中它似乎没有这样做。
-
我认为这也不适用于 dbgeography ...
-
我可以确认 union 会产生 something - 只是不是你所说的 union。试图完全实现 setzkorn 所追求的目标 - 并获得相同的结果。只是使用库并从 C# 调用它们,而不是在 SQL Server 中实际执行此操作。
-
我花了最后一个小时试图找出 GeographyUnionAggregate (在 c# 土地上)无济于事。文档很差,除了我面前的书,我还没有看到一个使用示例,在 C# 中也没有。
标签: c# .net sql-server linq entity-framework