public void SaveHabitatMap(string rootFilePath, HabitatMap map) { var pathGenerator = new HabitatMapFileManagerPathsGenerator(rootFilePath); var infoJson = HabitatMapInfoJson.Create(map); File.WriteAllText(pathGenerator.MainInfoFilePath(), JsonUtility.ToJson(infoJson)); var wktWriter = new WKTWriter(); var array = map.TreeArray; for (int x = 0; x < array.GetLength(0); x++) { for (int y = 0; y < array.GetLength(1); y++) { var tree = array[x, y]; var allElements = tree.QueryAll(); var fieldsInfo = new HabitatFieldsTypeInfoJson() { TypesList = allElements.Select(c => c.Field.Type).ToList() }; File.WriteAllText(pathGenerator.GridInfoFile(x, y), JsonUtility.ToJson(fieldsInfo)); var oneCellFilePath = pathGenerator.GridWrtFile(x, y); var geoCollection = new GeometryCollection(allElements.Select(c => c.Field.Geometry).ToArray()); File.WriteAllText(oneCellFilePath, wktWriter.Write(geoCollection)); } } }
public HabitatMap LoadHabitatMap(string rootFilePath) { var pathGenerator = new HabitatMapFileManagerPathsGenerator(rootFilePath); var infoJson = JsonUtility.FromJson <HabitatMapInfoJson>(File.ReadAllText(pathGenerator.MainInfoFilePath())); var gridCellsCount = infoJson.GridCellsCount; var treesArray = new MyQuadtree <HabitatFieldInTree> [gridCellsCount.X, gridCellsCount.Y]; var wktReader = new WKTReader(); for (int x = 0; x < gridCellsCount.X; x++) { for (int y = 0; y < gridCellsCount.Y; y++) { var gridInfoFile = JsonUtility.FromJson <HabitatFieldsTypeInfoJson>(File.ReadAllText(pathGenerator.GridInfoFile(x, y))); string oneCellFilePath = pathGenerator.GridWrtFile(x, y); var tree = new MyQuadtree <HabitatFieldInTree>(); var geoCollection = wktReader.Read(File.ReadAllText(oneCellFilePath)) as GeometryCollection; int i = 0; foreach (var type in gridInfoFile.TypesList) { tree.Add(new HabitatFieldInTree() { Field = new HabitatField() { Geometry = geoCollection.GetGeometryN(i), Type = type } }); i++; } treesArray[x, y] = tree; } } return(new HabitatMap(infoJson.MapStartPosition, infoJson.MapGridSize, infoJson.GridCellsCount, treesArray)); }