Exemple #1
0
        private void DisplaySatelliteImage_Load(object sender, EventArgs e)
        {
            winformsMap1.MapUnit       = GeographyUnit.DecimalDegree;
            winformsMap1.CurrentExtent = new RectangleShape(-143.4, 109.3, 116.7, -76.3);
            winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean);

            WmsRasterLayer wmsImageLayer = new WmsRasterLayer(new Uri("http://howdoiwms.thinkgeo.com/WmsServer.aspx"));

            // 1.3.0 server
            //WmsRasterLayer wmsImageLayer = new WmsRasterLayer(new Uri("http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer"));
            wmsImageLayer.UpperThreshold = double.MaxValue;
            wmsImageLayer.LowerThreshold = 0;

            wmsImageLayer.Open();
            wmsImageLayer.ActiveStyleNames.Add("Simple");
            foreach (string layerName in wmsImageLayer.GetServerLayerNames())
            {
                wmsImageLayer.ActiveLayerNames.Add(layerName);
            }
            // this parameter is just optional.
            wmsImageLayer.Exceptions = "application/vnd.ogc.se_xml";

            LayerOverlay imageOverlay = new LayerOverlay();

            imageOverlay.Layers.Add("wmsImageLayer", wmsImageLayer);
            winformsMap1.Overlays.Add(imageOverlay);

            // GetRequestUrl for debug
            Debug.WriteLine(wmsImageLayer.GetRequestUrl(winformsMap1.CurrentExtent, winformsMap1.Width, winformsMap1.Height));
            wmsImageLayer.Close();

            winformsMap1.Refresh();
        }
        private void UseLayer()
        {
            mapView.Overlays.Clear();

            WmsRasterLayer wmsImageLayer = new WmsRasterLayer(new Uri("http://ows.mundialis.de/services/service"));

            wmsImageLayer.UpperThreshold = double.MaxValue;
            wmsImageLayer.LowerThreshold = 0;

            wmsImageLayer.Open();

            wmsImageLayer.ActiveLayerNames.Add("OSM-WMS");
            wmsImageLayer.ActiveStyleNames.Add("default");

            // this parameter is just optional.
            wmsImageLayer.Exceptions = "application/vnd.ogc.se_xml";

            LayerOverlay staticOverlay = new LayerOverlay();

            staticOverlay.Layers.Add("wmsImageLayer", wmsImageLayer);
            mapView.Overlays.Add(staticOverlay);
            wmsImageLayer.Close();

            mapView.Refresh();
        }
Exemple #3
0
        private void Form1_Load(object sender, EventArgs e)
        {
            winformsMap1.MapUnit = GeographyUnit.DecimalDegree;

            LayerOverlay   layerOverlay = new LayerOverlay();
            WmsRasterLayer wmsLayer     = new WmsRasterLayer(new Uri("http://howdoiwms.thinkgeo.com/WmsServer.aspx"));

            wmsLayer.ActiveLayerNames.Add("COUNTRIES02");
            wmsLayer.ActiveStyleNames.Add("Simple");
            wmsLayer.Crs          = "EPSG:4326";
            wmsLayer.OutputFormat = "image/png";
            layerOverlay.Layers.Add(wmsLayer);
            winformsMap1.Overlays.Add(layerOverlay);

            wmsLayer.Open();
            winformsMap1.CurrentExtent = wmsLayer.GetBoundingBox();
            winformsMap1.Refresh();
        }
        private void UseLayer()
        {
            wpfMap1.Overlays.Clear();

            WmsRasterLayer wmsImageLayer = new WmsRasterLayer(new Uri("http://howdoiwms.thinkgeo.com/WmsServer.aspx"));
            wmsImageLayer.UpperThreshold = double.MaxValue;
            wmsImageLayer.LowerThreshold = 0;

            wmsImageLayer.Open();
            foreach (string layerName in wmsImageLayer.GetServerLayerNames())
            {
                wmsImageLayer.ActiveLayerNames.Add(layerName);
                wmsImageLayer.ActiveStyleNames.Add("Simple");
            }
            // this parameter is just optional.
            wmsImageLayer.Exceptions = "application/vnd.ogc.se_xml";

            LayerOverlay staticOverlay = new LayerOverlay();
            staticOverlay.Layers.Add("wmsImageLayer", wmsImageLayer);
            wpfMap1.Overlays.Add(staticOverlay);
            wmsImageLayer.Close();

            wpfMap1.Refresh();
        }
