public override bool CanExport(Data.DataMatrix matrix, String datasetName) { foreach (Pair <string, string> p in _recognizedColumns) { if (matrix.ContainsColumn(p.First) && matrix.ContainsColumn(p.Second)) { return(true); } } return(false); }
public override void ExportImpl(System.Windows.Window parentWindow, Data.DataMatrix matrix, string datasetName, object options) { var opt = options as KMLExporterOptions; if (opt != null) { var filename = opt.Filename; ProgressStart("Exporting points to '" + filename + "'"); int latIndex = -1; int lonIndex = -1; foreach (Pair <string, string> p in _recognizedColumns) { if (matrix.ContainsColumn(p.First) && matrix.ContainsColumn(p.Second)) { latIndex = matrix.IndexOf(p.First); lonIndex = matrix.IndexOf(p.Second); } } if (latIndex < 0 || lonIndex < 0) { ErrorMessage.Show("Failed to located Latitude and/or Longitude columns in data set!"); return; } int nameIndex = matrix.IndexOf(opt.LabelColumn); int rowCount = 0; using (var writer = new StreamWriter(filename)) { writer.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); writer.WriteLine("<kml xmlns=\"http://www.opengis.net/kml/2.2\">"); writer.WriteLine("<Document>"); foreach (MatrixRow row in matrix.Rows) { var lat = row[latIndex]; var lon = row[lonIndex]; if (lat != null && lon != null) { writer.WriteLine("<Placemark>"); string name = "" + rowCount; if (nameIndex >= 0) { var nameObj = row[nameIndex]; if (nameObj != null) { name = row[nameIndex].ToString(); } else { name = ""; } } if (!string.IsNullOrEmpty(name)) { writer.WriteLine(string.Format("<name>{0}</name>", name)); } writer.WriteLine(string.Format("<description>{0}</description>", BuildDescription(row))); writer.WriteLine(string.Format("<Point><coordinates>{0},{1}</coordinates></Point>", lon, lat)); writer.WriteLine("</Placemark>"); } if (++rowCount % 1000 == 0) { double percent = ((double)rowCount / (double)matrix.Rows.Count) * 100; this.ProgressMessage("Exporting points to '" + filename + "'", percent); } } writer.WriteLine("</Document>"); writer.WriteLine("</kml>"); } ProgressEnd(string.Format("{0} rows exported.", rowCount)); } }