Пример #1
0
        /// <summary>
        /// Returns an array of layer IDs.  This list of layer IDs correspond to Feature Layers.
        /// </summary>
        /// <returns>An array of layer ID <see cref="int"/>s.</returns>
        private int[] GetIdsOfLayersThatHaveMetadata()
        {
            var    mapServer      = (IMapServer3)_serverObjectHelper.ServerObject;
            string defaultMapName = mapServer.DefaultMapName;

            IMapServerInfo3 serverInfo    = mapServer.GetServerInfo(defaultMapName) as IMapServerInfo3;
            IMapLayerInfos  mapLayerInfos = serverInfo.MapLayerInfos;

            IMapLayerInfo3 layerInfo = null;
            var            output    = new List <int>(mapLayerInfos.Count);

            for (int i = 0; i < mapLayerInfos.Count; i++)
            {
                layerInfo = mapLayerInfos.get_Element(i) as IMapLayerInfo3;
                if (layerInfo.IsFeatureLayer)
                {
                    output.Add(i);
                }
            }

            // Untested.
            ////var output = from layerInfo in mapLayerInfos.AsEnumerable()
            ////             where layerInfo.IsFeatureLayer
            ////             select layerInfo.ID;

            return(output.ToArray());
        }
Пример #2
0
        /// <summary>
        /// Returns a dictionary of feature layer IDs keyed by data source names.
        /// </summary>
        /// <returns>Returns a dictionary of feature layer IDs keyed by data source names.</returns>
        private Dictionary <string, List <int> > GetDistinctDataSourceInfo()
        {
            var    mapServer      = (IMapServer3)_serverObjectHelper.ServerObject;
            string defaultMapName = mapServer.DefaultMapName;

            var msDataAccess = (IMapServerDataAccess)_serverObjectHelper.ServerObject;

            IMapServerInfo3 serverInfo    = mapServer.GetServerInfo(defaultMapName) as IMapServerInfo3;
            IMapLayerInfos  mapLayerInfos = serverInfo.MapLayerInfos;

            var output = (from layerInfo in mapLayerInfos.AsEnumerable()
                          where layerInfo.IsFeatureLayer
                          select new
            {
                Id = layerInfo.ID,
                DataSource = ((IDataset)msDataAccess.GetDataSource(defaultMapName, layerInfo.ID)).Name
            }).GroupBy(a => a.DataSource, a => a.Id).ToDictionary(g => g.Key, g => g.ToList());

            return(output);
        }