示例#1
0
        protected override async void OnClick()
        {
            var usHighwaysLayer =
                MapView.Active.Map.GetLayersAsFlattenedList().FirstOrDefault((fl) => fl.Name == "USHighways") as
                FeatureLayer;

            if (usHighwaysLayer == null)
            {
                MessageBox.Show("Please add the US HIghways layer to the TOC", "Cannot find US Highways");
                return;
            }

            await QueuedTask.Run(() => {
                if (_layerCimRenderer == null)
                {
                    _layerCimRenderer = CreateniqueValueRendererForUSHighwaysUsingDefinition(usHighwaysLayer);
                }
                //For examination in the debugger...
                var renderer = usHighwaysLayer.GetRenderer();
                //We will use a UniqueValue renderer on the US Highways
                if ((renderer as CIMUniqueValueRenderer) == null)
                {
                    usHighwaysLayer.SetRenderer(_layerCimRenderer);
                }

                //Now, create the symbol levels
                SetUpSymbolLevelsForUSHighways(usHighwaysLayer);
            });
        }
示例#2
0
        protected override async void OnClick()
        {
            var usStatesLayer =
                MapView.Active.Map.GetLayersAsFlattenedList().FirstOrDefault((fl) => fl.Name == "States") as
                FeatureLayer;

            if (usStatesLayer == null)
            {
                MessageBox.Show("Please add the US States layer to the TOC", "Cannot find US States");
                return;
            }

            await QueuedTask.Run(() => {
                if (_layerCimRenderer == null)
                {
                    _layerCimRenderer = CreateniqueValueRendererForUSStatesUsingDefinition(usStatesLayer);
                }
                //For examination in the debugger...
                var renderer   = usStatesLayer.GetRenderer();
                string xmlDef  = renderer.ToXml();
                string xmlDef2 = _layerCimRenderer.ToXml();

                usStatesLayer.SetRenderer(_layerCimRenderer);
            });
        }
        public async Task ApplyColorRampAsync(FeatureLayer featureLayer, string[] fields)
        {
            StyleProjectItem style =
                Project.Current.GetItems <StyleProjectItem>().FirstOrDefault(s => s.Name == "ColorBrewer Schemes (RGB)");

            if (style == null)
            {
                return;
            }
            var colorRampList = await QueuedTask.Run(() => style.SearchColorRamps("Red-Gray (10 Classes)"));

            if (colorRampList == null || colorRampList.Count == 0)
            {
                return;
            }
            CIMColorRamp cimColorRamp = null;
            CIMRenderer  renderer     = null;
            await QueuedTask.Run(() =>
            {
                cimColorRamp    = colorRampList[0].ColorRamp;
                var rendererDef = new UniqueValueRendererDefinition(fields, null, cimColorRamp);
                renderer        = featureLayer?.CreateRenderer(rendererDef);
                featureLayer?.SetRenderer(renderer);
            });
        }
        private void GetRenderer(CIMRenderer renderer, XmlNode node, string outputDir)
        {
            XmlNode nd               = node.SelectSingleNode("//URI");
            string  _URIPath         = nd.InnerText.Replace("CIMPATH=", "");
            string  _outPath         = System.IO.Path.Combine(outputDir, System.IO.Path.GetDirectoryName(_URIPath));
            string  _URIFileName     = System.IO.Path.GetFileNameWithoutExtension(_URIPath);
            string  _imgPath         = System.IO.Path.Combine(_outPath, "img\\" + _URIFileName);
            string  _imgPathRelative = "/img" + _URIFileName;
            string  _imgFullPath     = "";

            switch (renderer.GetType().Name)
            {
            case "CIMSimpleRenderer":
                var simpleRenderer = renderer as CIMSimpleRenderer;

                //CIMSymbol symbol = SymbolFactory.Instance.ConstructPointSymbol(ColorFactory.Instance.GreenRGB, 1.0, SimpleMarkerStyle.Circle);
                //You can generate a swatch for a text symbols also.
                _imgFullPath = System.IO.Path.Combine(_imgPath, _URIFileName + "_Default.png");
                BitmapSource bs_simpleRenderer = SavePicturetoFile3(simpleRenderer.Symbol.Symbol, _imgFullPath);
                XmlNode      nd_simpleRenderer = node.SelectSingleNode("Renderer/Symbol/Symbol");
                XmlNode      nd2 = nd_simpleRenderer.AppendChild(XmlUtility.CreateTextElement(nd_simpleRenderer, "picture", ToBase64(bs_simpleRenderer, "PNG")));
                XmlNode      nd5 = nd_simpleRenderer.AppendChild(XmlUtility.CreateTextElement(nd2, "picturePath", _imgPathRelative + _URIFileName + "_Default.png"));
                bs_simpleRenderer = null;
                //nd_simpleRenderer.AppendChild(nd2);
                break;

            case "CIMUniqueValueRenderer":
                _imgFullPath = System.IO.Path.Combine(_imgPath, _URIFileName + "_Default.png");
                var          uniqueValueRenderer    = renderer as CIMUniqueValueRenderer;
                BitmapSource bs_uniqueValueRenderer = SavePicturetoFile3(uniqueValueRenderer.DefaultSymbol.Symbol, _imgFullPath);
                XmlNode      nd_uniqueValueRenderer = node.SelectSingleNode("Renderer/DefaultSymbol/Symbol");
                XmlNode      nd3 = nd_uniqueValueRenderer.AppendChild(XmlUtility.CreateTextElement(nd_uniqueValueRenderer, "picture", ToBase64(bs_uniqueValueRenderer, "PNG")));
                XmlNode      nd6 = nd_uniqueValueRenderer.AppendChild(XmlUtility.CreateTextElement(nd3, "picturePath", _imgPathRelative + _URIFileName + "_Default.png"));
                bs_uniqueValueRenderer = null;
                foreach (CIMUniqueValueGroup uvg in uniqueValueRenderer.Groups)
                {
                    foreach (CIMUniqueValueClass uvc in uvg.Classes)
                    {
                        _imgFullPath = System.IO.Path.Combine(_imgPath, _URIFileName + "_" + (string.IsNullOrEmpty(uvc.Label) ? System.IO.Path.GetRandomFileName() : MakeValidFileName(uvc.Label) + ".png"));
                        BitmapSource bs_uniqueValueClass = SavePicturetoFile3(uvc.Symbol.Symbol, _imgFullPath);
                        XmlNode      nd_uniqueValueClass = node.SelectSingleNode("//CIMUniqueValueClass[Label='" + uvc.Label + "']");
                        XmlNode      nd4 = nd_uniqueValueClass.AppendChild(XmlUtility.CreateTextElement(nd_uniqueValueClass, "picture", ToBase64(bs_uniqueValueClass, "PNG")));
                        XmlNode      nd7 = nd_uniqueValueClass.AppendChild(XmlUtility.CreateTextElement(nd4, "picturePath", _imgPathRelative + _URIFileName + "_" + (string.IsNullOrEmpty(uvc.Label) ? System.IO.Path.GetRandomFileName() : MakeValidFileName(uvc.Label) + ".png")));
                        bs_uniqueValueClass = null;
                    }
                }
                break;

            default:
                break;
            }
        }
        protected override async void OnClick() {
         var usHighwaysLayer =
                MapView.Active.Map.GetLayersAsFlattenedList().FirstOrDefault((fl) => fl.Name == "USHighways") as
                    FeatureLayer;
         if (usHighwaysLayer == null) {
                MessageBox.Show("Please add the US HIghways layer to the TOC", "Cannot find US Highways");
                return;
            }

            await QueuedTask.Run(() => {
                if (_layerCimRenderer == null)
                    _layerCimRenderer = CreateniqueValueRendererForUSHighwaysUsingDefinition(usHighwaysLayer);
                //For examination in the debugger...
                var renderer = usHighwaysLayer.GetRenderer();
                //We will use a UniqueValue renderer on the US Highways
                if ((renderer as CIMUniqueValueRenderer) == null)
                    usHighwaysLayer.SetRenderer(_layerCimRenderer);

                //Now, create the symbol levels
                SetUpSymbolLevelsForUSHighways(usHighwaysLayer);
            });
        }
        protected override async void OnClick()
        {
            var usStatesLayer =
                MapView.Active.Map.GetLayersAsFlattenedList().FirstOrDefault((fl) => fl.Name == "States") as
                FeatureLayer;

            if (usStatesLayer == null)
            {
                MessageBox.Show("Please add the 'States' layer to the TOC - with a 'STATE_NAME' field containing state names.", "Cannot find US States");
                return;
            }

            await QueuedTask.Run(() => {
                if (_layerCimRenderer == null)
                {
                    _layerCimRenderer = CreateUniqueValueRendererForUSStates();
                }
                //For examination in the debugger...
                var renderer = usStatesLayer.GetRenderer();
                usStatesLayer.SetRenderer(_layerCimRenderer);
            });
        }
        protected override async void OnClick() {

            var usStatesLayer =
                MapView.Active.Map.GetLayersAsFlattenedList().FirstOrDefault((fl) => fl.Name == "States") as
                    FeatureLayer;
            if (usStatesLayer == null) {
                MessageBox.Show("Please add the 'States' layer to the TOC - with a 'STATE_NAME' field containing state names.", "Cannot find US States");
                return;
            }

            await QueuedTask.Run(() => {
                if (_layerCimRenderer == null)
                    _layerCimRenderer = CreateUniqueValueRendererForUSStates();
                //For examination in the debugger...
                var renderer = usStatesLayer.GetRenderer();
                string xmlDef = renderer.ToXml();
                string xmlDef2 = _layerCimRenderer.ToXml();

                usStatesLayer.SetRenderer(_layerCimRenderer);
            });

        }
        private ImageSource getSymbolPicture(CIMRenderer renderer)
        {
            ImageSource _symbolPicture = null;

            switch (renderer.GetType().Name)
            {
            case "CIMSimpleRenderer":
                var simpleRenderer = renderer as CIMSimpleRenderer;

                //CIMSymbol symbol = SymbolFactory.Instance.ConstructPointSymbol(ColorFactory.Instance.GreenRGB, 1.0, SimpleMarkerStyle.Circle);
                //You can generate a swatch for a text symbols also.
                var si = new SymbolStyleItem()
                {
                    Symbol      = simpleRenderer.Symbol.Symbol,
                    PatchHeight = 32,
                    PatchWidth  = 32
                };
                _symbolPicture = si.PreviewImage;

                break;

            case "CIMUniqueValueRenderer":
                var uniqueValueRenderer = renderer as CIMUniqueValueRenderer;
                var si1 = new SymbolStyleItem()
                {
                    Symbol      = uniqueValueRenderer.DefaultSymbol.Symbol,
                    PatchHeight = 32,
                    PatchWidth  = 32
                };
                _symbolPicture = si1.PreviewImage;

                break;

            default:
                break;
            }
            return(_symbolPicture);
        }
