【NetTopologySuite库】使用Polygonizer线构面,并获取割边、悬挂边、无效环

文章目录

效果图

在这里插入图片描述
进行线构面:

  • 构成了两个多边形ABCD、EFGH
  • DI、IE是割边(CutEdge)
  • 有三条悬挂边:CK、FJ、OP
  • 有自相交的无效环:ALMN

示例代码

            var r = new WKTReader();

            var wkts = new string[]
            {
                "linestring(0 0,3 0)",
                "linestring(3 3,3 0)",
                "linestring(3 3,0 3)",
                "linestring(0 0,0 3)",
                "linestring(4 2,0 3)",
                "linestring(0 3,-1 4)",
                "linestring(0 5,-1 4)",
                "linestring(0 5,2 5)",
                "linestring(2 7,2 5)",
                "linestring(2 7,0 7)",
                "linestring(0 5,0 7)",
                "linestring(2 5,4 6)",
                "linestring(-3 3,-3 5)",
                "linestring(0 0,-3 2)",
                "linestring(-1 2,-3 2)",
                "linestring(-1 2,-3 0)",
                "linestring(0 0,-3 0)",
            };
            var lines = wkts.Select(x => r.Read(x)).ToList();
            var pz = new Polygonizer();
            foreach (var line in lines)
            {
                pz.Add(line);
            }
            var dangles = pz.GetDangles();
            var cutEdges = pz.GetCutEdges();
            var invalidRings = pz.GetInvalidRingLines();
            var polygons = pz.GetPolygons();

            Console.WriteLine("多边形:");
            foreach (var polygon in polygons)
            {
                Console.WriteLine(polygon.AsText());
            }
            Console.WriteLine("\n悬挂边:");
            foreach (var item in dangles)
            {
                Console.WriteLine(item.AsText());
            }
            Console.WriteLine("\n割边:");
            foreach (var item in cutEdges)
            {
                Console.WriteLine(item.AsText());
            }
            Console.WriteLine("\n无效环:");
            foreach (var item in invalidRings)
            {
                Console.WriteLine(item.AsText());
            }

打印结果:

多边形:
POLYGON ((3 0, 0 0, 0 3, 3 3, 3 0))
POLYGON ((2 5, 0 5, 0 7, 2 7, 2 5))

悬挂边:
LINESTRING (2 5, 4 6)
LINESTRING (4 2, 0 3)
LINESTRING (-3 3, -3 5)

割边:
LINESTRING (0 3, -1 4)
LINESTRING (0 5, -1 4)

无效环:
LINESTRING (0 0, -3 2, -1 2, -3 0, 0 0)
LINESTRING (-3 2, 0 0, -3 0, -1 2, -3 2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值