• [NetTopologySuite](2)任意多边形求交


    任意多边形求交:

     private void btnPolygon_Click(object sender, EventArgs e)
            {
    
                double[] Xs = new double[] { 30, 260, 130, 350, 250, 330, 320, 180, 250, 50, 70, 60, 30, 260 };
                double[] Ys = new double[] { 140, 260, 110, 150, 230, 210, 140, 260 };
                int m = Xs.Length / 2;
                var coords = new Coordinate[m];
                var coordscheck = new Coordinate[m];
                for (var i = 0; i < Xs.Length / 2; i++)
                {
                    var x = Xs[i * 2];
                    var y = Xs[i * 2 + 1];
                    coords[i] = new Coordinate(x, y);
                    coordscheck[i] = new Coordinate(x, y);
                }
                // Shell Rings
                var ring = new LinearRing(coords);
                var gf = new GeometryFactory();
                var ringCheck = gf.CreateLinearRing(coordscheck);
                // Hole Coordinates
                int n = Ys.Length / 2;
                var coordsholecheck = new Coordinate[n];
                var coordshole = new Coordinate[n];
                for (var i = 0; i < Ys.Length / 2; i++)
                {
                    var x = Ys[i * 2];
                    var y = Ys[i * 2 + 1];
                    coordshole[i] = new Coordinate(x, y);
                    coordsholecheck[i] = new Coordinate(x, y);
                }
                // Hole LinearRing Arrays
                var hole = new LinearRing(coordshole);
                var holes = new ILinearRing[1];
                var holeCheck = gf.CreateLinearRing(coordsholecheck);
                var holescheck = new ILinearRing[1];
                holes[0] = hole;
                holescheck[0] = holeCheck;
                Polygon pg = new Polygon(ring, holes);//
                var polygonCheck = gf.CreatePolygon(ringCheck, holescheck);
                var areaCheck = polygonCheck.Area;
                var area = pg.Area;
                //
                inputGeometry = pg;
    
    
                double[] XsAnalysis = new double[] { 210, 390, 180, 290, 170, 210, 190, 140, 360, 60, 470, 220, 440, 390 };
                double[] YsAnalysis = new double[] { 340, 310, 250, 260, 270, 140, 360, 130, 390, 230, 340, 310 };
                m = XsAnalysis.Length / 2;
                var coordsAnalysis = new Coordinate[m];
                var coordscheckAnalysis = new Coordinate[m];
                for (var i = 0; i < XsAnalysis.Length / 2; i++)
                {
                    var x = XsAnalysis[i * 2];
                    var y = XsAnalysis[i * 2 + 1];
                    coordsAnalysis[i] = new Coordinate(x, y);
                    coordscheckAnalysis[i] = new Coordinate(x, y);
                }
                // Shell Rings
                var ringAnalysis = new LinearRing(coordsAnalysis);
                var gfAnalysis = new GeometryFactory();
                var ringCheckAnalysis = gfAnalysis.CreateLinearRing(coordscheckAnalysis);
                // Hole Coordinates
                n = YsAnalysis.Length / 2;
                var coordsholecheckAnalysis = new Coordinate[n];
                var coordsholeAnalysis = new Coordinate[n];
                for (var i = 0; i < YsAnalysis.Length / 2; i++)
                {
                    var x = YsAnalysis[i * 2];
                    var y = YsAnalysis[i * 2 + 1];
                    coordsholeAnalysis[i] = new Coordinate(x, y);
                    coordsholecheckAnalysis[i] = new Coordinate(x, y);
                }
                // Hole LinearRing Arrays
                var holeAnalysis = new LinearRing(coordsholeAnalysis);
                var holesAnalysis = new ILinearRing[1];
                var holeCheckAnalysis = gf.CreateLinearRing(coordsholecheckAnalysis);
                var holescheckAnalysis = new ILinearRing[1];
                holesAnalysis[0] = holeAnalysis;
                holescheckAnalysis[0] = holeCheckAnalysis;
                Polygon pgAnalysis = new Polygon(ringAnalysis, holesAnalysis);//
                var polygonCheckAnalysis = gf.CreatePolygon(ringCheckAnalysis, holescheckAnalysis);
                var areaCheckAnalysis = polygonCheckAnalysis.Area;
                var areaAnalysis = pgAnalysis.Area;
                //
                AnalysisPolygonGeometry = pgAnalysis;
    
    
                intersectionOutput = AnalysisPolygonGeometry.Intersection(inputGeometry);
                this.Invalidate();
            }
    View Code

  • 相关阅读:
    《Typecript 入门教程》 3、接口
    《Typecript 入门教程》 2、访问控制符:public、private、protected、readonly
    《Typecript 入门教程》 1、类
    使用Visual Studio Code + Node.js搭建TypeScript开发环境
    call( )、apply( )
    Sublime Text Version 3.0,Build3143注册码
    angular指令笔记(一):ng-options
    java 约束配置文件和本地约束
    hadoop在zookeeper上的高可用HA
    Zookeeper简单初应用
  • 原文地址:https://www.cnblogs.com/yhlx125/p/4562097.html
Copyright © 2020-2023  润新知