Exemplo n.º 1
0
        async public Task <bool> LoadAsync(IPersistStream stream)
        {
            await this.SetConnectionString((string)stream.Load("ConnectionString", ""));

            _class = new GeoServicesClass(this);
            return(await Open());
        }
Exemplo n.º 2
0
        public object Clone()
        {
            GeoServicesClass clone = new GeoServicesClass(_dataset);

            clone._clonedThemes = new List <IWebServiceTheme>();

            var themes = (_clonedThemes != null) ?
                         _clonedThemes :
                         (_dataset?._themes ?? new List <IWebServiceTheme>());

            foreach (IWebServiceTheme theme in themes)
            {
                if (theme == null || theme.Class == null)
                {
                    continue;
                }

                clone._clonedThemes.Add(LayerFactory.Create(
                                            theme.Class,
                                            theme as ILayer, clone) as IWebServiceTheme);
            }
            clone.BeforeMapRequest    = BeforeMapRequest;
            clone.AfterMapRequest     = AfterMapRequest;
            clone.ModifyResponseOuput = ModifyResponseOuput;
            return(clone);
        }
Exemplo n.º 3
0
        public GeoServicesDataset(string connection, string name)
            : this()
        {
            _connection = connection;
            _name       = name;

            _class = new GeoServicesClass(this);
        }
Exemplo n.º 4
0
        async public Task <object> GetInstanceAsync()
        {
            if (_class == null)
            {
                GeoServicesDataset dataset = new GeoServicesDataset(
                    _connectionString,
                    (String.IsNullOrWhiteSpace(_folder) ? "" : $"{_folder}/") + _name);

                await dataset.Open();

                var elements = await dataset.Elements();

                if (elements.Count == 0)
                {
                    dataset.Dispose();
                    return(null);
                }

                _class = elements[0].Class as GeoServicesClass;
            }

            return(_class);
        }
Exemplo n.º 5
0
        async public Task <bool> Open(IServiceRequestContext context)
        {
            if (_class == null)
            {
                _class = new GeoServicesClass(this);
            }
            _class.Themes.Clear();

            _themes = new List <IWebServiceTheme>();

            string serviceUrl = ServiceUrl();
            string user       = ConfigTextStream.ExtractValue(ConnectionString, "user");
            string pwd        = ConfigTextStream.ExtractValue(ConnectionString, "pwd");

            var jsonMapService = await TryPostAsync <JsonMapService>($"{serviceUrl}?f=json");

            var jsonLayers = await TryPostAsync <JsonLayers>($"{serviceUrl}/layers?f=json");

            if (jsonMapService != null)
            {
                _class.Name = jsonMapService.MapName;

                if (jsonMapService.FullExtent != null)
                {
                    _class.Envelope = new Envelope(
                        jsonMapService.FullExtent.XMin,
                        jsonMapService.FullExtent.YMin,
                        jsonMapService.FullExtent.XMax,
                        jsonMapService.FullExtent.YMax);
                }

                if (jsonMapService.SpatialReferenceInstance != null &&
                    jsonMapService.SpatialReferenceInstance.Wkid > 0)
                {
                    var sRef = gView.Framework.Geometry.SpatialReference.FromID("epsg:" + jsonMapService.SpatialReferenceInstance.Wkid);
                    this.SetSpatialReference(sRef);
                    _class.SpatialReference = sRef;
                }

                if (jsonLayers?.Layers != null)
                {
                    foreach (var jsonLayer in jsonLayers.Layers)
                    {
                        IClass           themeClass = null;
                        IWebServiceTheme theme      = null;

                        if (jsonLayer.Type.ToLower() == "feature layer")
                        {
                            themeClass = await GeoServicesFeatureClass.CreateAsync(this, jsonLayer);

                            theme = LayerFactory.Create(themeClass, _class as IWebServiceClass) as IWebServiceTheme;
                            if (theme == null)
                            {
                                continue;
                            }
                        }
                        // ToDo Raster classes

                        if (themeClass == null)
                        {
                            continue;
                        }

                        theme.Visible = true; //false;

                        _class.Themes.Add(theme);
                    }
                }
            }

            return(true);
        }