/// <summary> /// Aggregates lower level DEM tiles to construct upper level tiles. /// </summary> /// <param name="level"> /// Zoom level. /// </param> /// <param name="tileX"> /// X coordinate. /// </param> /// <param name="tileY"> /// Y coordinate. /// </param> public void CreateParent(int level, int tileX, int tileY) { int level1 = checked (level + 1); int x1 = checked (2 * tileX); int y1 = checked (2 * tileY); short[][] h = new short[4][]; h[0] = this.tileSerializer.Deserialize(level1, x1, y1); h[1] = this.tileSerializer.Deserialize(level1, x1 + 1, y1); h[2] = this.tileSerializer.Deserialize(level1, x1, y1 + 1); h[3] = this.tileSerializer.Deserialize(level1, x1 + 1, y1 + 1); int[][] mapping = ToastDemTileCreator.GetMapping(level, tileX, tileY); short[] hp = new short[mapping.Length]; for (int k = 0; k < mapping.Length; k++) { int[] m = mapping[k]; int region = m[0]; int position = m[1]; if (h[region] != null) { hp[k] = h[region][position]; } else { hp[k] = 0; } } this.tileSerializer.Serialize(hp, level, tileX, tileY); }
/// <summary> /// Computes mapping for a given level, X and Y based on the quadrant that they belong to. /// </summary> /// <param name="level"> /// Zoom level. /// </param> /// <param name="tileX"> /// X coordinate. /// </param> /// <param name="tileY"> /// Y coordinate. /// </param> /// <returns> /// Mapping generated. /// </returns> private static int[][] GetMapping(int level, int tileX, int tileY) { if (ToastDemTileCreator.IsSlashQuadrant(level, tileX, tileY)) { return(ToastDemTileCreator.GetSlashMapping()); } else { return(ToastDemTileCreator.GetBackslashMapping()); } }
/// <summary> /// Generates backslash quadrant mapping. /// </summary> /// <returns> /// Mapping generated. /// </returns> private static int[][] GetBackslashMapping() { if (ToastDemTileCreator.backslashMapping == null) { lock (token) { ToastDemTileCreator.backslashMapping = ToastDemTileCreator.GenerateMapping(backslashVerticesX, backslashVerticesY); } } return(ToastDemTileCreator.backslashMapping); }
public void InvalidateDEMToastCreatorUsingNullElevation() { // Get Values from XML File string expectedError = utilityObj.XmlUtil.GetTextValue(Constants.MercDemSerializerTestNode, Constants.ExpectedErrorNode); string destinationPath = Path.Combine(Environment.CurrentDirectory, fileTemplate); DemTileSerializer demTileSerializer = new DemTileSerializer(destinationPath); ToastDemTileCreator merc = null; try { merc = new ToastDemTileCreator(null, demTileSerializer); Assert.Fail(); } catch (ArgumentNullException ex) { string message = ex.Message; Assert.IsNull(merc); Assert.AreEqual(expectedError, message.Replace("\r", string.Empty).Replace("\n", string.Empty)); } }