예제 #1
0
        public static IConfig GetConfig(EnumBruTileLayer enumBruTileLayer)
        {
            IConfig result = new ConfigOsm(OsmMapType.Default);

            if (enumBruTileLayer == EnumBruTileLayer.OSM)
            {
                result = new ConfigOsm(OsmMapType.Default);
            }
            else if (enumBruTileLayer == EnumBruTileLayer.BingRoad)
            {
                result = new ConfigBing(BingMapType.Roads);
            }
            else if (enumBruTileLayer == EnumBruTileLayer.BingHybrid)
            {
                result = new ConfigBing(BingMapType.Hybrid);
            }
            else if (enumBruTileLayer == EnumBruTileLayer.BingAerial)
            {
                result = new ConfigBing(BingMapType.Aerial);
            }
            else
            {
                result = new ChinaConfig(enumBruTileLayer);
            }
            return result;
        }
예제 #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            extent.Add(double.Parse(textBox3.Text));
            extent.Add(double.Parse(textBox4.Text));
            extent.Add(double.Parse(textBox5.Text));
            extent.Add(double.Parse(textBox2.Text));

            var tile = comboBox1.SelectedItem;

            if (tile == null)
            {
                MessageBox.Show("请选择至少一种地图");
                return;
            }
            EnumBruTileLayer enumBruTileLayer = (EnumBruTileLayer)Enum.Parse(typeof(EnumBruTileLayer), tile.ToString());
            IConfig          config           = ConfigHelper.GetConfig(enumBruTileLayer);
            string           cacheDir         = CacheSettings.GetCacheFolder();

            tileSource   = config.CreateTileSource();
            schema       = tileSource.Schema;
            tileProvider = (WebTileProvider)tileSource.Provider;
            fileCache    = CacheDirectory.GetFileCache(cacheDir, config, enumBruTileLayer);

            _tiles = GetTile();


            if (_tiles.ToList().Count > 0)
            {
                DownloadTiles();
            }
        }
예제 #3
0
        // for wmts
        private static string GetCacheDirectory(ITileSource tileSource, EnumBruTileLayer layerType, string baseCacheDir)
        {
            var    name           = (tileSource is BruTile.Web.HttpTileSource ? tileSource.Name : ((WmtsTileSchema)tileSource.Schema).Layer);
            string cacheDirectory = string.Format("{0}{1}{2}{3}{4}", baseCacheDir, Path.DirectorySeparatorChar, layerType, Path.DirectorySeparatorChar, name);

            return(cacheDirectory);
        }
예제 #4
0
        // used by WMTS
        public BruTileLayer(IApplication application, ITileSource tileSource)
        {
            LayerWeight       = 110;
            Cached            = true;
            _enumBruTileLayer = EnumBruTileLayer.WMTS;
            _application      = application;

            var mxdoc = (IMxDocument)_application.Document;

            _map         = mxdoc.FocusMap;
            _cacheDir    = CacheSettings.GetCacheFolder();
            _tileTimeOut = ConfigurationHelper.GetTileTimeOut();

            var spatialReferences = new SpatialReferences();

            _tileSource           = tileSource;
            _schema               = _tileSource.Schema;
            _dataSpatialReference = spatialReferences.GetSpatialReference(_schema.Srs);
            _envelope             = GetDefaultEnvelope();

            if (_map.SpatialReference == null)
            {
                // zet dan de spatial ref...
                _map.SpatialReference = _dataSpatialReference;
            }

            // If there is only one layer in the TOC zoom to this layer...
            if (_map.LayerCount == 0)
            {
                _envelope.Project(_map.SpatialReference);
                ((IActiveView)_map).Extent = _envelope;
            }

            _displayFilter = new TransparencyDisplayFilterClass();
        }
