static void WriteFields(List <GISField> fields, BinaryWriter bw) { for (int fieldindex = 0; fieldindex < fields.Count; fieldindex++) { GISField field = fields[fieldindex]; bw.Write(GISTools.TypeToInt(field.datatype)); //字段类型 GISTools.WriteString(field.name, bw); //字段名 } }
//写文件函数主框架 public static void WriteFile(GISLayer layer, string filename) { FileStream fsr = new FileStream(filename, FileMode.Create); //根据文件名创建文件流 BinaryWriter bw = new BinaryWriter(fsr); WriteFileHeader(layer, bw); //写入头文件 GISTools.WriteString(layer.Name, bw); //写入图层名字 WriteFields(layer.Fields, bw); //写入字段 WriteFeatures(layer, bw); bw.Close(); fsr.Close(); }
static void WriteAttributes(GISAttribute attribute, BinaryWriter bw) { for (int i = 0; i < attribute.ValueCount(); i++) { Type type = attribute.GetValue(i).GetType(); if (type.ToString() == "System.Boolean") { bw.Write((bool)attribute.GetValue(i)); } else if (type.ToString() == "System.Byte") { bw.Write((byte)attribute.GetValue(i)); } else if (type.ToString() == "System.Char") { bw.Write((char)attribute.GetValue(i)); } else if (type.ToString() == "System.Decimal") { bw.Write((decimal)attribute.GetValue(i)); } else if (type.ToString() == "System.Double") { bw.Write((double)attribute.GetValue(i)); } else if (type.ToString() == "System.Single") { bw.Write((float)attribute.GetValue(i)); } else if (type.ToString() == "System.Int32") { bw.Write((int)attribute.GetValue(i)); } else if (type.ToString() == "System.Int64") { bw.Write((long)attribute.GetValue(i)); } else if (type.ToString() == "System.UInt16") { bw.Write((ushort)attribute.GetValue(i)); } else if (type.ToString() == "System.UInt32") { bw.Write((uint)attribute.GetValue(i)); } else if (type.ToString() == "System.UInt64") { bw.Write((ulong)attribute.GetValue(i)); } else if (type.ToString() == "System.SByte") { bw.Write((sbyte)attribute.GetValue(i)); } else if (type.ToString() == "System.Int16") { bw.Write((short)attribute.GetValue(i)); } else if (type.ToString() == "System.String") { GISTools.WriteString((string)attribute.GetValue(i), bw); } } }