1

我正在尝试使用 DbGeography 将数千个矩形组合成一个多边形。对于测试,我只从两个矩形开始(因为数千个矩形都失败了,结果是完整的)。当我使用 DbGeography 的 union 方法时,它返回一个多边形,其中一个矩形从另一个矩形中减去,而不是组合它们。我用 SQLGeography 尝试了相同的过程并得到了相同的结果。谁能看到我做错了什么?还是我误解了联合方法?

两个单独的矩形显示重叠:

在此处输入图像描述

联合后产生的多边形:

在此处输入图像描述

代码(geog1为左上矩形,geog2为右下):

DbGeography geogUnion = geog1;     
geogUnion = geogUnion.Union(geog2);

以下是我正在合并的多边形和生成的多边形的值:

geog1: POLYGON ((-114.964104 36.008963, -114.964104 36.005183, -114.958248 36.005183, -114.958248 36.008963, -114.964104 36.008963))

geog2: POLYGON ((-114.957387 36.006575, -114.957387 36.000681, -114.9608 36.000681, -114.9608 36.006575, -114.957387 36.006575))

geogUnion: POLYGON ((-114.957387 36.000681, -114.9608 36.000681, -114.96080000000012 36.005183034992221, -114.958248 36.005183, -114.95824799999998 36.00657500911889, -114.957387 36.006575, -114.957387 36.000681))
4

1 回答 1

0

经过大量测试,我发现了这一点。矩形以不同的方向绘制,一个是顺时针方向,另一个是逆时针方向。发生这种情况是因为我从中绘制的数据在我们定义矩形的数据库中不一致。

一旦我通过以相同方式定位两个矩形来规范化数据,它的行为就符合预期。我希望这可以帮助其他有类似问题的人。

于 2019-04-05T20:52:07.493 回答