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(); }
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(); }
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); }
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 }