示例#9
0
        //Exporting logic
        public static async Task Export3DMarkerSymbols()
        {
            var activeMapView = ArcGIS.Desktop.Mapping.MapView.Active;

            if (activeMapView == null)
            {
                return;
            }

            CIMObjectMarker3D mrkr3D = null;
            var selectedLayers       = activeMapView.GetSelectedLayers();

            if (selectedLayers.Count == 0)
            {
                ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Select at least one point feature layer in the Contents pane.");
                return;
            }

            string outputFolder = SetOutputFolder();

            if (outputFolder == "")
            {
                return;
            }

            await QueuedTask.Run(() =>
            {
                foreach (Layer layer in selectedLayers)
                {
                    if (layer is FeatureLayer)
                    {
                        FeatureLayer ftrLayer       = layer as FeatureLayer;
                        CIMRenderer currentRenderer = ftrLayer.GetRenderer();

                        if (currentRenderer is CIMSimpleRenderer)
                        {
                            //Get simple renderer from feature layer
                            CIMSimpleRenderer simpleRenderer = currentRenderer as CIMSimpleRenderer;
                            CIMPointSymbol ptSymbol          = simpleRenderer.Symbol.Symbol as CIMPointSymbol;
                            if (ptSymbol != null)
                            {
                                var symbolLayers = ptSymbol.SymbolLayers;
                                int count        = 0;
                                foreach (CIMSymbolLayer s in symbolLayers)
                                {
                                    mrkr3D = s as CIMObjectMarker3D;
                                    if (mrkr3D != null)
                                    {
                                        string output = outputFolder + "\\" + ftrLayer.Name + "_" + count.ToString() + ".json";
                                        if (File.Exists(output))
                                        {
                                            ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Following file already exists: " + output);
                                        }
                                        else
                                        {
                                            bool success = mrkr3D.ExportWeb3DObjectResource(output);
                                            if (!success)
                                            {
                                                //Export will fail if the 3D marker symbol being exported is a restricted symbol
                                                ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Export failed for: " + output);
                                            }
                                        }
                                        count++;
                                    }
                                }
                            }
                        }

                        else if (currentRenderer is CIMUniqueValueRenderer)
                        {
                            //Get unique value renderer from feature layer
                            CIMUniqueValueRenderer uniqueRenderer = currentRenderer as CIMUniqueValueRenderer;
                            CIMUniqueValueGroup[] uv_group        = uniqueRenderer.Groups;
                            foreach (CIMUniqueValueGroup v in uv_group)
                            {
                                CIMUniqueValueClass[] uv_classes = v.Classes;
                                foreach (CIMUniqueValueClass uv_class in uv_classes)
                                {
                                    CIMPointSymbol ptSymbol = uv_class.Symbol.Symbol as CIMPointSymbol;
                                    if (ptSymbol != null)
                                    {
                                        var symbolLayers = ptSymbol.SymbolLayers;
                                        int count        = 0;
                                        foreach (CIMSymbolLayer s in symbolLayers)
                                        {
                                            mrkr3D = s as CIMObjectMarker3D;
                                            if (mrkr3D != null)
                                            {
                                                string output = outputFolder + "\\" + ftrLayer.Name + "_" + uv_class.Label + "_" + count.ToString() + ".json";
                                                if (File.Exists(output))
                                                {
                                                    ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Following file already exists: " + output);
                                                }
                                                else
                                                {
                                                    bool success = mrkr3D.ExportWeb3DObjectResource(output);
                                                    if (!success)
                                                    {
                                                        //Export will fail if the 3D marker symbol being exported is a restricted symbol
                                                        ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Export failed for: " + output);
                                                    }
                                                }
                                                count++;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            });
        }
        public async Task <string> GenerateGmlAsync()
        {
            MapView            mapView       = MapView.Active;
            Map                map           = mapView?.Map;
            SpatialReference   mapSpatRef    = map?.SpatialReference;
            MySpatialReference myCyclSpatRef = _settings.CycloramaViewerCoordinateSystem;

            SpatialReference cyclSpatRef = (myCyclSpatRef == null)
        ? mapSpatRef
        : (myCyclSpatRef.ArcGisSpatialReference ?? (await myCyclSpatRef.CreateArcGisSpatialReferenceAsync()));

            Unit   unit   = cyclSpatRef?.Unit;
            double factor = unit?.ConversionFactor ?? 1;
            Color  color  = Color.White;
            string result =
                "<wfs:FeatureCollection xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:wfs=\"http://www.opengis.net/wfs\" xmlns:gml=\"http://www.opengis.net/gml\">";

            await QueuedTask.Run(async() =>
            {
                SpatialReference layerSpatRef       = Layer.GetSpatialReference();
                IList <IList <Segment> > geometries = new List <IList <Segment> >();
                ICollection <Viewer> viewers        = _viewerList.Viewers;

                foreach (var viewer in viewers)
                {
                    double distance = viewer.OverlayDrawDistance;
                    RecordingLocation recordingLocation = viewer.Location;

                    if (recordingLocation != null)
                    {
                        if (cyclSpatRef?.IsGeographic ?? true)
                        {
                            distance = distance * factor;
                        }
                        else
                        {
                            distance = distance / factor;
                        }

                        double x    = recordingLocation.X;
                        double y    = recordingLocation.Y;
                        double xMin = x - distance;
                        double xMax = x + distance;
                        double yMin = y - distance;
                        double yMax = y + distance;

                        Envelope envelope     = EnvelopeBuilder.CreateEnvelope(xMin, yMin, xMax, yMax, cyclSpatRef);
                        Envelope copyEnvelope = envelope;

                        if (layerSpatRef.Wkid != 0)
                        {
                            ProjectionTransformation projection = ProjectionTransformation.Create(cyclSpatRef, layerSpatRef);
                            copyEnvelope = GeometryEngine.Instance.ProjectEx(envelope, projection) as Envelope;
                        }

                        Polygon copyPolygon = PolygonBuilder.CreatePolygon(copyEnvelope, layerSpatRef);
                        ReadOnlyPartCollection polygonParts = copyPolygon.Parts;
                        IEnumerator <ReadOnlySegmentCollection> polygonSegments = polygonParts.GetEnumerator();
                        IList <Segment> segments = new List <Segment>();

                        while (polygonSegments.MoveNext())
                        {
                            ReadOnlySegmentCollection polygonSegment = polygonSegments.Current;

                            foreach (Segment segment in polygonSegment)
                            {
                                segments.Add(segment);
                            }
                        }

                        geometries.Add(segments);
                    }
                }

                GC.Collect();
                Polygon polygon = PolygonBuilder.CreatePolygon(geometries, layerSpatRef);

                using (FeatureClass featureClass = Layer?.GetFeatureClass())
                {
                    string uri = Layer?.URI;

                    SpatialQueryFilter spatialFilter = new SpatialQueryFilter
                    {
                        FilterGeometry      = polygon,
                        SpatialRelationship = SpatialRelationship.Intersects,
                        SubFields           = "*"
                    };

                    using (RowCursor existsResult = featureClass?.Search(spatialFilter, false))
                    {
                        while (existsResult?.MoveNext() ?? false)
                        {
                            Row row       = existsResult.Current;
                            long objectId = row.GetObjectID();

                            if ((_selection == null) || (!_selection.Contains(objectId)))
                            {
                                Feature feature = row as Feature;
                                var fieldvalues = new Dictionary <string, string> {
                                    { FieldUri, uri }, { FieldObjectId, objectId.ToString() }
                                };

                                Geometry geometry         = feature?.GetShape();
                                GeometryType geometryType = geometry?.GeometryType ?? GeometryType.Unknown;
                                Geometry copyGeometry     = geometry;

                                if ((geometry != null) && (layerSpatRef.Wkid != 0))
                                {
                                    ProjectionTransformation projection = ProjectionTransformation.Create(layerSpatRef, cyclSpatRef);
                                    copyGeometry = GeometryEngine.Instance.ProjectEx(geometry, projection);
                                }

                                if (copyGeometry != null)
                                {
                                    string gml = string.Empty;

                                    switch (geometryType)
                                    {
                                    case GeometryType.Envelope:
                                        break;

                                    case GeometryType.Multipatch:
                                        break;

                                    case GeometryType.Multipoint:
                                        break;

                                    case GeometryType.Point:
                                        MapPoint point = copyGeometry as MapPoint;

                                        if (point != null)
                                        {
                                            gml =
                                                $"<gml:Point {GmlDimension(copyGeometry)}><gml:coordinates>{await GmlPointAsync(point)}</gml:coordinates></gml:Point>";
                                        }

                                        break;

                                    case GeometryType.Polygon:
                                        Polygon polygonGml = copyGeometry as Polygon;

                                        if (polygonGml != null)
                                        {
                                            ReadOnlyPartCollection polygonParts = polygonGml.Parts;
                                            IEnumerator <ReadOnlySegmentCollection> polygonSegments = polygonParts.GetEnumerator();

                                            while (polygonSegments.MoveNext())
                                            {
                                                ReadOnlySegmentCollection segments = polygonSegments.Current;

                                                gml =
                                                    $"{gml}<gml:MultiPolygon><gml:PolygonMember><gml:Polygon {GmlDimension(copyGeometry)}><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>";

                                                for (int i = 0; i < segments.Count; i++)
                                                {
                                                    if (segments[i].SegmentType == SegmentType.Line)
                                                    {
                                                        MapPoint polygonPoint = segments[i].StartPoint;
                                                        gml = $"{gml}{((i == 0) ? string.Empty : " ")}{await GmlPointAsync(polygonPoint)}";

                                                        if (i == (segments.Count - 1))
                                                        {
                                                            polygonPoint = segments[i].EndPoint;
                                                            gml          = $"{gml} {await GmlPointAsync(polygonPoint)}";
                                                        }
                                                    }
                                                }

                                                gml =
                                                    $"{gml}</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></gml:PolygonMember></gml:MultiPolygon>";
                                            }
                                        }
                                        break;

                                    case GeometryType.Polyline:
                                        Polyline polylineGml = copyGeometry as Polyline;

                                        if (polylineGml != null)
                                        {
                                            ReadOnlyPartCollection polylineParts = polylineGml.Parts;
                                            IEnumerator <ReadOnlySegmentCollection> polylineSegments = polylineParts.GetEnumerator();

                                            while (polylineSegments.MoveNext())
                                            {
                                                ReadOnlySegmentCollection segments = polylineSegments.Current;
                                                gml =
                                                    $"{gml}<gml:MultiLineString><gml:LineStringMember><gml:LineString {GmlDimension(copyGeometry)}><gml:coordinates>";

                                                for (int i = 0; i < segments.Count; i++)
                                                {
                                                    if (segments[i].SegmentType == SegmentType.Line)
                                                    {
                                                        MapPoint linePoint = segments[i].StartPoint;
                                                        gml = $"{gml}{((i == 0) ? string.Empty : " ")}{await GmlPointAsync(linePoint)}";

                                                        if (i == (segments.Count - 1))
                                                        {
                                                            linePoint = segments[i].EndPoint;
                                                            gml       = $"{gml} {await GmlPointAsync(linePoint)}";
                                                        }
                                                    }
                                                }

                                                gml = $"{gml}</gml:coordinates></gml:LineString></gml:LineStringMember></gml:MultiLineString>";
                                            }
                                        }

                                        break;

                                    case GeometryType.Unknown:
                                        break;
                                    }

                                    string fieldValueStr = fieldvalues.Aggregate(string.Empty,
                                                                                 (current, fieldvalue) =>
                                                                                 string.Format("{0}<{1}>{2}</{1}>", current, fieldvalue.Key, fieldvalue.Value));
                                    result =
                                        $"{result}<gml:featureMember><xs:Geometry>{fieldValueStr}{gml}</xs:Geometry></gml:featureMember>";
                                }
                            }
                        }
                    }
                }

                CIMRenderer renderer             = Layer.GetRenderer();
                CIMSimpleRenderer simpleRenderer = renderer as CIMSimpleRenderer;
                CIMUniqueValueRenderer uniqueValueRendererRenderer = renderer as CIMUniqueValueRenderer;
                CIMSymbolReference symbolRef = simpleRenderer?.Symbol ?? uniqueValueRendererRenderer?.DefaultSymbol;
                CIMSymbol symbol             = symbolRef?.Symbol;
                CIMColor cimColor            = symbol?.GetColor();
                double[] colorValues         = cimColor?.Values;

                int red   = ((colorValues != null) && (colorValues.Length >= 1)) ? ((int)colorValues[0]) : 255;
                int green = ((colorValues != null) && (colorValues.Length >= 2)) ? ((int)colorValues[1]) : 255;
                int blue  = ((colorValues != null) && (colorValues.Length >= 3)) ? ((int)colorValues[2]) : 255;
                int alpha = ((colorValues != null) && (colorValues.Length >= 4)) ? ((int)colorValues[3]) : 255;
                color     = Color.FromArgb(alpha, red, green, blue);
            });

            GmlChanged = (Color != color);
            Color      = color;
            string newGml = $"{result}</wfs:FeatureCollection>";

            GmlChanged = ((newGml != Gml) || GmlChanged);
            return(Gml = newGml);
        }
示例#11
0
        public void btnChangeLineSymbology(object sender, EventArgs e)
        {
            var lineSymbology = ((RadioButton)sender).Tag;

            QueuedTask.Run(() =>
            {
                //Get the active map's definition - CIMMap.

                if (lineSymbology.ToString() == "None")
                {
                    var cimMap = MapView.Active.Map.GetDefinition();
                    //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer;
                    var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolyline);
                    SimpleRendererDefinition renderer = new SimpleRendererDefinition()
                    {
                        SymbolTemplate = new CIMSymbolReference()
                        {
                            Symbol = SymbolFactory.Instance.ConstructLineSymbol(
                                ColorFactory.Instance.WhiteRGB, 0.5, SimpleLineStyle.Null)
                        }
                    };
                    var r = lyr.CreateRenderer(renderer);
                    lyr.SetRenderer(r);
                }
                if (lineSymbology.ToString() == "Gray")
                {
                    var cimMap = MapView.Active.Map.GetDefinition();
                    //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer;
                    var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolyline);
                    SimpleRendererDefinition renderer = new SimpleRendererDefinition()
                    {
                        SymbolTemplate = new CIMSymbolReference()
                        {
                            Symbol = SymbolFactory.Instance.ConstructLineSymbol(
                                ColorFactory.Instance.GreyRGB, 0.5, SimpleLineStyle.Solid)
                        }
                    };
                    var r = lyr.CreateRenderer(renderer);
                    lyr.SetRenderer(r);
                }
                if (lineSymbology.ToString() == "Multicolor")
                {
                    var cimMap = MapView.Active.Map.GetDefinition();
                    //FeatureLayer a = MapView.Active.Map.Layers[1] as FeatureLayer;
                    var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.ShapeType == esriGeometryType.esriGeometryPolyline);

                    CIMUniqueValueRenderer renderer = lyr.GetRenderer() as CIMUniqueValueRenderer;

                    // color ramp
                    CIMICCColorSpace colorSpace = new CIMICCColorSpace()
                    {
                        URL = "Default RGB"
                    };

                    CIMRandomHSVColorRamp randomHSVColorRamp = new CIMRandomHSVColorRamp()
                    {
                        ColorSpace = colorSpace,
                        MinAlpha   = 100,
                        MaxAlpha   = 100,
                        MinH       = 0,
                        MaxH       = 360,
                        MinS       = 15,
                        MaxS       = 30,
                        MinV       = 99,
                        MaxV       = 100,
                        Seed       = 0,
                    };

                    UniqueValueRendererDefinition uvr = new UniqueValueRendererDefinition()
                    {
                        ValueFields = new string[] { "OBJECTID" }, //multiple fields in the array if needed.
                        ColorRamp   = randomHSVColorRamp           //Specify color ramp
                    };


                    CIMRenderer r = lyr.CreateRenderer(uvr);


                    var t = r.ToXml();
                    Debug.WriteLine(t);

                    lyr.SetRenderer(r);
                }
            });
        }