예제 #5
0
        public static IConfig GetConfig(EnumBruTileLayer enumBruTileLayer)
        {
            IConfig result = new ConfigOsm(OsmMapType.Default);

            if (enumBruTileLayer == EnumBruTileLayer.OSM)
            {
                result = new ConfigOsm(OsmMapType.Default);
            }
            else if (enumBruTileLayer == EnumBruTileLayer.BingRoad)
            {
                result = new ConfigBing(BingMapType.Roads);
            }
            else if (enumBruTileLayer == EnumBruTileLayer.BingHybrid)
            {
                result = new ConfigBing(BingMapType.Hybrid);
            }
            else if (enumBruTileLayer == EnumBruTileLayer.BingAerial)
            {
                result = new ConfigBing(BingMapType.Aerial);
            }
            else
            {
                result = new ChinaConfig(enumBruTileLayer);
            }
            return(result);
        }
예제 #6
0
        //public static IConfig GetTmsConfig(string url, bool overwriteUrls)
        //{
        //    return new ConfigTms(url, overwriteUrls);
        //}

        //public static IConfig GetConfig(EnumBruTileLayer enumBruTileLayer, string url, bool overwriteUrls)
        //{
        //    IConfig result;

        //    if (enumBruTileLayer == EnumBruTileLayer.TMS)
        //    {
        //        result = new ConfigTms(url, overwriteUrls);
        //    }
        //    else if (enumBruTileLayer == EnumBruTileLayer.InvertedTMS)
        //    {
        //        result = new ConfigInvertedTMS(url);
        //    }
        //    else
        //    {
        //        result = new ConfigOsm(OsmMapType.Default);
        //    }

        //    return result;
        //}

        public static IConfig GetConfig(EnumBruTileLayer enumBruTileLayer)
        {
            //IConfig result = new ConfigOsm(OsmMapType.Default);
            IConfig result = new ChinaConfig(enumBruTileLayer);

            //if (enumBruTileLayer == EnumBruTileLayer.OSM)
            //{
            //    result = new ConfigOsm(OsmMapType.Default);
            //}
            //else if (enumBruTileLayer == EnumBruTileLayer.BingRoad)
            //{
            //    result = new ConfigBing(BingMapType.Roads);
            //}
            //else if (enumBruTileLayer == EnumBruTileLayer.BingHybrid)
            //{
            //    result = new ConfigBing(BingMapType.Hybrid);
            //}
            //else if (enumBruTileLayer == EnumBruTileLayer.BingAerial)
            //{
            //    result = new ConfigBing(BingMapType.Aerial);
            //}
            //else
            //{
            //result = new ChinaConfig(enumBruTileLayer);
            //}
            return(result);
        }
예제 #7
0
        private static string GetCacheDirectory(IConfig config, EnumBruTileLayer layerType, string baseCacheDir)
        {
            string cacheDirectory = String.Format("{0}{1}{2}", baseCacheDir, Path.DirectorySeparatorChar, layerType);

            if (layerType == EnumBruTileLayer.TMS || layerType == EnumBruTileLayer.InvertedTMS)
            {
                string url = null;
                if (layerType == EnumBruTileLayer.TMS)
                {
                    url = ((ConfigTms)config).Url;
                }
                else if (layerType == EnumBruTileLayer.InvertedTMS)
                {
                    if (config is ConfigInvertedTMS)
                    {
                        url = ((ConfigInvertedTMS)config).Url;
                    }
                    else if (config is NaverConfig)
                    {
                        url = ((NaverConfig)config).Url;
                    }
                    else if (config is DaumConfig)
                    {
                        url = ((DaumConfig)config).Url;
                        var idx = url.LastIndexOf('.');
                        url = url.Substring(0, idx);
                    }
                    else if (config is BaiduConfig)
                    {
                        url = ((BaiduConfig)config).Url;
                        url = url.Replace("?", "");
                    }
                    else if (config is TileLayerConfig)
                    {
                        url = ((TileLayerConfig)config).Url;
                        url = url.Replace("?", "");
                    }
                }

                string service = url.Substring(7, url.Length - 7);
                service = service.Replace(@"/", "-");
                service = service.Replace(":", "-");

                if (service.EndsWith("-"))
                {
                    service = service.Substring(0, service.Length - 1);
                }
                cacheDirectory = string.Format("{0}{1}{2}{3}{4}", baseCacheDir, Path.DirectorySeparatorChar, layerType, Path.DirectorySeparatorChar, service);
            }
            else if (layerType == EnumBruTileLayer.Giscloud)
            {
                var layerId = ((ConfigGisCloud)config).LayerId;
                cacheDirectory = string.Format("{0}{1}{2}{3}{4}", baseCacheDir, Path.DirectorySeparatorChar, "giscloud", Path.DirectorySeparatorChar, layerId);
            }

            return(cacheDirectory);
        }
