Quantcast
Channel: DotSpatial
Viewing all articles
Browse latest Browse all 3973

New Post: Create shapefile containing 3D shapes

$
0
0
I have been able to stumble this far (see below), but I am still not creating a 3d shape. the shape is coming out flat.

Here is my code for creating a cube. I am still unsure how I should be using the M coordinate, so that may be my issue. Any help would be greatly appreciated!
        FeatureSet cubeF = new FeatureSet();
        cubeF.CoordinateType = CoordinateType.M;
        DotSpatial.Data.Shape s = new DotSpatial.Data.Shape(FeatureType.Polygon);


        //Top
        List<Coordinate> polygonTop = new List<Coordinate>();
        polygonTop.Add(new Coordinate(5, 0, 0, 1));
        polygonTop.Add(new Coordinate(5, 5, 0, 2));
        polygonTop.Add(new Coordinate(5, 5, 5, 3));
        polygonTop.Add(new Coordinate(5, 0, 5, 4));
        polygonTop.Add(new Coordinate(5, 0, 0, 5));

        //Back
        List<Coordinate> polygonBack = new List<Coordinate>();
        polygonBack.Add(new Coordinate(5, 0, 0, 1));
        polygonBack.Add(new Coordinate(5, 5, 0, 2));
        polygonBack.Add(new Coordinate(0, 5, 0, 3));
        polygonBack.Add(new Coordinate(0, 0, 0, 4));
        polygonBack.Add(new Coordinate(5, 0, 0, 5));

        //Bottom
        List<Coordinate> polygonBottom = new List<Coordinate>();
        polygonBottom.Add(new Coordinate(0, 0, 0, 1));
        polygonBottom.Add(new Coordinate(0, 5, 0, 2));
        polygonBottom.Add(new Coordinate(0, 5, 5, 3));
        polygonBottom.Add(new Coordinate(0, 0, 5, 4));
        polygonBottom.Add(new Coordinate(0, 0, 0, 5));

        //Front
        List<Coordinate> polygonFront = new List<Coordinate>();
        polygonFront.Add(new Coordinate(5, 0, 5, 1));
        polygonFront.Add(new Coordinate(5, 5, 5, 2));
        polygonFront.Add(new Coordinate(0, 5, 5, 3));
        polygonFront.Add(new Coordinate(0, 0, 5, 4));
        polygonFront.Add(new Coordinate(5, 0, 5, 5));

        //Left
        List<Coordinate> polygonLeft = new List<Coordinate>();
        polygonLeft.Add(new Coordinate(0, 0, 0, 1));
        polygonLeft.Add(new Coordinate(5, 0, 0, 2));
        polygonLeft.Add(new Coordinate(5, 0, 5, 3));
        polygonLeft.Add(new Coordinate(0, 0, 5, 4));
        polygonLeft.Add(new Coordinate(0, 0, 0, 5));

        //Right
        List<Coordinate> polygonRight = new List<Coordinate>();
        polygonRight.Add(new Coordinate(0, 5, 0, 1));
        polygonRight.Add(new Coordinate(0, 5, 5, 2));
        polygonRight.Add(new Coordinate(5, 5, 5, 3));
        polygonRight.Add(new Coordinate(5, 5, 0, 4));
        polygonRight.Add(new Coordinate(0, 5, 0, 5));


        s.AddPart(polygonTop.AsEnumerable(), CoordinateType.M);
        s.AddPart(polygonBottom.AsEnumerable(), CoordinateType.M);
        s.AddPart(polygonFront.AsEnumerable(), CoordinateType.M);
        s.AddPart(polygonBack.AsEnumerable(), CoordinateType.M);
        s.AddPart(polygonLeft.AsEnumerable(), CoordinateType.M);
        s.AddPart(polygonRight.AsEnumerable(), CoordinateType.M);


        cubeF.AddShape(s);
        cubeF.SaveAs(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\cube.shp", true);

Viewing all articles
Browse latest Browse all 3973

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>