gpt4 book ai didi

c# - 组合几个 DbGeography 多边形

转载 作者:行者123 更新时间:2023-11-30 12:58:08 25 4
gpt4 key购买 nike

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

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)

结果如下:

enter image description here

如果您从问题中添加 @pol3,您可能会看到接缝形式。尝试使用 Geometry 而不是 Geography 运行查询,接缝就会消失。我怀疑那是地球的凸起将它推出,因此如果使用地理,您可能需要更多点才能将其“缝合在一起”。

(我实际上是想让它不加入,as described here。)

关于c# - 组合几个 DbGeography 多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31120785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com