Ejemplo n.º 1
0
        /// <summary>
        /// 高德瓦片地图为索引图,需要先转化为RGB图像,并进行二值化
        /// </summary>
        /// <param name="path">路径(E:\\AMap20171110\\tiles\\17)</param>
        /// <returns></returns>
        public WebApiResult <string> GaodeErzhihua(GaodeErzhihuaRequest Result)
        {
            try
            {
                //高德地图瓦片相关信息获取
                String FilePath = Result.FilePath;// "E:\\AMap20171110\\tiles\\17";
                //String FilePath = "F:\\000";
                DirectoryInfo TheFolder = new DirectoryInfo(FilePath);
                FileInfo[]    file_list = GetFileList(TheFolder);
                //List<Point> TilePoints = GetTileCoor(file_list);

                for (int i = 0; i < file_list.Length; i++)
                {
                    string level = file_list[i].DirectoryName.Substring(0, file_list[i].DirectoryName.LastIndexOf("\\"));
                    level = level.Substring(level.LastIndexOf("\\"));
                    String savedir = Result.FilePath + "$erzhihua" + file_list[i].DirectoryName.Substring(file_list[i].DirectoryName.LastIndexOf("\\"));
                    if (!Directory.Exists(savedir))
                    {
                        Directory.CreateDirectory(savedir);
                    }
                    String savepath = savedir + "\\" + file_list[i].Name.Substring(0, file_list[i].Name.LastIndexOf(".") + 1) + "jpg";
                    if (File.Exists(savepath))
                    {
                        continue;
                        //File.Delete(savepath);
                    }

                    Bitmap amtile = (Bitmap)Bitmap.FromFile(file_list[i].FullName);
                    //如果原图片是索引像素格式之类的,则需要转换
                    if (IsPixelFormatIndexed(amtile.PixelFormat) || amtile.PixelFormat == PixelFormat.Format32bppArgb)
                    {
                        using (Bitmap bmp = new Bitmap(amtile.Width, amtile.Height, PixelFormat.Format32bppArgb))
                        {
                            using (Graphics g = Graphics.FromImage(bmp))
                            {
                                g.InterpolationMode  = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                                g.SmoothingMode      = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                                g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                                g.DrawImage(amtile, 0, 0);
                            }
                            amtile = (Bitmap)bmp.Clone();
                        }
                    }
                    if (Result.IsRoad == true)
                    {
                        //二值化
                        for (int m = 0; m < amtile.Height; m++)
                        {
                            for (int n = 0; n < amtile.Width; n++)
                            {
                                Color color = amtile.GetPixel(m, n);
                                Color newcolor;
                                if (color == Color.FromArgb(252, 249, 242))//高德地图北京颜色
                                {
                                    newcolor = Color.FromArgb(0, 0, 0);
                                }
                                else
                                {
                                    newcolor = Color.FromArgb(255, 255, 255);
                                }
                                amtile.SetPixel(m, n, newcolor);
                            }
                        }
                    }

                    amtile.Save(savepath, ImageFormat.Jpeg);
                }

                return(new WebApiResult <string>()
                {
                    success = 1, msg = "高德瓦片二值化完成!"
                });
            }
            catch (Exception ex)
            {
                return(new WebApiResult <string>()
                {
                    success = 0, msg = ex.ToString()
                });
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 高德瓦片地图为索引图,需要先转化为RGB图像,并进行二值化
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public WebApiResult <string> Any(GaodeErzhihuaRequest request)
        {
            ImageMosaicService service = new ImageMosaicService();

            return(service.GaodeErzhihua(request));
        }