コード例 #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();
        }
コード例 #2
0
        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();
        }
コード例 #3
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");
            }
        }