private void BUT_shptopoly_Click(object sender, EventArgs e)
        {
            OpenFileDialog fd = new OpenFileDialog();

            fd.Filter = "Shape file|*.shp";
            DialogResult result = fd.ShowDialog();
            string       file   = fd.FileName;

            ProjectionInfo pStart    = new ProjectionInfo();
            ProjectionInfo pESRIEnd  = KnownCoordinateSystems.Geographic.World.WGS1984;
            bool           reproject = false;

            if (File.Exists(file))
            {
                string prjfile = Path.GetDirectoryName(file) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(file) + ".prj";
                if (File.Exists(prjfile))
                {
                    using (StreamReader re = File.OpenText(Path.GetDirectoryName(file) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(file) + ".prj"))
                    {
                        pStart.ParseEsriString(re.ReadLine());

                        reproject = true;
                    }
                }

                DotSpatial.Data.IFeatureSet fs = DotSpatial.Data.FeatureSet.Open(file);

                fs.FillAttributes();

                int rows = fs.NumRows();

                DataTable dtOriginal = fs.DataTable;
                for (int row = 0; row < dtOriginal.Rows.Count; row++)
                {
                    object[] original = dtOriginal.Rows[row].ItemArray;
                }

                foreach (DataColumn col in dtOriginal.Columns)
                {
                    Console.WriteLine(col.ColumnName + " " + col.DataType.ToString());
                }

                int a = 1;

                string path = Path.GetDirectoryName(file);

                foreach (var feature in fs.Features)
                {
                    StringBuilder sb = new StringBuilder();

                    sb.Append("#Shap to Poly - Mission Planner\r\n");
                    foreach (var point in feature.Coordinates)
                    {
                        if (reproject)
                        {
                            double[] xyarray = { point.X, point.Y };
                            double[] zarray  = { point.Z };

                            Reproject.ReprojectPoints(xyarray, zarray, pStart, pESRIEnd, 0, 1);

                            point.X = xyarray[0];
                            point.Y = xyarray[1];
                            point.Z = zarray[0];
                        }

                        sb.Append(point.Y.ToString(System.Globalization.CultureInfo.InvariantCulture) + "\t" + point.X.ToString(System.Globalization.CultureInfo.InvariantCulture) + "\r\n");
                    }

                    log.Info("writting poly to " + path + Path.DirectorySeparatorChar + "poly-" + a + ".poly");
                    File.WriteAllText(path + Path.DirectorySeparatorChar + "poly-" + a + ".poly", sb.ToString());

                    a++;
                }
            }
        }