示例#1
0
        public static void CreateOutput(string folder, Cell[,] map, LabelingHandler lh)
        {
            int mapHeight = map.GetLength(0);
            int mapWidth  = map.GetLength(1);

            string mapFolder = Path.Combine(folder, "Map");

            string[,] names = new string[mapHeight, mapWidth];
            int[,] labels   = new int[mapHeight, mapWidth];

            Directory.CreateDirectory(mapFolder);

            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    names[i, j]  = i + "_" + j;
                    labels[i, j] = map[i, j].getIndex();

                    string dir = Path.Combine(mapFolder, i + "_" + j + ".bmp");
                    map[i, j].SaveAsBmp(dir);
                }
            }

            string[] labelNames   = lh.getConvertedLabels().ToArray();
            int[]    labelIndexes = lh.getConvertedIndexes().ToArray();

            using (XmlWriter writer = XmlWriter.Create(Path.Combine(folder, "metadata.xml")))
            {
                writer.WriteStartDocument();

                writer.WriteStartElement("Map");

                writer.WriteElementString("Height", mapHeight.ToString());
                writer.WriteElementString("Width", mapWidth.ToString());


                writer.WriteStartElement("LabelingHandler");
                writer.WriteElementString("Size", labelNames.Count().ToString());

                for (int i = 0; i < labelNames.Count(); i++)
                {
                    writer.WriteStartElement("Label");
                    writer.WriteElementString("Name", labelNames[i]);
                    writer.WriteEndElement();
                }

                writer.WriteEndElement();

                writer.WriteStartElement("CellMap");

                for (int i = 0; i < mapHeight; i++)
                {
                    for (int j = 0; j < mapWidth; j++)
                    {
                        writer.WriteStartElement("Cell");
                        writer.WriteElementString("Name", names[i, j]);
                        writer.WriteElementString("Label", labels[i, j].ToString());
                        writer.WriteEndElement();
                    }
                }
                writer.WriteEndElement();

                writer.WriteEndElement();
                writer.WriteEndDocument();
            }
        }