Español

Cómo: Cambiar el color de relleno y contorno de las entidades de un servicio de entidades de ArcGIS Server con un add-in de ArcMap

Resumen

Esta muestra de código muestra cómo cambiar el color de relleno y contorno de las entidades de un servicio de entidades de ArcGIS Server utilizando un add-in de ArcMap. Los cambios pueden conservarse en ArcMap guardando el documento de ArcMap.

Procedimiento

El siguiente código muestra cómo cambiar el color de relleno y contorno de entidades poligonales de un servicio de entidades de ArcGIS Server.

Código de muestra (C#)

 using System;
 using System.Collections.Generic;
 using System.Text;
 using System.IO;
 using ESRI.ArcGIS.esriSystem;
 using ESRI.ArcGIS.ArcMapUI;
 using ESRI.ArcGIS.Geodatabase;
 using ESRI.ArcGIS.Carto;
 using ESRI.ArcGIS.Geometry;
 using ESRI.ArcGIS.Display;

 namespace Add_FeatureService_to_ArcMap
 {
     public class Add_FeatureService_to_ArcMap : ESRI.ArcGIS.Desktop.AddIns.Button
     {
         public Add_FeatureService_to_ArcMap()
         {
         }

         protected override void OnClick()
         {
             IMxDocument pMx = ArcMap.Application.Document as IMxDocument;
             //Puede reemplazar esta url por su propia url de servicio de entidades. En mi caso, tengo un servicio de entidades de ArcGIS Server que contiene entidades poligonales en la URL que se muestra a continuación:
             string url = "http://localhost:6080/arcgis/rest/services/FC1_Polygons/FeatureServer";
             IPropertySet pFeatServProp = new PropertySet();
             pFeatServProp.SetProperty("DATABASE", url);
             IWorkspaceFactory pFeatWorkspaceFact = new FeatureServiceWorkspaceFactory() as IWorkspaceFactory;
             IFeatureWorkspace pFeatureWorkspace = pFeatWorkspaceFact.Open(pFeatServProp, 0) as IFeatureWorkspace;
             IFeatureClass pfeatClass = pFeatureWorkspace.OpenFeatureClass("0") as IFeatureClass;
             // "0" corresponde a la primera capa con índice/id 0; del mismo modo, "1", "2" se refieren al id. de capa 1
             // y al id. de capa 2; puede comprobar el extremo rest del servicio para tener un parámetro válido en OpenFeatureClass.

             IFeatureLayer pfeatLayer = new FeatureLayer();
             pfeatLayer.FeatureClass = pfeatClass;
             pfeatLayer.Name = "Sami_FC1";
             IGroupLayer pGroupLayer = new GroupLayer();
             pGroupLayer.Name = "GroupLayerName";

             // -------------------------------- RENDERIZADOR ---------------------------------------------------  
             // Crear colores RGB extrayendo valores de un objeto Color de Microsoft
             System.Drawing.Color c = System.Drawing.Color.FromName("SlateBlue");
             IRgbColor rgbColor_Fill = CreateRgbColor(c);

             System.Drawing.Color c2 = System.Drawing.Color.FromName("Red");
             IRgbColor rgbColor_Outline = CreateRgbColor(c2);

             ISimpleLineSymbol simpleLineSymbol_Outline = new SimpleLineSymbol();
             simpleLineSymbol_Outline.Color = rgbColor_Outline;
             simpleLineSymbol_Outline.Width = 3.0;

             ISimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol();
             simpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;
             simpleFillSymbol.Color = rgbColor_Fill;
             simpleFillSymbol.Outline = simpleLineSymbol_Outline;

             ISimpleRenderer simpleRenderer = new SimpleRenderer();
             simpleRenderer.Label = "Simple Renderer";
             simpleRenderer.Symbol = simpleFillSymbol as ISymbol;
             IFeatureRenderer featureRenderer = simpleRenderer as IFeatureRenderer;

             IGeoFeatureLayer geoFeatureLayer = pfeatLayer as IGeoFeatureLayer;
             geoFeatureLayer.Renderer = featureRenderer;

             //--------------------------------  FIN DEL  RENDERIZADOR ---------------------------------------------------

             pGroupLayer.Add(pfeatLayer);
             pMx.FocusMap.AddLayer(pGroupLayer);

             ArcMap.Application.CurrentTool = null;
         }
         // Método utilizado para extraer componentes RGB del objeto Color de Microsoft (una estructura)
         protected static IRgbColor CreateRgbColor(System.Drawing.Color c)
         {
             // Tenga en cuenta que c es un objeto color de Microsoft que consta de 4 componentes: alpha, R, G, B
             // Los componentes R, G, B del objeto System.Drawing.Color se asignan al objeto ArcObjects IRgbColor
             IRgbColor rgb = new RgbColorClass();
             rgb.Red = c.R; rgb.Green = c.G; rgb.Blue = c.B;
             rgb.UseWindowsDithering = false;
             return rgb;
         }
     }
}

Información relacionada