예제 #8
0
        public static IConfig GetConfig(EnumBruTileLayer enumBruTileLayer)
        {
            IConfig result = new ConfigOsm(OsmMapType.Default);

            if (enumBruTileLayer == EnumBruTileLayer.OSM)
            {
                result = new ConfigOsm(OsmMapType.Default);
            }
            return(result);
        }
 public AddBruTileLayerCommandBase(string category, string caption, string message, string name, Bitmap bitmap, EnumBruTileLayer enumBruTileLayer)
 {
     m_category = category;
     m_caption = caption;
     m_message = message;
     m_toolTip = message;
     m_name = name;
     m_bitmap = bitmap;
     _enumBruTileLayer = enumBruTileLayer;
 }
예제 #10
0
 // used by WmsC
 public BruTileLayer(IApplication application, IConfig config, EnumBruTileLayer enumBrutileLayer)
 {
     ShowTips          = false;
     Name              = "BruTile";
     Cached            = false;
     _application      = application;
     _config           = config;
     _enumBruTileLayer = enumBrutileLayer;
     InitializeLayer();
 }
예제 #11
0
 public AddBruTileLayerCommandBase(string category, string caption, string message, string name, Bitmap bitmap, EnumBruTileLayer enumBruTileLayer)
 {
     m_category        = category;
     m_caption         = caption;
     m_message         = message;
     m_toolTip         = message;
     m_name            = name;
     m_bitmap          = bitmap;
     _enumBruTileLayer = enumBruTileLayer;
 }
예제 #12
0
        // used by bing initializer
        public BruTileLayer(IApplication application, EnumBruTileLayer enumBruTileLayer)
        {
            ShowTips = false;
            Name     = "BruTile";
            Cached   = false;
            _config  = ConfigHelper.GetConfig(enumBruTileLayer);

            _application      = application;
            _enumBruTileLayer = enumBruTileLayer;
            InitializeLayer();
        }
예제 #13
0
 public AddTmsLayerCommandBase(string category, string caption, string message, string name, Bitmap bitmap, string url, EnumBruTileLayer enumBruTileLayer, string auth = null)
 {
     _auth             = auth;
     m_category        = category;
     m_caption         = caption;
     m_message         = message;
     m_toolTip         = message;
     m_name            = name;
     m_bitmap          = bitmap;
     _url              = url;
     _enumBruTileLayer = enumBruTileLayer;
 }
예제 #14
0
        // used in the add services dialog
        public BruTileLayer(IApplication app, EnumBruTileLayer enumBruTileLayer, string tmsUrl, bool overwriteUrls)
        {
            ShowTips = false;
            Name     = "BruTile";

            Cached  = false;
            _config = ConfigHelper.GetConfig(enumBruTileLayer, tmsUrl, overwriteUrls);

            _application      = app;
            _enumBruTileLayer = enumBruTileLayer;
            InitializeLayer();
        }
예제 #15
0
        // used in the add services dialog
        public BruTileLayer(IApplication app, EnumBruTileLayer enumBruTileLayer, string tmsUrl, bool overwriteUrls)
        {
            ShowTips = false;
            Name = "BruTile";

            Cached = false;
            _config = ConfigHelper.GetConfig(enumBruTileLayer, tmsUrl, overwriteUrls);

            _application = app;
            _enumBruTileLayer = enumBruTileLayer;
            InitializeLayer();
        }
