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++; } } }