private void AddListPointSymbolizerLayers(Map map, PointAlignment mode) { var pts = GetSymbolizerPoints(mode); var vLyr = new VectorLayer("ListPoint with Pps and Cps", new GeometryFeatureProvider(pts.AsEnumerable())); var pps = SharpMap.Rendering.Symbolizer.PathPointSymbolizer.CreateSquare(new System.Drawing.Pen(System.Drawing.Color.Red, 2), new System.Drawing.SolidBrush( System.Drawing.Color.DodgerBlue), 20); var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer { Halo = 1, HaloBrush = new System.Drawing.SolidBrush(System.Drawing.Color.WhiteSmoke), Foreground = new System.Drawing.SolidBrush(System.Drawing.Color.Black), Font = new System.Drawing.Font("Arial", 12), CharacterIndex = 65 }; var lps = new SharpMap.Rendering.Symbolizer.ListPointSymbolizer { pps, cps }; vLyr.Style.PointSymbolizer = lps; map.Layers.Add(vLyr); vLyr = new VectorLayer("ReferencePoint", new GeometryFeatureProvider(pts.AsEnumerable())); vLyr.Style.PointSize = 4f; vLyr.Style.PointColor = Brushes.Yellow; map.Layers.Add(vLyr); }
public void TestCharacterPointSymbolizer() { var fdt = TestData.CreatingData.CreatePointFeatureDataTableFromArrays( TestData.CreatingData.GetRandomOrdinates(50, -180, 180), TestData.CreatingData.GetRandomOrdinates(50, -90, 90), null); var geometryFeatureProvider = new SharpMap.Data.Providers.FeatureProvider(fdt); var layer = new SharpMap.Layers.VectorLayer("randompoints", geometryFeatureProvider); var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer { Halo = 1, HaloBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Wheat), //Font = new System.Drawing.Font("Arial", 12), CharacterIndex = 0xcc, }; layer.Style.PointSymbolizer = cps; var map = new SharpMap.Map(new System.Drawing.Size(720, 360)); map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save("CharacterPointSymbolizer1.bmp"); cps.Rotation = -30; cps.Offset = new System.Drawing.PointF(4, 4); map.GetMap().Save("CharacterPointSymbolizer2.bmp"); cps.Font = new System.Drawing.Font("Arial", 12); cps.Text = "ABC"; cps.Offset = System.Drawing.PointF.Empty; cps.Rotation = -90; map.GetMap().Save("CharacterPointSymbolizer3.bmp"); }
public void TestListPointSymbolizer() { var fdt = TestData.CreatingData.CreatePointFeatureDataTableFromArrays( TestData.CreatingData.GetRandomOrdinates(50, -180, 180), TestData.CreatingData.GetRandomOrdinates(50, -90, 90), null); var geometryFeatureProvider = new SharpMap.Data.Providers.GeometryFeatureProvider(fdt); var layer = new SharpMap.Layers.VectorLayer("randompoints", geometryFeatureProvider); var pps = SharpMap.Rendering.Symbolizer.PathPointSymbolizer.CreateSquare(new System.Drawing.Pen(System.Drawing.Color.Red, 2), new System.Drawing.SolidBrush( System.Drawing.Color.DodgerBlue), 20); var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer { Halo = 1, HaloBrush = new System.Drawing.SolidBrush(System.Drawing.Color.WhiteSmoke), Foreground = new System.Drawing.SolidBrush(System.Drawing.Color.Black), Font = new System.Drawing.Font("Arial", 12), CharacterIndex = 65 }; var lps = new SharpMap.Rendering.Symbolizer.ListPointSymbolizer { pps, cps }; layer.Style.PointSymbolizer = lps; var map = new SharpMap.Map(new System.Drawing.Size(720, 360)); map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save("ListPointSymbolizer1.bmp"); }
public void TestListPointSymbolizer() { var fdt = TestData.CreatingData.CreatePointFeatureDataTableFromArrays( TestData.CreatingData.GetRandomOrdinates(50, -180, 180), TestData.CreatingData.GetRandomOrdinates(50, -90, 90), null); var geometryFeatureProvider = new SharpMap.Data.Providers.FeatureProvider(fdt); var layer = new SharpMap.Layers.VectorLayer("randompoints", geometryFeatureProvider); var pps = SharpMap.Rendering.Symbolizer.PathPointSymbolizer.CreateSquare(new System.Drawing.Pen(System.Drawing.Color.Red, 2), new System.Drawing.SolidBrush( System.Drawing.Color.DodgerBlue), 20); var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer { Halo = 1, HaloBrush = new System.Drawing.SolidBrush(System.Drawing.Color.WhiteSmoke), Foreground = new System.Drawing.SolidBrush(System.Drawing.Color.Black), Font = new System.Drawing.Font("Arial", 12), CharacterIndex = 65 }; var lps = new SharpMap.Rendering.Symbolizer.ListPointSymbolizer { pps, cps }; layer.Style.PointSymbolizer = lps; var map = new SharpMap.Map(new System.Drawing.Size(720, 360)); map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save("ListPointSymbolizer1.bmp"); }
public void TestCharacterPointSymbolizer() { var fdt = TestData.CreatingData.CreatePointFeatureDataTableFromArrays( TestData.CreatingData.GetRandomOrdinates(50, -180, 180), TestData.CreatingData.GetRandomOrdinates(50, -90, 90), null); var geometryFeatureProvider = new SharpMap.Data.Providers.GeometryFeatureProvider(fdt); var layer = new SharpMap.Layers.VectorLayer("randompoints", geometryFeatureProvider); var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer { Halo = 1, HaloBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Wheat), //Font = new System.Drawing.Font("Arial", 12), CharacterIndex = 0xcc, }; layer.Style.PointSymbolizer = cps; var map = new SharpMap.Map(new System.Drawing.Size(720, 360)); map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save("CharacterPointSymbolizer1.bmp"); cps.Rotation = -30; cps.Offset = new System.Drawing.PointF(4, 4); map.GetMap().Save("CharacterPointSymbolizer2.bmp"); cps.Font = new System.Drawing.Font("Arial", 12); cps.Text = "ABC"; cps.Offset = System.Drawing.PointF.Empty; cps.Rotation = -90; map.GetMap().Save("CharacterPointSymbolizer3.bmp"); }
public void TestRasterPointSymbolizer() { var fdt = TestData.CreatingData.CreatePointFeatureDataTableFromArrays( TestData.CreatingData.GetRandomOrdinates(50, -180, 180), TestData.CreatingData.GetRandomOrdinates(50, -90, 90), null); var geometryFeatureProvider = new SharpMap.Data.Providers.GeometryFeatureProvider(fdt); var layer = new SharpMap.Layers.VectorLayer("randompoints", geometryFeatureProvider); var wmnStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("UnitTests.Resources.Women.png"); var wmnBmp = new System.Drawing.Bitmap(wmnStream); var rps = new SharpMap.Rendering.Symbolizer.RasterPointSymbolizer { Symbol = wmnBmp }; layer.Style.PointSymbolizer = rps; var map = new SharpMap.Map(new System.Drawing.Size(720, 360)); map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save(System.IO.Path.Combine(UnitTestsFixture.GetImageDirectory(this), "RasterPointSymbolizer1.bmp")); rps.Rotation = 45; map.GetMap().Save(System.IO.Path.Combine(UnitTestsFixture.GetImageDirectory(this), "RasterPointSymbolizer2.bmp")); rps.Rotation = 0; var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer { Halo = 1, HaloBrush = new System.Drawing.SolidBrush(System.Drawing.Color.WhiteSmoke), Foreground = new System.Drawing.SolidBrush(System.Drawing.Color.Black), Font = new System.Drawing.Font("Arial", 12), Text = "Anne", Offset = new System.Drawing.PointF(0, rps.Size.Height * 0.5f) }; var lps = new SharpMap.Rendering.Symbolizer.ListPointSymbolizer { rps, cps }; layer.Style.PointSymbolizer = lps; map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save(System.IO.Path.Combine(UnitTestsFixture.GetImageDirectory(this), "RasterPointSymbolizer3.bmp")); }
private void AddLinePointSymbolizerLayers(Map map, PointAlignment mode) { var pts = GetSymbolizerPoints(mode); var vLyr = new VectorLayer("LinePoint", new GeometryFeatureProvider(pts.AsEnumerable())); var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer { Halo = 1, HaloBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Wheat), Text = "xYz", }; vLyr.Style.PointSymbolizer = cps; map.Layers.Add(vLyr); vLyr = new VectorLayer("ReferencePoint", new GeometryFeatureProvider(pts.AsEnumerable())); vLyr.Style.PointSize = 4f; map.Layers.Add(vLyr); }
public void TestRasterPointSymbolizer() { var fdt = TestData.CreatingData.CreatePointFeatureDataTableFromArrays( TestData.CreatingData.GetRandomOrdinates(50, -180, 180), TestData.CreatingData.GetRandomOrdinates(50, -90, 90), null); var geometryFeatureProvider = new SharpMap.Data.Providers.FeatureProvider(fdt); var layer = new SharpMap.Layers.VectorLayer("randompoints", geometryFeatureProvider); var rps = new SharpMap.Rendering.Symbolizer.RasterPointSymbolizer { Symbol = Properties.Resources.Women }; layer.Style.PointSymbolizer = rps; var map = new SharpMap.Map(new System.Drawing.Size(720, 360)); map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save("RasterPointSymbolizer1.bmp"); rps.Rotation = 45; map.GetMap().Save("RasterPointSymbolizer2.bmp"); rps.Rotation = 0; var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer { Halo = 1, HaloBrush = new System.Drawing.SolidBrush(System.Drawing.Color.WhiteSmoke), Foreground = new System.Drawing.SolidBrush(System.Drawing.Color.Black), Font = new System.Drawing.Font("Arial", 12), Text = "Anne", Offset = new System.Drawing.PointF(0, rps.Size.Height * 0.5f) }; var lps = new SharpMap.Rendering.Symbolizer.ListPointSymbolizer { rps, cps }; layer.Style.PointSymbolizer = lps; map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save("RasterPointSymbolizer3.bmp"); }
public void TestRasterPointSymbolizer() { var fdt = TestData.CreatingData.CreatePointFeatureDataTableFromArrays( TestData.CreatingData.GetRandomOrdinates(50, -180, 180), TestData.CreatingData.GetRandomOrdinates(50, -90, 90), null); var geometryFeatureProvider = new SharpMap.Data.Providers.GeometryFeatureProvider(fdt); var layer = new SharpMap.Layers.VectorLayer("randompoints", geometryFeatureProvider); var rps = new SharpMap.Rendering.Symbolizer.RasterPointSymbolizer {Symbol = Properties.Resources.Women}; layer.Style.PointSymbolizer = rps; var map = new SharpMap.Map(new System.Drawing.Size(720, 360)); map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save("RasterPointSymbolizer1.bmp"); rps.Rotation = 45; map.GetMap().Save("RasterPointSymbolizer2.bmp"); rps.Rotation = 0; var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer { Halo = 1, HaloBrush = new System.Drawing.SolidBrush(System.Drawing.Color.WhiteSmoke), Foreground = new System.Drawing.SolidBrush(System.Drawing.Color.Black), Font = new System.Drawing.Font("Arial", 12), Text = "Anne", Offset = new System.Drawing.PointF(0, rps.Size.Height*0.5f) }; var lps = new SharpMap.Rendering.Symbolizer.ListPointSymbolizer { rps, cps }; layer.Style.PointSymbolizer = lps; map.Layers.Add(layer); map.ZoomToExtents(); map.GetMap().Save("RasterPointSymbolizer3.bmp"); }
private void ImageToWorld_Rotation(float deg) { var map = new Map(new Size(1000, 500)) { BackColor = System.Drawing.Color.LightSkyBlue }; map.Zoom = 1000; map.Center = new Point(25000, 75000); double mapScale = map.GetMapScale(96); double scaleX = 1; double scaleY = 1; System.Drawing.Drawing2D.Matrix mapTransform = new System.Drawing.Drawing2D.Matrix(); mapTransform.RotateAt(deg, new PointF(map.Size.Width / 2f, map.Size.Height / 2f)); map.MapTransform = mapTransform; var env = map.Envelope; // Affine Transformation: // 1: Translate to mapViewPort centre // 2: Reflect in X-Axis // 3: Rotation about mapViewPort centre // 4: Scale to map units // 5: Translate to map centre //CLOCKWISE affine transform (negate degrees) //double rad = -1 * deg * Math.PI / 180.0; //GeoAPI.CoordinateSystems.Transformations.IMathTransform trans = // new ProjNet.CoordinateSystems.Transformations.AffineTransform( // scaleX * Math.Cos(rad), // -scaleX * Math.Sin(rad), // -scaleX * Math.Cos(rad) * map.Size.Width / 2f + scaleX * Math.Sin(rad) * map.Size.Height / 2f + map.Center.X, // -scaleY * Math.Sin(rad), // -scaleY * Math.Cos(rad), // scaleY * Math.Sin(rad) * map.Size.Width / 2f + scaleY * Math.Cos(rad) * map.Size.Height / 2f + map.Center.Y); //ANTICLCOCKWISE affine transform double rad = deg * Math.PI / 180.0; GeoAPI.CoordinateSystems.Transformations.IMathTransform trans = new ProjNet.CoordinateSystems.Transformations.AffineTransform( scaleX * Math.Cos(rad), scaleX * Math.Sin(rad), -scaleX * Math.Cos(rad) * map.Size.Width / 2d - scaleX * Math.Sin(rad) * map.Size.Height / 2d + map.Center.X, scaleY * Math.Sin(rad), -scaleY * Math.Cos(rad), -scaleY * Math.Sin(rad) * map.Size.Width / 2d + scaleY * Math.Cos(rad) * map.Size.Height / 2d + map.Center.Y); // image coordindates var pts = new[] { new Point(map.Size.Width / 2f, map.Size.Height / 2f), // centre new Point(0, 0), // UL new Point(map.Size.Width, 0), // UR new Point(map.Size.Width, map.Size.Height), // LR new Point(0, map.Size.Height), // LL new Point(map.Size.Width * 0.05, map.Size.Height * 0.95), // LL inset 5% new Point(map.Size.Width * 0.95, map.Size.Height * 0.95), // LR inset 5% new Point(map.Size.Width * 0.95, map.Size.Height * 0.05), // UR inset 5% new Point(map.Size.Width * 0.05, map.Size.Height * 0.05) // UL inset 5% }; LineString lineString = new LineString(pts); NetTopologySuite.CoordinateSystems.Transformations.GeometryTransform.TransformLineString(new GeometryFactory(new PrecisionModel()), lineString, trans); // .Net Matrix //System.Drawing.Drawing2D.Matrix matrix; //matrix = new System.Drawing.Drawing2D.Matrix(); //matrix.Translate(-map.Size.Width / 2f, -map.Size.Height / 2f); // shift origin to viewport centre //matrix.Scale(1, -1, System.Drawing.Drawing2D.MatrixOrder.Append); // reflect in X axis //matrix.Rotate(deg, System.Drawing.Drawing2D.MatrixOrder.Append); // rotate about viewport centre //matrix.Scale((float)scaleX, (float)scaleY, System.Drawing.Drawing2D.MatrixOrder.Append); // scale //matrix.Translate((float)map.Center.X, (float)map.Center.Y, System.Drawing.Drawing2D.MatrixOrder.Append); // translate to map centre //var ptsF = new[] { new PointF(map.Size.Width / 2f, map.Size.Height / 2f), // centre // new PointF(0, 0), // UL // new PointF(map.Size.Width, 0), // UR // new PointF(map.Size.Width, map.Size.Height), // LR // new PointF(0, map.Size.Height) }; // LL //matrix.TransformPoints(ptsF); // validate ImageToWorld calcs with independent affine transformation Assert.IsTrue(lineString.GetPointN(0).Coordinate.Equals2D(map.ImageToWorld(new PointF(map.Size.Width / 2f, map.Size.Height / 2f), true), 0.001), "Centre: " + deg + " deg"); Assert.IsTrue(lineString.GetPointN(1).Coordinate.Equals2D(map.ImageToWorld(new PointF(0, 0), true), 0.001), "Upper Left: " + deg + " deg"); Assert.IsTrue(lineString.GetPointN(2).Coordinate.Equals2D(map.ImageToWorld(new PointF(map.Size.Width, 0), true), 0.001), "Upper Right: " + deg + " deg"); Assert.IsTrue(lineString.GetPointN(3).Coordinate.Equals2D(map.ImageToWorld(new PointF(map.Size.Width, map.Size.Height), true), 0.001), "Lower Right: " + deg + " deg"); Assert.IsTrue(lineString.GetPointN(4).Coordinate.Equals2D(map.ImageToWorld(new PointF(0, map.Size.Height), true), 0.001), "Lower Left: " + deg + " deg"); // validate map envelope: lineString outline = image extents, so lineString.EnvelopeInternal should equal map.Envelope // this test found long-standing bug in Map.Envelope calcs Assert.IsTrue(env.BottomLeft().Equals2D(lineString.EnvelopeInternal.BottomLeft(), 0.1)); Assert.IsTrue(env.TopLeft().Equals2D(lineString.EnvelopeInternal.TopLeft(), 0.1)); Assert.IsTrue(env.TopRight().Equals2D(lineString.EnvelopeInternal.TopRight(), 0.1)); Assert.IsTrue(env.BottomRight().Equals2D(lineString.EnvelopeInternal.BottomRight(), 0.1)); // visual checks var vl = new VectorLayer("Test Points"); var gp = new GeometryProvider(lineString); gp.Geometries.Add(new NetTopologySuite.Geometries.Point(25000, 75000)); vl.DataSource = gp; var cps = new SharpMap.Rendering.Symbolizer.CharacterPointSymbolizer(); cps.CharacterIndex = 221; cps.Font = new Font("Wingdings", 30); vl.Style.PointSymbolizer = cps; map.Layers.Add(vl); map.ZoomToBox(lineString.EnvelopeInternal); string fn = $"MapRotation_{deg:000}_{map.Zoom:0}_{map.MapScale:0}.bmp"; using (var img = map.GetMap(96)) img.Save(fn, System.Drawing.Imaging.ImageFormat.Bmp); map.Dispose(); }