예제 #16
0
        // used by bing initializer
        public BruTileLayer(IApplication application,EnumBruTileLayer enumBruTileLayer)
        {
            //var config = ConfigurationHelper.GetConfig();
            //var bingToken=config.AppSettings.Settings["BingToken"].Value;
            // var bingUrl = config.AppSettings.Settings["BingUrl"].Value;

            ShowTips = false;
            Name = "BruTile";
            Cached = false;
            _config = ConfigHelper.GetConfig(enumBruTileLayer);

            _application = application;
            _enumBruTileLayer = enumBruTileLayer;
            InitializeLayer();
        }
예제 #17
0
        // used by bing initializer
        public BruTileLayer(IApplication application, EnumBruTileLayer enumBruTileLayer)
        {
            //var config = ConfigurationHelper.GetConfig();
            //var bingToken=config.AppSettings.Settings["BingToken"].Value;
            // var bingUrl = config.AppSettings.Settings["BingUrl"].Value;

            ShowTips = false;
            Name     = "BruTile";
            Cached   = false;
            _config  = ConfigHelper.GetConfig(enumBruTileLayer);

            _application      = application;
            _enumBruTileLayer = enumBruTileLayer;
            InitializeLayer();
        }
예제 #18
0
        public static IConfig GetConfig(EnumBruTileLayer enumBruTileLayer, string url, bool overwriteUrls)
        {
            IConfig result;

            if (enumBruTileLayer == EnumBruTileLayer.TMS)
            {
                result = new ConfigTms(url, overwriteUrls);
            }
            else if (enumBruTileLayer == EnumBruTileLayer.InvertedTMS)
            {
                result = new ConfigInvertedTMS(url);
            }
            else
            {
                result = new ConfigOsm(OsmMapType.Default);
            }

            return result;
        }
예제 #19
0
        public static IConfig GetConfig(EnumBruTileLayer enumBruTileLayer, string url, bool overwriteUrls)
        {
            IConfig result;

            if (enumBruTileLayer == EnumBruTileLayer.TMS)
            {
                result = new ConfigTms(url, overwriteUrls);
            }
            else if (enumBruTileLayer == EnumBruTileLayer.InvertedTMS)
            {
                result = new ConfigInvertedTMS(url);
            }
            else
            {
                result = new ConfigOsm(OsmMapType.Default);
            }

            return(result);
        }
예제 #20
0
        public static FileCache GetFileCache(string baseCacheDir, IConfig config, EnumBruTileLayer enumBruTileLayer)
        {
            var schema = config.CreateTileSource().Schema;

            var cacheDirType = GetCacheDirectory(config, enumBruTileLayer, baseCacheDir);

            var format = schema.Format;

            if (format.Contains(@"image/"))
            {
                format = format.Substring(6, schema.Format.Length - 6);
            }
            if (format.Contains("png8"))
            {
                format = format.Replace("png8", "png");
            }
            var fileCache = new FileCache(cacheDirType, format);

            return(fileCache);
        }
예제 #21
0
        public static FileCache GetFileCache(string baseCacheDir, IConfig config,EnumBruTileLayer enumBruTileLayer)
        {
            var schema = config.CreateTileSource().Schema;

            var cacheDirType = GetCacheDirectory(config, enumBruTileLayer, baseCacheDir);

            var format = schema.Format;

            if (format.Contains(@"image/"))
            {
                format = format.Substring(6, schema.Format.Length - 6);
            }
            if (format.Contains("png8"))
            {
                format = format.Replace("png8", "png");
            }
            var fileCache = new FileCache(cacheDirType, format);

            return fileCache;
        }
예제 #22
0
        private void WriteProviderXml(string name, string url, EnumBruTileLayer enumBruTileLayer)
        {
            var xml = @"<?xml version='1.0' encoding='utf-8' ?><Services>";

            xml += String.Format(@"<TileMapService title='{0}' version='1.0.0' href='{1}' type='{2}'/>", name, url, enumBruTileLayer);
            xml += "</Services>";

            var xmlfile = _servicesDir + Path.DirectorySeparatorChar + name + ".xml";

            if (!File.Exists(xmlfile))
            {
                var tw = new StreamWriter(xmlfile);
                tw.WriteLine(xml);
                tw.Close();
            }
            else
            {
                MessageBox.Show(string.Format("Provider {0} does already exist.", name));
            }
        }
