private static void PositionGeometry(UIElement renderedGeometry, IViewport viewport, IStyle style, Providers.IFeature feature) { if (feature.Geometry is Geometries.Point) { GeometryRenderer.PositionPoint(renderedGeometry, feature.Geometry as Geometries.Point, style, viewport); } if (feature.Geometry is MultiPoint) { GeometryRenderer.PositionGeometry(renderedGeometry, viewport); } if (feature.Geometry is LineString) { GeometryRenderer.PositionGeometry(renderedGeometry, viewport); } if (feature.Geometry is MultiLineString) { GeometryRenderer.PositionGeometry(renderedGeometry, viewport); } if (feature.Geometry is Polygon) { GeometryRenderer.PositionGeometry(renderedGeometry, viewport); } if (feature.Geometry is MultiPolygon) { GeometryRenderer.PositionGeometry(renderedGeometry, viewport); } if (feature.Geometry is IRaster) { GeometryRenderer.PositionRaster(renderedGeometry, feature.Geometry.GetBoundingBox(), viewport); } }
private static UIElement RenderGeometry(IViewport viewport, IStyle style, Providers.IFeature feature) { if (feature.Geometry is Geometries.Point) { return(GeometryRenderer.RenderPoint(feature.Geometry as Geometries.Point, style, viewport)); } if (feature.Geometry is MultiPoint) { return(GeometryRenderer.RenderMultiPoint(feature.Geometry as MultiPoint, style, viewport)); } if (feature.Geometry is LineString) { return(GeometryRenderer.RenderLineString(feature.Geometry as LineString, style, viewport)); } if (feature.Geometry is MultiLineString) { return(GeometryRenderer.RenderMultiLineString(feature.Geometry as MultiLineString, style, viewport)); } if (feature.Geometry is Polygon) { return(GeometryRenderer.RenderPolygon(feature.Geometry as Polygon, style, viewport)); } if (feature.Geometry is MultiPolygon) { return(GeometryRenderer.RenderMultiPolygon(feature.Geometry as MultiPolygon, style, viewport)); } if (feature.Geometry is IRaster) { return(GeometryRenderer.RenderRaster(feature.Geometry as IRaster, style, viewport)); } return(null); }
private static void RenderTile(WriteableBitmap bitmap, ITileSchema schema, IViewport viewport, MemoryCache <Feature> memoryCache) { int level = BruTile.Utilities.GetNearestLevel(schema.Resolutions, viewport.Resolution); var tiles = schema.GetTilesInView(viewport.Extent.ToExtent(), level); foreach (TileInfo tile in tiles) { var p = NativeCache.Find(tile.Index); if (p != null) { bitmap.Render(p, null); continue; } var image = memoryCache.Find(tile.Index); if (image != null) { Rect dest = WorldToView(tile.Extent, viewport); dest = GeometryRenderer.RoundToPixel(dest); //See here the clumsy way to write a bitmap in SL/WPF var path = new System.Windows.Shapes.Path(); path.Data = new RectangleGeometry { Rect = dest }; var bitmapImage = new BitmapImage(); bitmapImage.SetSource(((IRaster)image.Geometry).Data); path.Fill = new ImageBrush { ImageSource = bitmapImage }; path.CacheMode = new BitmapCache(); bitmap.Render(path, null); } } }