HOW TO
In diesem Codebeispiel wird gezeigt, wie mit einem ArcMap-Add-in die Füllfarbe und Umrissfarbe von Features in einem ArcGIS-Server-Feature-Service geändert werden. Die Änderungen können durch Speichern des ArcMap-Dokuments in ArcMap beibehalten werden.
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; //Sie können diese URL durch eine eigene Feature-Service-URL ersetzen. Ich selbst habe einen ArcGIS-Server-Feature-Service, der Polygon-Features unter der folgenden URL enthält: 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" entspricht dem ersten Layer mit dem/der Index/ID 0. Entsprechend referenzieren "1", "2" die Layer-ID 1 // und die Layer-ID 2. Sie sollten den REST-Endpunkt des Dienstes überprüfen, damit die "OpenFeatureClass" einen gültigen Parameter enthält. IFeatureLayer pfeatLayer = new FeatureLayer(); pfeatLayer.FeatureClass = pfeatClass; pfeatLayer.Name = "Sami_FC1"; IGroupLayer pGroupLayer = new GroupLayer(); pGroupLayer.Name = "GroupLayerName"; // -------------------------------- RENDERER --------------------------------------------------- // Erstellen von RGB-Farben durch den Abruf von Werten aus einem Color-Objekt von 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; //-------------------------------- RENDERER BEENDEN--------------------------------------------------- pGroupLayer.Add(pfeatLayer); pMx.FocusMap.AddLayer(pGroupLayer); ArcMap.Application.CurrentTool = null; } // Methode zum Extrahieren von RGB-Komponenten aus dem Color-Objekt (einer Struktur) von Microsoft protected static IRgbColor CreateRgbColor(System.Drawing.Color c) { // "c" ist ein Color-Objekt von Microsoft mit vier Komponenten: alpha, R, G, B // Die Komponenten R, G und B des System.Drawing.Color-Objekts werden dem ArcObjects-IRgbColor-Objekt zugewiesen IRgbColor rgb = new RgbColorClass(); rgb.Red = c.R; rgb.Green = c.G; rgb.Blue = c.B; rgb.UseWindowsDithering = false; return rgb; } } }
Hilfe von ArcGIS-Expert*innen erhalten
Die Esri Support-App herunterladen