예제 #23
0
        private void button2_Click(object sender, EventArgs e)
        {
            var tile = comboBox1.SelectedItem;

            if (tile == null)
            {
                MessageBox.Show("请选择至少一种地图");
                return;
            }
            EnumBruTileLayer enumBruTileLayer = (EnumBruTileLayer)Enum.Parse(typeof(EnumBruTileLayer), tile.ToString());
            IConfig          config           = ConfigHelper.GetConfig(enumBruTileLayer);

            tileSource = config.CreateTileSource();
            schema     = tileSource.Schema;
            var env = Projector.ProjectEnvelope(view.Extent, schema.Srs);

            textBox3.Text = env.XMin.ToString();
            textBox4.Text = env.XMax.ToString();
            textBox5.Text = env.YMin.ToString();
            textBox2.Text = env.YMax.ToString();
        }
예제 #24
0
        private static string GetCacheDirectory(IConfig config, EnumBruTileLayer layerType, string baseCacheDir)
        {
            string cacheDirectory = String.Format("{0}{1}{2}", baseCacheDir, System.IO.Path.DirectorySeparatorChar, layerType);

            if (layerType == EnumBruTileLayer.TMS || layerType == EnumBruTileLayer.InvertedTMS)
            {
                string url = (layerType == EnumBruTileLayer.TMS ? ((ConfigTms)config).Url : ((ConfigInvertedTMS)config).Url);

                string service = url.Substring(7, url.Length - 7);
                service = service.Replace(@"/", "-");
                service = service.Replace(":", "-");

                if (service.EndsWith("-"))
                {
                    service = service.Substring(0, service.Length - 1);
                }
                cacheDirectory = String.Format("{0}{1}{2}{3}{4}", baseCacheDir, System.IO.Path.DirectorySeparatorChar, layerType, System.IO.Path.DirectorySeparatorChar, service);
            }

            return(cacheDirectory);
        }
예제 #25
0
        private static string GetCacheDirectory(IConfig config, EnumBruTileLayer layerType, string baseCacheDir)
        {
            string cacheDirectory = String.Format("{0}{1}{2}", baseCacheDir, System.IO.Path.DirectorySeparatorChar, layerType);

            if (layerType == EnumBruTileLayer.TMS || layerType == EnumBruTileLayer.InvertedTMS)
            {
                string url = (layerType == EnumBruTileLayer.TMS ? ((ConfigTms)config).Url : ((ConfigInvertedTMS)config).Url);

                string service = url.Substring(7, url.Length - 7);
                service = service.Replace(@"/", "-");
                service = service.Replace(":", "-");

                if (service.EndsWith("-"))
                {
                    service = service.Substring(0, service.Length - 1);
                }
                cacheDirectory = String.Format("{0}{1}{2}{3}{4}", baseCacheDir, System.IO.Path.DirectorySeparatorChar, layerType, System.IO.Path.DirectorySeparatorChar, service);
            }

            return cacheDirectory;
        }
예제 #26
0
        public void Load(IVariantStream stream)
        {
            try
            {
                Name              = (string)stream.Read();
                _visible          = (bool)stream.Read();
                _enumBruTileLayer = (EnumBruTileLayer)stream.Read();

                Logger.Debug("Load layer " + Name + ", type: " + _enumBruTileLayer.ToString());

                switch (_enumBruTileLayer)
                {
                case EnumBruTileLayer.TMS:
                    var url = (string)stream.Read();
                    _config = ConfigHelper.GetTmsConfig(url, true);
                    Logger.Debug("Url: " + url);
                    break;

                case EnumBruTileLayer.InvertedTMS:
                    var urlInverted = (string)stream.Read();
                    Logger.Debug("Url: " + urlInverted);
                    _config = ConfigHelper.GetConfig(EnumBruTileLayer.InvertedTMS, urlInverted, true);
                    break;

                default:
                    _config = ConfigHelper.GetConfig(_enumBruTileLayer);
                    break;
                }

                InitializeLayer();
                // get the active map later when
                _map = null;
            }
            catch (Exception ex)
            {
                Logger.Debug("Error loading custom layer: " + ex.Message);
            }
        }
