示例#1
0
        /// <summary>
        /// Creates an image to export.
        /// </summary>
        /// <param name="exportItem"></param>
        /// <param name="fileinfo"></param>
        /// <returns>Image</returns>
        public static Image GetImage(MapExportItem exportItem)
        {
            MapExporter mapExporter = new MapExporter(exportItem);

            mapExporter.AddWMTSLayers(exportItem.wmtsLayers);
            mapExporter.AddWMSLayers(exportItem.wmsLayers);
            mapExporter.AddArcGISLayers(exportItem.arcgisLayers);
            mapExporter.AddVectorLayers(exportItem.vectorLayers);

            double left   = exportItem.bbox[0];
            double right  = exportItem.bbox[1];
            double bottom = exportItem.bbox[2];
            double top    = exportItem.bbox[3];

            Envelope envelope = new Envelope(left, right, bottom, top);

            mapExporter.map.ZoomToBox(envelope);

            Image i = mapExporter.map.GetMap(exportItem.resolution);

            Bitmap src = new Bitmap(i);

            src.SetResolution(exportItem.resolution, exportItem.resolution);

            Bitmap target = new Bitmap(src.Size.Width, src.Size.Height);

            target.SetResolution(exportItem.resolution, exportItem.resolution);

            Graphics g = Graphics.FromImage(target);

            g.FillRectangle(new SolidBrush(Color.White), 0, 0, target.Width, target.Height);
            g.DrawImage(src, 0, 0);
            return(target);
        }
示例#2
0
        /// <summary>
        /// Create a new ExportMap object.
        /// </summary>
        /// <param name="exportItem"></param>
        public MapExporter(MapExportItem exportItem)
        {
            this.exportItem = exportItem;
            var size = new Size(exportItem.size[0], exportItem.size[1]);

            Map.Configure();
            this.map = new MapThrowsException(size);
        }
示例#3
0
        /// <summary>
        /// Create a worldfile for georeferencing.
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="exportItem"></param>
        public static byte[] CreateWorldFile(MapExportItem exportItem)
        {
            double left   = exportItem.bbox[0];
            double right  = exportItem.bbox[1];
            double bottom = exportItem.bbox[2];
            double top    = exportItem.bbox[3];

            /*
             * Line 1: A: pixel size in the x-direction in map units/pixel
             * Line 2: D: rotation about y-axis
             * Line 3: B: rotation about x-axis
             * Line 4: E: pixel size in the y-direction in map units, almost always negative[3]
             * Line 5: C: x-coordinate of the center of the upper left pixel
             * Line 6: F: y-coordinate of the center of the upper left pixel
             */
            double mapWidth   = Math.Abs(left - right);
            double mapHeight  = Math.Abs(top - bottom);
            double pixelSizeX = mapWidth / exportItem.size[0];
            double pixelSizeY = (-1) * (mapHeight / exportItem.size[1]);
            double x          = exportItem.bbox[0];
            double y          = exportItem.bbox[3];

            MemoryStream memoryStream = new MemoryStream();
            TextWriter   textWriter   = new StreamWriter(memoryStream);

            textWriter.WriteLine(pixelSizeX.ForceDecimalPoint());
            textWriter.WriteLine(0);
            textWriter.WriteLine(0);
            textWriter.WriteLine(pixelSizeY.ForceDecimalPoint());
            textWriter.WriteLine(x.ForceDecimalPoint());
            textWriter.WriteLine(y.ForceDecimalPoint());

            textWriter.Flush();
            memoryStream.Flush();

            byte[] bytes = memoryStream.ToArray();

            memoryStream.Close();
            textWriter.Close();

            return(bytes);
        }