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)); } } }
private void AssertMapIsPresent() { if (_habitatMap == null) { var fileManager = new HabitatMapFileManager(); _habitatMap = fileManager.LoadHabitatMap(_rootSerializationPath); } }
public static HabitatMapInfoJson Create(HabitatMap map) { return(new HabitatMapInfoJson() { GridCellsCount = map.GridCellsCount, MapGridSize = map.MapGridSize, MapStartPosition = map.MapStartPosition }); }
public void Start() { var msw = new MyStopWatch(); msw.StartSegment("Loading"); var loader = new HabitatMapOsmLoader(); var fields = loader.Load(@"C:\inz\osm\map.osm"); msw.StartSegment("Translating"); var translator = new HabitatFieldPositionTranslator(GeoCoordsToUnityTranslator.DefaultTranslator); fields = fields.Select(c => translator.Translate(c)).ToList(); msw.StartSegment("MapCreating"); var map = HabitatMap.Create( new MyRectangle(62 * 720, 67 * 720, 8 * 720, 8 * 720), new Vector2(90 * 8, 90 * 8), fields, HabitatType.NotSpecified, HabitatTypePriorityResolver.Default); GeoCoordsToUnityTranslator translator2 = GeoCoordsToUnityTranslator.DefaultTranslator; var geoPos1 = new GeoCoordinate(49.600f, 19.543f); var lifePos1 = translator2.TranslateToUnity(geoPos1); var geoPos2 = new GeoCoordinate(49.610f, 19.552f); var lifePos2 = translator2.TranslateToUnity(geoPos2); MyRectangle territoryUsedToCreateStainTexture = new MyRectangle(lifePos1.x, lifePos1.y, lifePos2.x - lifePos1.x, lifePos2.y - lifePos1.y); territoryUsedToCreateStainTexture = RectangleUtils.CalculateSubPosition(territoryUsedToCreateStainTexture, new MyRectangle(0.65f, 0.65f, 0.1f, 0.1f)); var treeX = map.QueryMap(territoryUsedToCreateStainTexture); var parentObjectX = new GameObject($"MAGA"); treeX.QueryAll() .ForEach(c => HabitatMapOsmLoaderDebugObject.CreateDebugHabitatField(c.Field, 0.01f, parentObjectX)); msw.StartSegment("MapQuerying"); for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { var tree = map.QueryMap( new MyRectangle(62 * 720 + x * 720, 67 * 720 + y * 720, 720, 720)); var parentObject = new GameObject($"x:{x} y:{y}"); tree.QueryAll() .ForEach(c => HabitatMapOsmLoaderDebugObject.CreateDebugHabitatField(c.Field, 0.01f, parentObject)); } } Debug.Log("T64: " + msw.CollectResults()); }
public void Start() { var loader = new HabitatMapOsmLoader(); var fields = loader.Load(@"C:\inz\osm\map.osm"); var translator = new HabitatFieldPositionTranslator(GeoCoordsToUnityTranslator.DefaultTranslator); fields = fields.Select(c => translator.Translate(c)).ToList(); var map = HabitatMap.Create( new MyRectangle(62 * 720, 67 * 720, 8 * 720, 8 * 720), new Vector2(90 * 8, 90 * 8), fields, HabitatType.NotSpecified, HabitatTypePriorityResolver.Default); var fileManager = new HabitatMapFileManager(); fileManager.SaveHabitatMap($@"C:\inz\habitating3\", map); var remap = fileManager.LoadHabitatMap($@"C:\inz\habitating3\"); for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { var tree = remap.QueryMap( new MyRectangle(62 * 720 + x * 720, 67 * 720 + y * 720, 720, 720)); var parentObject = new GameObject($"x:{x} y:{y}"); tree.QueryAll() .ForEach(c => HabitatMapOsmLoaderDebugObject.CreateDebugHabitatField(c.Field, 0.01f, parentObject)); } } }
public HabitatMapDb(HabitatMapDbInitializationInfo initializationInfo) { _habitatMap = initializationInfo.Map; _rootSerializationPath = initializationInfo.RootSerializationPath; }