Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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");
        }
Ejemplo n.º 3
0
        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");
        }
Ejemplo n.º 4
0
        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");
        }
Ejemplo n.º 5
0
        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");
        }
Ejemplo n.º 6
0
        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"));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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");
        }
Ejemplo n.º 9
0
        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");
        }
Ejemplo n.º 10
0
        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();
        }