CreatePolygonShapefile.cs

This example demonstrates how to create a polygon shapefile by placing 100 circles randomly. Here is a screenshot with the results of the code.

CreatePolygonShapefile.png
´╗┐using System;
using System.Windows.Forms;
using AxMapWinGIS;
using MapWinGIS;
using System.Diagnostics;

public partial class MapExamples
{
    public void CreatePolygonShapefile(AxMap axMap1)
    {
        Shapefile sf = new Shapefile();
        bool result = sf.CreateNewWithShapeID("", ShpfileType.SHP_POLYGON);

        if (!result)
        {
            MessageBox.Show(sf.get_ErrorMsg(sf.LastErrorCode));
        }
        else
        {
            double xMin = 0.0;
            double yMin = 0.0;
            double xMax = 1000.0;
            double yMax = 1000.0;
            Random rnd = new Random(DateTime.Now.Millisecond);

            int fldX = sf.EditAddField("x", FieldType.DOUBLE_FIELD, 9, 12);
            int fldY = sf.EditAddField("y", FieldType.DOUBLE_FIELD, 9, 12);
            int fldArea = sf.EditAddField("area", FieldType.DOUBLE_FIELD, 9, 12);

            // In a loop we are creating 100 different points using the box established above.
            for (int i = 0; i < 100; i++)
            {
                if (i % 10 == 0)
                {
                    Shape shp1 = new Shape();
                    shp1.Create(ShpfileType.SHP_POLYGON);
                    sf.EditInsertShape(shp1, ref i);
                }
                else
                {
                    double xCenter = xMin + (xMax - xMin) * rnd.NextDouble();
                    double yCenter = yMin + (yMax - yMin) * rnd.NextDouble();

                    // random radius from 10 to 100
                    double radius = 10 + rnd.NextDouble() * 90;

                    // polygons must be clockwise
                    Shape shp = new Shape();
                    shp.Create(ShpfileType.SHP_POLYGON);

                    for (int j = 0; j < 37; j++)
                    {
                        Point pnt = new Point();
                        pnt.x = xCenter + radius * Math.Cos(j * Math.PI / 18);
                        pnt.y = yCenter - radius * Math.Sin(j * Math.PI / 18);
                        shp.InsertPoint(pnt, ref j);
                    }
                    sf.EditInsertShape(shp, ref i);

                    sf.EditCellValue(fldX, i, xCenter.ToString());
                    sf.EditCellValue(fldY, i, yCenter.ToString());
                    sf.EditCellValue(fldArea, i, Math.PI * radius * radius);
                }
            }

            axMap1.AddLayer(sf, true);
            axMap1.ZoomToLayer(0);

            sf.Categories.Generate(fldArea, tkClassificationType.ctNaturalBreaks, 7);
            ColorScheme scheme = new ColorScheme();
            scheme.SetColors2(tkMapColor.Wheat, tkMapColor.Salmon);
            sf.Categories.ApplyColorScheme(tkColorSchemeType.ctSchemeGraduated, scheme);

            axMap1.Redraw();

            // save if needed
            //sf.SaveAs(@"c:\polygons.shp", null);
        }
    }
    
}

 All Classes Files Functions Enumerations Properties