public void Write(Stream input, OutputTile outputTile)
        {
            var sql = @"insert into tiles(zoom_level,tile_column,tile_row,tile_data) values(@zoom,@x,@y,@tileData);";
            int ret = 0;

            byte[] buffer = new byte[4096];
            using (MemoryStream ms = new MemoryStream())
            {
                ret = input.Read(buffer, 0, buffer.Length);
                while (ret > 0)
                {
                    ms.Write(buffer, 0, ret);
                    ret = input.Read(buffer, 0, 4096);
                }
                byte[]        tobase64 = ms.ToArray();
                StringBuilder sb       = new StringBuilder();
                sb.Append("data:image/png;base64,").Append(Convert.ToBase64String(tobase64, 0, tobase64.Length));

                using (var conn = new SQLiteConnection(_sqliteConnectionString))
                {
                    ret = conn.Execute(sql, new
                    {
                        zoom     = outputTile.Zoom,
                        x        = int.Parse(outputTile.X),
                        y        = int.Parse(outputTile.Y),
                        tileData = sb.ToString()
                    });
                }
            }
        }
Esempio n. 2
0
        protected virtual string BuildTilePath(OutputTile outputTile)
        {
            string zoomFolder;

            if (!_zoomFolderDic.ContainsKey(outputTile.Zoom))
            {
                zoomFolder = Path.Combine(_rootPath, outputTile.Zoom);
                Directory.CreateDirectory(zoomFolder);
                _zoomFolderDic[outputTile.Zoom] = zoomFolder;
            }
            else
            {
                zoomFolder = _zoomFolderDic[outputTile.Zoom];
            }

            string zoomXFolder;
            string zoomXKey = outputTile.Zoom + "_" + outputTile.X;

            if (!_zoomAndXFolderDic.ContainsKey(zoomXKey))
            {
                zoomXFolder = Path.Combine(zoomFolder, outputTile.X);
                Directory.CreateDirectory(zoomXFolder);
                _zoomFolderDic[zoomXKey] = zoomXFolder;
            }
            else
            {
                zoomXFolder = _zoomFolderDic[zoomXKey];
            }

            return(Path.Combine(zoomXFolder, outputTile.Y + ".png"));
        }
Esempio n. 3
0
        public void Write(Stream input, OutputTile outputTile)
        {
            var sql = @"insert into tiles(zoom_level,tile_column,tile_row,tile_data) values(@zoom,@x,@y,@tileData);";
            int ret = 0;

            byte[] buffer = new byte[4096];
            using (MemoryStream ms = new MemoryStream())
            {
                ret = input.Read(buffer, 0, buffer.Length);
                while (ret > 0)
                {
                    ms.Write(buffer, 0, ret);
                    ret = input.Read(buffer, 0, 4096);
                }

                using (var conn = new SQLiteConnection(_sqliteConnectionString))
                {
                    ret = conn.Execute(sql, new
                    {
                        zoom     = outputTile.Zoom,
                        x        = int.Parse(outputTile.X),
                        y        = int.Parse(outputTile.Y),
                        tileData = ms.ToArray()
                    });
                }
            }
        }
Esempio n. 4
0
        public void Write(Stream input, OutputTile outputTile)
        {
            string filePath = BuildTilePath(outputTile);

            using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                byte[] buffer = new byte[8192];//8K
                int    ret    = input.Read(buffer, 0, buffer.Length);
                while (ret > 0)
                {
                    fs.Write(buffer, 0, ret);
                    ret = input.Read(buffer, 0, buffer.Length);
                }
            }
        }