예제 #27
0
        private void WriteProviderXml(string name, string url, EnumBruTileLayer enumBruTileLayer)
        {
            var xml=@"<?xml version='1.0' encoding='utf-8' ?><Services>";
            xml+=String.Format(@"<TileMapService title='{0}' version='1.0.0' href='{1}' type='{2}'/>",name,url,enumBruTileLayer);
            xml += "</Services>";

            var xmlfile = _servicesDir + Path.DirectorySeparatorChar + name + ".xml";
            if (!File.Exists(xmlfile))
            {
                var tw = new StreamWriter(xmlfile);
                tw.WriteLine(xml);
                tw.Close();
            }
            else
            {
                MessageBox.Show(string.Format("Provider {0} does already exist.", name));
            }
        }
예제 #28
0
        // used by wmts
        public static FileCache GetFileCache(string baseCacheDir, ITileSource tileSource, EnumBruTileLayer enumBruTileLayer)
        {
            var schema = tileSource.Schema;

            var cacheDirType = GetCacheDirectory(tileSource, enumBruTileLayer, baseCacheDir);

            Logger.Debug("Cache directory: " + cacheDirType);

            // todo: support other image formats as well...
            var fileCache = new FileCache(cacheDirType, tileSource.Schema.Format);

            return(fileCache);
        }
예제 #29
0
        // for wmts
        private static string GetCacheDirectory(ITileSource tileSource, EnumBruTileLayer layerType, string baseCacheDir)
        {
            string cacheDirectory = string.Format("{0}{1}{2}{3}{4}", baseCacheDir, Path.DirectorySeparatorChar, layerType, Path.DirectorySeparatorChar, tileSource.Title);

            return(cacheDirectory);
        }
예제 #30
0
 // used by WmsC
 public BruTileLayer(IApplication application, IConfig config)
 {
     ShowTips = false;
     Name = "BruTile";
     Cached = false;
     _application = application;
     _config = config;
     _enumBruTileLayer = EnumBruTileLayer.WMSC;
     InitializeLayer();
 }
예제 #31
0
        public void Load(IVariantStream stream)
        {
            try
            {
                Name = (string)stream.Read();
                _visible = (bool)stream.Read();
                _enumBruTileLayer = (EnumBruTileLayer)stream.Read();

                Logger.Debug("Load layer " + Name + ", type: " + _enumBruTileLayer.ToString());

                switch (_enumBruTileLayer)
                {
                    case EnumBruTileLayer.TMS:
                        var url = (string)stream.Read();
                        _config = ConfigHelper.GetTmsConfig(url, true);
                        Logger.Debug("Url: " + url);
                        break;
                    case EnumBruTileLayer.InvertedTMS:
                        var urlInverted = (string)stream.Read();
                        Logger.Debug("Url: " + urlInverted);
                        _config = ConfigHelper.GetConfig(EnumBruTileLayer.InvertedTMS, urlInverted, true);
                        break;

                    default:
                        _config = ConfigHelper.GetConfig(_enumBruTileLayer);
                        break;
                }

                InitializeLayer();
                // get the active map later when
                _map = null;
            }
            catch (Exception ex)
            {
                Logger.Debug("Error loading custom layer: " + ex.Message);
            }
        }
예제 #32
0
 public ChinaConfig(EnumBruTileLayer mapType)
 {
     _mapType = mapType;
 }
예제 #33
0
 public ChinaConfig(EnumBruTileLayer mapType)
 {
     _mapType = mapType;
 }