public static void SaveBin(this MultiGridData multigrid, string filename) { using (var bw = new BinaryWriter(File.Open(filename, FileMode.Create))) { PatchDataIO.WriteBinVersion(bw); PatchDataIO.WriteBinBoundsHeader(bw, multigrid); // Write Metadata (if available) PatchDataIO.WriteBinMetadata(bw, multigrid.metadata); bw.Write((byte)multigrid.coloring); int categoriesCount = multigrid.categories == null ? 0 : multigrid.categories.Length; bw.Write(categoriesCount); if (multigrid.categories != null) { // Write categories (without values) foreach (var c in multigrid.categories) { bw.Write(c.name); } // Write Grids foreach (var c in multigrid.categories) { GridDataIO.WriteBinProperties(bw, c.grid); GridDataIO.WriteBinValues(bw, c.grid); } } } }
private static void WriteBinHeader(BinaryWriter bw, GridData grid) { PatchDataIO.WriteBinVersion(bw); PatchDataIO.WriteBinBoundsHeader(bw, grid); // Write Categories count bw.Write(grid.categories == null ? 0 : grid.categories.Length); }
private static void WriteBinHeader(BinaryWriter bw, PointData pointData) { PatchDataIO.WriteBinVersion(bw); PatchDataIO.WriteBinBoundsHeader(bw, pointData); // Write Categories count bw.Write(pointData.categories == null ? 0 : pointData.categories.Length); }
public static void SaveBin(this GridData grid, string filename) { using (var bw = new BinaryWriter(File.Open(filename, FileMode.Create))) { PatchDataIO.WriteBinBoundsHeader(bw, grid); // Write Categories count bw.Write(grid.categories == null ? 0 : grid.categories.Length); bw.Write(grid.minValue); bw.Write(grid.maxValue); bw.Write(grid.countX); bw.Write(grid.countY); bw.Write(grid.units); bw.Write((byte)grid.coloring); // Write Metadata (if available) PatchDataIO.WriteBinMetadata(bw, grid.metadata); // Write Categories (if available) WriteBinCategories(bw, grid.categories); // Write values byte[] byteArray = new byte[grid.values.Length * 4]; Buffer.BlockCopy(grid.values, 0, byteArray, 0, byteArray.Length); bw.Write(byteArray); // Write mask byteArray = new byte[grid.valuesMask.Length]; Buffer.BlockCopy(grid.valuesMask, 0, byteArray, 0, byteArray.Length); bw.Write(byteArray); // Write distribution values var distribution = grid.DistributionValues; bw.Write((byte)distribution.Length); byteArray = new byte[distribution.Length * 4]; Buffer.BlockCopy(distribution, 0, byteArray, 0, byteArray.Length); bw.Write(byteArray); // Write max distribution value bw.Write(grid.MaxDistributionValue); } }
public static void SaveBin(this GraphData graph, string filename) { using (var bw = new BinaryWriter(File.Open(filename, FileMode.Create))) { PatchDataIO.WriteBinVersion(bw); PatchDataIO.WriteBinBoundsHeader(bw, graph); bw.Write(graph.cellSizeX); bw.Write(graph.cellSizeY); int count = graph.nodes.Count; bw.Write(count); for (int n = 0; n < count; n++) { GraphNode node = graph.nodes[n]; bw.Write(node.longitude); bw.Write(node.latitude); bw.Write(node.classifications); bw.Write(node.index); } for (int n = 0; n < count; n++) { GraphNode node = graph.nodes[n]; for (int l = 0; l < node.links.Count; l++) { var link = node.links[l]; int index = node.index; int linkIndex = link.index; if (linkIndex > index) { bw.Write(index); bw.Write(linkIndex); bw.Write(node.linkDistances[l]); bw.Write(node.linkClassifications[l]); } } } } }