Exemple #5
0
        private void DrawPreview()
        {
            if (WmsRasterLayer == null)
            {
                InitializeWmsRasterLayer();
            }
            Bitmap       previewBitmap = null;
            MemoryStream bitmapMemory  = null;

            try
            {
                WmsRasterLayer.Open();
                WmsRasterLayer.TimeoutInSecond = 30;
                WmsRasterLayer.ActiveLayerNames.Clear();
                WmsRasterLayer.ActiveLayerNames.Add(SelectedLayer.Name);

                MapEngine mapEngine = new MapEngine();
                mapEngine.StaticLayers.Add(WmsRasterLayer);
                mapEngine.CurrentExtent = WmsRasterLayer.GetBoundingBox();

                previewBitmap = new Bitmap(125, 125);
                mapEngine.DrawStaticLayers(previewBitmap, GeographyUnit.DecimalDegree);

                bitmapMemory = new MemoryStream();
                previewBitmap.Save(bitmapMemory, ImageFormat.Png);
            }
            catch (Exception ex)
            {
                GisEditor.LoggerManager.Log(LoggerLevel.Debug, ex.Message, new ExceptionInfo(ex));
                Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                {
                    SendMessageBox(ex.Message, "Warning");
                }));
            }
            finally
            {
                if (previewBitmap != null)
                {
                    previewBitmap.Dispose();
                }
                var action = new Action(() =>
                {
                    if (bitmapMemory == null || bitmapMemory.Length == 0)
                    {
                        PreviewSource = GetDefaultPreview();
                    }
                    else
                    {
                        PreviewSource = ToImageSource(bitmapMemory);
                    }
                    IsBusy = false;
                });
                if (Application.Current != null)
                {
                    Application.Current.Dispatcher.BeginInvoke(action);
                }
                else
                {
                    action();
                }
            }
        }
Exemple #6
0
        private void Connect()
        {
            if (Uri.IsWellFormedUriString(WmsServerUrl, UriKind.Absolute))
            {
                if (WmsRasterLayer == null)
                {
                    InitializeWmsRasterLayer();
                }

                IsBusy = true;
                Task.Factory.StartNew(new Action(() =>
                {
                    Collection <string> styleNames       = new Collection <string>();
                    Collection <string> outputFormats    = new Collection <string>();
                    Collection <string> serverLayerNames = new Collection <string>();

                    try
                    {
                        if (!string.IsNullOrEmpty(UserName) && !string.IsNullOrEmpty(Password))
                        {
                            WmsRasterLayer.Credentials = new NetworkCredential(UserName, Password);
                        }
                        if (!WmsRasterLayer.IsOpen)
                        {
                            WmsRasterLayer.Open();
                        }
                        styleNames       = WmsRasterLayer.GetServerStyleNames();
                        outputFormats    = WmsRasterLayer.GetServerOutputFormats();
                        serverLayerNames = WmsRasterLayer.GetServerLayerNames();
                    }
                    catch (Exception ex)
                    {
                        GisEditor.LoggerManager.Log(LoggerLevel.Debug, ex.Message, new ExceptionInfo(ex));
                        Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            SendMessageBox(ex.Message, "Warning");
                        }));
                    }
                    finally
                    {
                        var action = new Action(() =>
                        {
                            foreach (var item in styleNames)
                            {
                                styles.Add(item);
                            }
                            foreach (var item in outputFormats)
                            {
                                formats.Add(item);
                            }
                            if (serverLayerNames.Count() > 0)
                            {
                                AvailableLayers.Clear();
                                foreach (var serverLayer in serverLayerNames)
                                {
                                    if (!string.IsNullOrEmpty(serverLayer))
                                    {
                                        AvailableLayers.Add(new WmsLayerViewModel(serverLayer));
                                    }
                                }
                            }
                            IsBusy = false;
                        });
                        if (Application.Current != null)
                        {
                            Application.Current.Dispatcher.BeginInvoke(action);
                        }
                        else
                        {
                            action();
                        }
                    }
                }));
            }
            else
            {
                SendMessageBox("The server address is not valid.", "Info");
            }
        }