6 votos

¿Cómo añadir una capa individual del grupo WMS a ArcMap?

Estoy intentando añadir una única capa WMS que forma parte de una capa de grupo de servicios WMS. Estoy escribiendo el código para hacer esto usando ArcObjects en C# .Net. Hasta ahora no he tenido éxito. Sólo puedo añadir la capa de grupo completa, o puedo añadir la subcapa WMS individual, pero el grupo completo también se añade.

Aquí está el código que he probado. He permitido al usuario seleccionar una capa de una lista, y este código está tratando de añadir sólo esa capa seleccionada.

    IWMSGroupLayer wmsMapLayer = new WMSMapLayerClass();
    IWMSConnectionName connName = new WMSConnectionNameClass();

    IPropertySet propSet = new PropertySetClass();
    propSet.SetProperty("URL", "http://www.___________________?");

    connName.ConnectionProperties = propSet;

    IDataLayer dataLayer = (IDataLayer)wmsMapLayer;
    dataLayer.Connect((IName)connName);

    IWMSServiceDescription serviceDesc = wmsMapLayer.WMSServiceDescription;
    IWMSLayerDescription groupDesc = serviceDesc.LayerDescription[0];

    for (int i = 0; i < groupDesc.LayerDescriptionCount - 1; i++)
    {
        IWMSLayerDescription layerDesc = groupDesc.LayerDescription[i];

        if (layerDesc.Title == lstWMSLayers.SelectedItem.ToString())//Checking if this is the selected layer
        {
            ILayer newLayer;
            IWMSLayer newWMSLayer = wmsMapLayer.CreateWMSLayer(layerDesc);
            newLayer = (ILayer)newWMSLayer;
            wmsMapLayer.InsertLayer(newLayer, 0);

            IMxDocument mxDoc = (IMxDocument)ArcMap.Application.Document;
            mxDoc.FocusMap.AddLayer((ILayer)wmsMapLayer);
            IActiveView activeView = (IActiveView)mxDoc.FocusMap;
            activeView.Refresh();
        }
    }

En ArcMap obtengo el siguiente árbol de capas

  • Capa del grupo de servicios WMS
    • Capa de SGA seleccionada
    • Grupo WMS Layer
      • Todas las capas que forman parte del servicio...

¿Alguna sugerencia?

0 votos

¿Puede añadir esa capa (y sólo esa capa) a través de la interfaz de usuario de ArcMap?

0 votos

Sí, cuando añado una capa individual a través de ArcMap, obtengo la capa del grupo de servicios WMS, y entonces sólo la capa WMS, nada más. Así que debería ser posible a través de ArcObjects también derecho?

4voto

Lucas Puntos 128

Es necesario borrar el WMS Service Group Layer antes de añadir el WMSMapLayer único.

wmsMapLayer.Clear();
wmsMapLayer.InsertLayer(newLayer, 0);

Tenga en cuenta que esto eliminará todas las capas de grupo/mapa de la capa de grupo del servicio WMS, por lo que si está añadiendo más de una, podría ser aconsejable no llamar a wmsMapLayer.Clear() en el cuerpo de su bucle. No lo he probado, ya que sólo estoy añadiendo una capa, pero tal vez en su lugar, bucle a través de groupDesc.LayerDescriptionCount y agarrar todos los objetos layerDesc que coinciden con sus criterios, a continuación, Clear() y añadir las capas WMS seleccionados de nuevo en.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X