Ejemplo n.º 1
0
        public override void Reload()
        {
            DataFrames.Clear();
            _mapServerDefinition = null;

            try
            {
                _mapServerDefinition = MapServer.GetMapServerDefinition();
                string defaultName = MapServer.GetDefaultMapName();

                foreach (MapServerInfo mapServerInfo in _mapServerDefinition.MapServerInfos)
                {
                    bool         isDefault = mapServerInfo.Name == defaultName;
                    AgsDataFrame dataFrame = new AgsDataFrame(this, mapServerInfo, isDefault);

                    DataFrames.Add(dataFrame);

                    if (isDefault)
                    {
                        DefaultDataFrame = dataFrame;
                    }
                }
            }
            catch (Exception ex)
            {
                throw new AgsException("Unable to communicate with the ArcGIS Server", ex);
            }
        }
Ejemplo n.º 2
0
        public AgsMap(AgsDataFrame dataFrame, int width, int height, GeoAPI.Geometries.Envelope extent)
        {
            _service = dataFrame.Service as AgsMapService;

            DataFrame = dataFrame;
            Width     = width;
            Height    = height;
            Extent    = extent;
        }
Ejemplo n.º 3
0
        public AgsLayer(AgsDataFrame dataFrame, MapLayerInfo mapLayerInfo, MapServerLegendInfo mapServerLegendInfo, bool defaultVisible)
        {
            _service             = dataFrame.Service as AgsMapService;
            _mapLayerInfo        = mapLayerInfo;
            _mapServerLegendInfo = mapServerLegendInfo;

            DataFrame      = dataFrame;
            DefaultVisible = defaultVisible;
            ID             = mapLayerInfo.LayerID.ToString();
            Name           = mapLayerInfo.Name;

            double toPixels = 1.0 / (12 * dataFrame.Dpi);

            if (dataFrame.MapServerInfo.Units == esriUnits.esriMeters)
            {
                toPixels *= MetersPerFoot;
            }

            if (mapLayerInfo.MaxScale > 0)
            {
                MinimumPixelSize = mapLayerInfo.MaxScale * toPixels;
            }

            if (mapLayerInfo.MinScale > 0)
            {
                MaximumPixelSize = mapLayerInfo.MinScale * toPixels;
            }

            if (mapLayerInfo.IsFeatureLayer && mapLayerInfo.LayerType != "Annotation Layer" && mapLayerInfo.LayerType != "Raster Catalog Layer")
            {
                Selectable = mapLayerInfo.CanSelect;
                Fields     = new List <CommonField>();

                foreach (Field proxyField in mapLayerInfo.Fields.FieldArray)
                {
                    AgsField field = new AgsField(proxyField);
                    Fields.Add(field);

                    if (field.Type == CommonFieldType.ID)
                    {
                        FeatureIDField = field;
                    }
                    else if (field.Type == CommonFieldType.Geometry)
                    {
                        GeometryField = field;

                        switch (proxyField.GeometryDef.GeometryType)
                        {
                        case esriGeometryType.esriGeometryPoint: FeatureType = OgcGeometryType.Point; break;

                        case esriGeometryType.esriGeometryMultipoint: FeatureType = OgcGeometryType.MultiPoint; break;

                        case esriGeometryType.esriGeometryPolyline: FeatureType = OgcGeometryType.MultiLineString; break;

                        case esriGeometryType.esriGeometryPolygon: FeatureType = OgcGeometryType.MultiPolygon; break;
                        }
                    }
                }

                Legend = new AgsLegend(mapServerLegendInfo);
            }
            else
            {
                switch (mapLayerInfo.LayerType)
                {
                case "Raster Catalog Layer":
                case "Raster Layer":
                    Type = CommonLayerType.Image;
                    break;

                case "Annotation Layer": Type = CommonLayerType.Annotation; break;

                case "Group Layer": Type = CommonLayerType.Group; break;
                }
            }
        }