示例#1
0
        /// <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);
        }
示例#2
0
 /// <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());
     }
 }
示例#3
0
        /// <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));
     }
 }