csharp计算两个多边形的交集
时间: 2023-12-14 22:03:00 浏览: 35
以下是使用C#计算两个多边形交集的示例代码:
```csharp
using System;
using System.Collections.Generic;using System.Linq;
using NetTopologySuite.Geometries;
using NetTopologySuite.Operation.Overlay;
namespace PolygonIntersection
{
class Program
{
static void Main(string[] args)
{
// 创建两个多边形
var polygon1 = new Polygon(new LinearRing(new[]
{
new Coordinate(0,0),
new Coordinate(0, 10),
new Coordinate(10, 10),
new Coordinate(10, 0),
new Coordinate(0, 0)
}));
var polygon2 = new Polygon(new LinearRing(new[]
{
new Coordinate(5, 5),
new Coordinate(5, 15),
new Coordinate(15, 15),
new Coordinate(15, 5),
new Coordinate(5, 5)
}));
// 计算两个多边形的交集
var intersection = polygon1.Intersection(polygon2);
// 输出交集的坐标
if (intersection is Polygon polygon)
{
Console.WriteLine("Intersection:");
foreach (var coordinate in polygon.Coordinates)
{
Console.WriteLine($"({coordinate.X}, {coordinate.Y})");
}
}
else if (intersection is MultiPolygon multiPolygon)
{
Console.WriteLine("Intersection:");
foreach (var polygon in multiPolygon.Geometries.Cast<Polygon>())
{
foreach (var coordinate in polygon.Coordinates)
{
Console.WriteLine($"({coordinate.X}, {coordinate.Y})");
}
}
}
else
{
Console.WriteLine("No intersection.");
}
}
}
}
```