public byte[] GetTile(BruTile.TileInfo tileInfo) { string url = _tileSchema.mapUrlTemplates[r.Next(0, _tileSchema.mapUrlTemplates.Length - 1)]; url = string.Format(url, tileInfo.Index.Col, tileInfo.Index.Row, tileInfo.Index.Level, calculateSParam(tileInfo.Index.Col, tileInfo.Index.Row)); byte[] data = Fetch(url); if (_tileSchema._mapType == GoogleV3TileSource.MapTypeId.HYBRID) { string overlayurl = _tileSchema.overlayUrlTemplates[r.Next(0, _tileSchema.overlayUrlTemplates.Length - 1)]; overlayurl = string.Format(overlayurl, tileInfo.Index.Col, tileInfo.Index.Row, tileInfo.Index.Level, calculateSParam(tileInfo.Index.Col, tileInfo.Index.Row)); byte[] overlayData = Fetch(overlayurl); using (MemoryStream ms = new MemoryStream(data)) { using (MemoryStream ms2 = new MemoryStream(overlayData)) { System.Drawing.Image img = new System.Drawing.Bitmap(ms); System.Drawing.Image overlayimg = new System.Drawing.Bitmap(ms2); using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(img)) { g.DrawImage(overlayimg, 0, 0); } using (MemoryStream newMs = new MemoryStream()) { ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg); System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; EncoderParameters myEncoderParameters = new EncoderParameters(1); EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 90L); myEncoderParameters.Param[0] = myEncoderParameter; img.Save(newMs, jgpEncoder, myEncoderParameters); newMs.Seek(0, SeekOrigin.Begin); data = new byte[newMs.Length]; newMs.Read(data, 0, data.Length); newMs.Close(); } ms2.Close(); } ms.Close(); } } return data; }
public WmsTileSchema(string name, BruTile.Extent extent, string srs, string format, int tileSize, double highestResUnitsPerPixel, AxisDirection axis) { // Make us a new extent that is square double minx, miny, maxx, maxy, size; if (extent.Width > extent.Height) { minx = extent.MinX; maxx = extent.MaxX; size = maxx - minx; miny = extent.MinY; maxy = miny + size; } else { miny = extent.MinY; maxy = extent.MaxY; size = maxy - miny; minx = extent.MinX; maxx = minx + size; } int count = 0; double unitsPerPixel = size / tileSize; do { Resolutions[count.ToString(CultureInfo.InvariantCulture)] = new Resolution {Id = count.ToString(CultureInfo.InvariantCulture), UnitsPerPixel = unitsPerPixel}; count++; //Resolutions.Add(unitsPerPixel); unitsPerPixel /= 2; } while (unitsPerPixel > highestResUnitsPerPixel); BruTile.Extent myExtent = new BruTile.Extent(minx, miny, maxx, maxy); //Extent myExtent = extent; Width = tileSize; Height = tileSize; Extent = myExtent; OriginX = myExtent.MinX; OriginY = myExtent.MinY; Name = name; Format = format; Axis = axis; Srs = srs; }
private static ITileSchema CreateSchema() { var resoltions = new[] { 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.02197265625, 0.010986328125, 0.0054931640625, 0.00274658203125, 0.001373291015625, 0.0006866455078125, 0.00034332275390625, 0.000171661376953125, 0.0000858306884765629, 0.0000429153442382814, 0.0000214576721191407, 0.0000107288360595703 }; const string format = "jpeg"; var schema = new TileSchema(); var count = 0; foreach (double resolution in resoltions) { var levelId = count.ToString(); schema.Resolutions[levelId] = new Resolution { Id = levelId, UnitsPerPixel = resolution}; count++; } schema.Height = 512; schema.Width = 512; schema.Extent = new Extent(-180, -90, 180, 90); schema.OriginX = -180; schema.OriginY = 90; schema.Name = "ESRI"; schema.Format = format; schema.YAxis = YAxis.OSM; schema.Srs = "EPSG:4326"; return schema; }
private static SharpMap.Map InitializeMapGoogle(BruTile.Web.GoogleMapType mt) { var map = new SharpMap.Map(); BruTile.Web.GoogleRequest req; BruTile.ITileSource tileSource; SharpMap.Layers.TileLayer tileLayer; if (mt == (BruTile.Web.GoogleMapType.GoogleSatellite | BruTile.Web.GoogleMapType.GoogleLabels)) { req = new BruTile.Web.GoogleRequest(BruTile.Web.GoogleMapType.GoogleSatellite); tileSource = new BruTile.Web.GoogleTileSource(req); tileLayer = new SharpMap.Layers.TileLayer(tileSource, "TileLayer - " + BruTile.Web.GoogleMapType.GoogleSatellite); map.Layers.Add(tileLayer); req = new BruTile.Web.GoogleRequest(BruTile.Web.GoogleMapType.GoogleLabels); tileSource = new BruTile.Web.GoogleTileSource(req); mt = BruTile.Web.GoogleMapType.GoogleLabels; } else { req = new BruTile.Web.GoogleRequest(mt); tileSource = new BruTile.Web.GoogleTileSource(req); } tileLayer = new SharpMap.Layers.TileLayer(tileSource, "TileLayer - " + mt); map.Layers.Add(tileLayer); map.ZoomToBox(tileLayer.Envelope); return map; }
private static SharpMap.Map InitializeMapBing(BruTile.Web.BingMapType mt) { var map = new SharpMap.Map(); var tileLayer = new SharpMap.Layers.TileLayer(new BruTile.Web.BingTileSource(BruTile.Web.BingRequest.UrlBingStaging, "", mt), "TileLayer - Bing " + mt); map.BackgroundLayer.Add(tileLayer); map.ZoomToBox(tileLayer.Envelope); return map; }
public TileSourceWrapper(BruTile.ITileSource tileSource) { _tileSource = tileSource; _properties = new Dictionary<string, object>(); }
public byte[] GetTile(BruTile.TileInfo tileInfo) { return _tileSource.GetTile(tileInfo); }
/// <summary> /// Creates an instance of this class /// </summary> /// <param name="tileSource">the source to get the tiles from</param> /// <param name="layerName">name of the layer</param> /// <param name="transparentColor">transparent color off</param> /// <param name="showErrorInTile">generate an error tile if it could not be retrieved from source</param> /// <param name="fileCache">If the layer should use a file-cache so store tiles, set this to a fileCacheProvider. Set to null to avoid filecache</param> /// <param name="imgFormat">Set the format of the tiles to be used</param> public TileLayer(ITileSource tileSource, string layerName, Color transparentColor, bool showErrorInTile, BruTile.Cache.FileCache fileCache, ImageFormat imgFormat) { _source = tileSource; LayerName = layerName; if (!transparentColor.IsEmpty) _imageAttributes.SetColorKey(transparentColor, transparentColor); _showErrorInTile = showErrorInTile; #if !PocketPC _imageAttributes.SetWrapMode(WrapMode.TileFlipXY); #endif _fileCache = fileCache; _ImageFormat = imgFormat; }
private static Extent FromBruTileExtent(BruTile.Extent extent) { return new Extent(extent.MinX, extent.MinY, extent.MaxX, extent.MaxY); }