0

我有Envelope[][] extents = new Envelope[][];建筑。每个信封具有MinX、和属性MaxX,并表示网格的一个图块(左下角和右上角)。现在我有另一个包含 和 的最小值和最大值。我想获得与.MinYMaxYEnvelope bounds;X-Y-axisextentsbounds

有什么简单的方法可以做到这一点Envelope.Intersect吗?

[编辑]
现在我是这样做的(蛮力 xD):

List<Envelope> intersectedTiles = new List<Envelope>();
for (int i = 0; i < extents.LongLength; i++)
{
    for (int j = 0; j < extents.Length; j++)
    {
        if (extents[i][j].MinX >= bounds.MinX && extents[i][j].MaxX <= bounds.MaxX &&
            extents[i][j].MinY >= bounds.MinY && extents[i][j].MaxY <= bounds.MaxY)
        {
            intersectedTiles.Add(extents[i][j]);
        }
    }
}
4

1 回答 1

1
private static bool Intersects(Envelope e1, Envelope e2)
{
    return e1.MinX >= e2.MinX && e1.MaxX <= e2.MaxX && e1.MinY >= e2.MinY && e1.MaxY <= e2.MaxY;
}

List<Envelope> intersectedTiles = extents.SelectMany(es => es)
    .Where(e => Intersects(e, bounds))
    .ToList();
于 2012-09-27T13:05:57.040 回答