Beispiel #1
0
        public static void minCircleOutput(IList <IFeature> features)
        {
            IList <ILineString> circles = new List <ILineString>();

            for (int i = 0; i < features.Count; i++)
            {
                ILineString minLine = MinPoints.getMinVector(features[i]);
                ILineString circle  = Circles.getCircle(minLine.Coordinates[0], minLine.Coordinates[1]);
                circles.Add(circle);
            }

            string path1           = @"H:\test\结果\MinCircle1.shp";
            var    shapefileWriter = new ShapefileWriter(path1, ShapeGeometryType.LineString);

            foreach (var circle in circles)
            {
                shapefileWriter.Write(circle);
            }


            string path2 = @"H:\test\结果\MinCircle1.dbf";

            ShapefileWriter.WriteDummyDbf(path2, features.Count);
            shapefileWriter.Close();
            Console.WriteLine("生成成功");
            Console.ReadKey();
        }
Beispiel #2
0
        public static void minLineOutput(IList <IFeature> features)
        {
            IList <ILineString> minLines = new List <ILineString>();

            for (int i = 0; i < features.Count; i++)
            {
                minLines.Add(MinPoints.getMinVector(features[i]));
            }

            string path1           = @"H:\test\结果\MinLine1.shp";
            var    shapefileWriter = new ShapefileWriter(path1, ShapeGeometryType.LineString);

            foreach (var minLine in minLines)
            {
                shapefileWriter.Write(minLine);
            }


            string path2 = @"H:\test\结果\MinLine1.dbf";

            ShapefileWriter.WriteDummyDbf(path2, features.Count);
            shapefileWriter.Close();
            Console.WriteLine("生成成功");
            Console.ReadKey();
        }
Beispiel #3
0
        public Indexs(IFeature feature)
        {
            setMaxCha(feature);
            setMinCha(feature);
            //setMidCha(feature);
            setMinMax();
            setPolygen(feature);
            setAreaRatio(feature);
            setTitio(feature);
            setPointNum(feature);
            setRows();

            MaxLine = MaxPoints.getMaxVector(feature);
            MinLine = MinPoints.getMinVector(feature);
        }
Beispiel #4
0
        private void setMinCha(IFeature feature)
        {
            ILineString   minLine  = MinPoints.getMinVector(feature);
            AngleProperty property = new AngleProperty(feature);

            foreach (var line in property.Lines)
            {
                Index index = new Index(line.Coordinates[1].Distance(line.Coordinates[0]) - minLine.Coordinates[1].Distance(minLine.Coordinates[0]), "最小差");
                MinCha.Add(index);
            }
            #region
            //ILineString minLine = MinPoints.getMinVector(feature);
            //AngleProperty property = new AngleProperty(feature);
            //foreach (var line in property.Lines)
            //{
            //    if (line.Intersection(feature.Geometry.Boundary).NumPoints == 2)
            //    {
            //        line.Intersection(feature.Geometry.Boundary).Coordinates[0].X -= feature.Geometry.Centroid.Coordinate.X;
            //        line.Intersection(feature.Geometry.Boundary).Coordinates[0].Y -= feature.Geometry.Centroid.Coordinate.Y;
            //        line.Intersection(feature.Geometry.Boundary).Coordinates[1].X -= feature.Geometry.Centroid.Coordinate.X;
            //        line.Intersection(feature.Geometry.Boundary).Coordinates[1].Y -= feature.Geometry.Centroid.Coordinate.Y;
            //        if (AngleProperty.getAngle(line.Intersection(feature.Geometry.Boundary).Coordinates[0]) > 90 && AngleProperty.getAngle(line.Intersection(feature.Geometry.Boundary).Coordinates[0]) < 270)
            //        {
            //            Index index1 = new Index(line.Coordinates[0].Distance(line.Intersection(feature.Geometry.Boundary).Coordinates[1]) - minLine.Coordinates[1].Distance(minLine.Coordinates[0]), "最小差");
            //            MinCha.Add(index1);
            //        }
            //       else if (AngleProperty.getAngle(line.Intersection(feature.Geometry.Boundary).Coordinates[0]) > 0 && AngleProperty.getAngle(line.Intersection(feature.Geometry.Boundary).Coordinates[0]) < 90||AngleProperty.getAngle(line.Intersection(feature.Geometry.Boundary).Coordinates[0])>270&& AngleProperty.getAngle(line.Intersection(feature.Geometry.Boundary).Coordinates[0])<360)
            //        {
            //            Index index1 = new Index(line.Coordinates[0].Distance(line.Intersection(feature.Geometry.Boundary).Coordinates[0]) - minLine.Coordinates[1].Distance(minLine.Coordinates[0]), "最小差");
            //            MinCha.Add(index1);
            //        }

            //    }
            //    else if (line.Intersection(feature.Geometry.Boundary).NumPoints == 1 || line.Intersection(feature.Geometry.Boundary).NumPoints == 0)
            //    {
            //        Index index = new Index(line.Coordinates[1].Distance(line.Coordinates[0]) - minLine.Coordinates[1].Distance(minLine.Coordinates[0]), "最小差");
            //        MinCha.Add(index);
            //    }
            //    //else
            //    //{
            //    //    Console.WriteLine("交点超过三个,请检查小班");
            //    //}
            //}
            #endregion
        }