Esempio n. 1
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string          text = string.Empty;
            FeatureTemplate ft   = value as FeatureTemplate;

            if (ft != null)
            {
                if (ft.DrawingTool != FeatureEditTool.None)
                {
                    if (ft.DrawingTool == FeatureEditTool.Point)
                    {
                        text = string.Format(Resources.Strings.AddPointInstructions, ft.Name);
                    }
                    else
                    {
                        text = string.Format(Resources.Strings.AddShapeInstructions, ft.Name);
                    }
                }
                else
                {
                    text = ft.Name;
                }
            }

            return(text);
        }
        private void AddRecord_Click(object sender, RoutedEventArgs e)
        {
            // Create a new Graphic (represents a record in the standalone table)
            var graphic = new Graphic();

            //use PrototypeAttributes from the layer templates
            FeatureTemplate featureTemplate = null;

            if (_featureLayerTable.LayerInfo.Templates != null && _featureLayerTable.LayerInfo.Templates.Count > 0)
            {
                featureTemplate = _featureLayerTable.LayerInfo.Templates.FirstOrDefault().Value;
            }

            if (featureTemplate != null && featureTemplate.PrototypeAttributes != null)
            {
                foreach (var item in featureTemplate.PrototypeAttributes)
                {
                    graphic.Attributes[item.Key] = item.Value;
                }
            }

            // Set a specific attribute value
            graphic.Attributes["CNTRY_NAME"] = DateTime.Now.ToString();

            // Add the Graphic to the FeatureLayer
            _featureLayerTable.Graphics.Add(graphic);

            // Call Save Edits (will raise event handlers registered in the constructor).
            _featureLayerTable.SaveEdits();
        }
        // FeatureTemplate
        internal static Dictionary <string, object> ToDictionary(this FeatureTemplate template)
        {
            Dictionary <string, object> dictionary = new Dictionary <string, object>();

            if (!string.IsNullOrEmpty(template.Name))
            {
                dictionary.Add("name", template.Name);
            }
            if (!string.IsNullOrEmpty(template.Description))
            {
                dictionary.Add("description", template.Description);
            }

            // CHECK TOSTRING VALUE
            dictionary.Add("drawingTool", "esriFeatureEditTool" + template.DrawingTool.ToString());

            if (template.PrototypeGeometry != null || template.PrototypeAttributes != null)
            {
                Dictionary <string, object> prototype = new Dictionary <string, object>();

                if (template.PrototypeGeometry != null)
                {
                    prototype.Add("geometry", JsonSerializer.Serialize <Geometry>(template.PrototypeGeometry));
                }
                if (template.PrototypeAttributes != null)
                {
                    prototype.Add("attributes", template.PrototypeAttributes);
                }

                dictionary.Add("prototype", prototype);
            }

            return(dictionary);
        }
Esempio n. 4
0
        private static SymbolTemplate GetSymbolTemplate(Editor editor, Symbol symbol, object featureTypeID, FeatureTemplate template,
                                                        string displayName, string description)
        {
            object type = null;

            if (template != null)
            {
                type = template;
            }
            else if (featureTypeID != null)
            {
                type = featureTypeID;
            }
            SymbolTemplate symbolTemplate = new SymbolTemplate()
            {
                TypeID          = type,
                FeatureTemplate = template,
                Symbol          = symbol,
                Name            = displayName,
                Description     = description,
                Editor          = editor
            };

            return(symbolTemplate);
        }
 internal TemplatePickedEventArgs(FeatureLayer layer,
                                  FeatureType featureType,
                                  FeatureTemplate featureTemplate)
 {
     Layer           = layer;
     FeatureType     = featureType;
     FeatureTemplate = featureTemplate;
 }
Esempio n. 6
0
        public virtual bool LoadFromBin(ByteArray ba)
        {
            if (ba == null)
            {
                return(false);
            }
            try
            {
                var size = ba.NextInt_HighFirst();          // 使用Model目标的数据文件均与相应的原数据文件兼容,所以这里只讨论高位在前的情况
                id2tag = new string[size];
                tag2id = new Dictionary <string, int>(size);

                for (int i = 0; i < size; i++)
                {
                    id2tag[i]         = ba.NextUTFStr(true);
                    tag2id[id2tag[i]] = i;
                }

                var ffs = new FeatureFunction[ba.NextInt_HighFirst()];
                for (int i = 0; i < ffs.Length; i++)
                {
                    ffs[i] = new FeatureFunction();
                    ffs[i].Load(ba);
                }

                _ffTrie.Load(ba, ffs, true);
                size    = ba.NextInt_HighFirst();
                _ftList = new List <FeatureTemplate>(size);
                for (int i = 0; i < size; i++)
                {
                    var ft = new FeatureTemplate();
                    ft.Load(ba);
                    _ftList.Add(ft);
                }
                size = ba.NextInt_HighFirst();
                if (size == 0)
                {
                    return(true);
                }

                _matrix = new double[size][];
                for (int i = 0; i < size; i++)
                {
                    _matrix[i] = new double[size];
                    for (int j = 0; j < size; j++)
                    {
                        _matrix[i][j] = ba.NextDouble_HighFirst();
                    }
                }
                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
		private static SymbolTemplate GetSymbolTemplate(Editor editor, Symbol symbol, object featureTypeID, FeatureTemplate template,
			string displayName, string description)
		{
			object type = null;
			if (featureTypeID != null && template != null && !string.IsNullOrEmpty(template.Name))
				type = new object[] { featureTypeID, template.Name };
			else if (featureTypeID != null)
				type = featureTypeID;
			else if (template != null)
				type = template.Name;
			SymbolTemplate symbolTemplate = new SymbolTemplate()
			{
				TypeID = type,
				FeatureTemplate = template,
				Symbol = symbol,
				Name = displayName,
				Description = description,
				Editor = editor
			};
			return symbolTemplate;
		}
 internal TemplatePickedEventArgs(FeatureLayer layer,
     FeatureType featureType,
     FeatureTemplate featureTemplate)
 {
     Layer = layer;
     FeatureType = featureType;
     FeatureTemplate = featureTemplate;
 }
        private void setTemplates()
        {
            List<TemplateGroup> templateGroups = new List<TemplateGroup>();
            if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
            {
                TemplateGroup group = new TemplateGroup()
                {
                    Name = "LayerID",
                    Templates = new List<SymbolTemplate>()
                };
                SimpleFillSymbol fillSymbol = new SimpleFillSymbol()
                {
                    Fill = new SolidColorBrush(Colors.Black)
                };
                group.Templates.Add(GetSymbolTemplate(new Editor(), fillSymbol, null, null, "Template Name", string.Empty));
                templateGroups.Add(group);
            }
            else
            {
                if (Map == null) return;
                foreach (FeatureLayer layer in GetLayers(LayerIDs, Map.Layers))
                {
                    if (!IsTemplatable(layer)) continue;
                    if (layer.LayerInfo.HasM || layer.LayerInfo.HasZ && !layer.LayerInfo.EnableZDefaults) continue;
                    Editor editor = new Editor()
                    {
                        AutoComplete = AutoComplete,
                        AutoSelect = AutoSelect,
                        ContinuousMode = Continuous,
                        Freehand = Freehand,
                        GeometryServiceUrl = GeometryServiceUrl,
                        GeometryServiceToken = GeometryServiceToken,
                        ProxyUrl = ProxyUrl,
                        LayerIDs = new string[] { layer.ID },
                        Map = Map,
                    };
                    editor.EditorActivated += Editor_EditorActivated;
                    editor.EditCompleted += Editor_EditCompleted;
                    TemplateGroup group = new TemplateGroup();
                    group.Name = layer.ID;
                    group.Layer = layer;
                    group.Templates = new List<SymbolTemplate>();

                    if (layer.Renderer != null)
                    {
                        Symbol defaultSymbol = layer.Renderer.GetSymbol(null);
                        if (layer.LayerInfo.FeatureTypes != null && layer.LayerInfo.FeatureTypes.Count > 0)
                        {
                            foreach (KeyValuePair<object, FeatureType> type in layer.LayerInfo.FeatureTypes)
                            {
                                if (type.Value != null && type.Value.Templates != null && type.Value.Templates.Count > 0)
                                {
                                    foreach (KeyValuePair<string, FeatureTemplate> featureTemplate in type.Value.Templates)
                                    {
                                        string name = type.Value.Name;
                                        if (type.Value.Templates.Count > 1)
                                            name = string.Format("{0}-{1}", type.Value.Name, featureTemplate.Value.Name);
                                        Symbol symbol = featureTemplate.Value.GetSymbol(layer.Renderer) ?? defaultSymbol;
                                        SymbolTemplate symbolTemplate = GetSymbolTemplate(editor, symbol,
                                            type.Value.Id, featureTemplate.Value,
                                            name, featureTemplate.Value.Description);
                                        if (symbol != null)
                                            group.Templates.Add(symbolTemplate);
                                    }
                                }
                            }
                            if (AlwaysDisplayDefaultTemplates)
                            {
                                if (defaultSymbol != null)
                                {
                                    var defaultLabel = layer.Renderer is UniqueValueRenderer ? (layer.Renderer as UniqueValueRenderer).DefaultLabel :
                                        (layer.Renderer is UniqueValueMultipleFieldsRenderer) ? (layer.Renderer as UniqueValueMultipleFieldsRenderer).DefaultLabel : null;
                                    group.Templates.Add(GetSymbolTemplate(editor, defaultSymbol, null, null, defaultLabel ?? layer.ID, null));
                                }
                            }
                        }
                        else if (layer.LayerInfo.Templates != null && layer.LayerInfo.Templates.Count > 0)
                        {
                            foreach (KeyValuePair<string, FeatureTemplate> featureTemplate in layer.LayerInfo.Templates)
                            {
                                Symbol symbol = featureTemplate.Value.GetSymbol(layer.Renderer) ?? defaultSymbol;
                                SymbolTemplate symbolTemplate = GetSymbolTemplate(editor, symbol,
                                            null, featureTemplate.Value, featureTemplate.Value.Name, featureTemplate.Value.Description);
                                if (symbol != null)
                                    group.Templates.Add(symbolTemplate);
                            }
                        }
                        else if (layer.Renderer is UniqueValueRenderer || layer.Renderer is UniqueValueMultipleFieldsRenderer)
                        {
                            var uvr = layer.Renderer as UniqueValueRenderer;
                            if (uvr != null)
                            {
                                foreach (var info in uvr.Infos)
                                {
                                    var prototypeAttributes = new Dictionary<string, object>();
                                    prototypeAttributes[uvr.Field] = info.Value;
                                    var featureTemplate = new FeatureTemplate(info.Label, info.Description, null, prototypeAttributes, FeatureEditTool.None);
                                    group.Templates.Add(GetSymbolTemplate(editor, info.Symbol, info.Value, featureTemplate, info.Label, info.Description));
                                }
                                if (AlwaysDisplayDefaultTemplates && uvr.DefaultSymbol != null)
                                        group.Templates.Add(GetSymbolTemplate(editor, uvr.DefaultSymbol, null, null, uvr.DefaultLabel ?? layer.ID, null));
                            }
                            else
                            {
                                var uvmfr = layer.Renderer as UniqueValueMultipleFieldsRenderer;
                                foreach (var info in uvmfr.Infos)
                                {
                                    var prototypeAttributes = new Dictionary<string, object>();
                                    if (uvmfr.Fields != null)
                                    {
                                        int i = 0;
                                        foreach (var field in uvmfr.Fields)
                                        {
                                            prototypeAttributes[field] = info.Values[i];
                                            i++;
                                        }
                                    }
                                    var featureTemplate = new FeatureTemplate(info.Label, info.Description, null, prototypeAttributes, FeatureEditTool.None);
                                    group.Templates.Add(GetSymbolTemplate(editor, info.Symbol, null, featureTemplate, info.Label, info.Description));
                                }
                                if (AlwaysDisplayDefaultTemplates && uvmfr.DefaultSymbol != null)
                                    group.Templates.Add(GetSymbolTemplate(editor, uvmfr.DefaultSymbol, null, null, uvmfr.DefaultLabel ?? layer.ID, null));
                            }
                        }
                        else
                        {
                            if (defaultSymbol != null)
                                group.Templates.Add(GetSymbolTemplate(editor, defaultSymbol, null, null, layer.ID, null));
                            else if (layer.Renderer is ClassBreaksRenderer)
                            {
                                var cbr = layer.Renderer as ClassBreaksRenderer;
                                if (AlwaysDisplayDefaultTemplates && cbr.DefaultSymbol != null)
                                    group.Templates.Add(GetSymbolTemplate(editor, cbr.DefaultSymbol, null, null, layer.ID, null));
                            }
                        }
                        if (group.Templates.Count > 0)
                            templateGroups.Add(group);
                    }
                }
            }
            TemplateGroups = templateGroups;
        }
Esempio n. 10
0
 public CustomName(string name, FeatureTemplate template)
 {
     this.name = name;
     this.template = template;
 }
Esempio n. 11
0
        private void setTemplates()
        {
            List <TemplateGroup> templateGroups = new List <TemplateGroup>();

            if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
            {
                TemplateGroup group = new TemplateGroup()
                {
                    Name      = "LayerID",
                    Templates = new List <SymbolTemplate>()
                };
                SimpleFillSymbol fillSymbol = new SimpleFillSymbol()
                {
                    Fill = new SolidColorBrush(Colors.Black)
                };
                group.Templates.Add(GetSymbolTemplate(new Editor(), fillSymbol, null, null, "Template Name", string.Empty));
                templateGroups.Add(group);
            }
            else
            {
                if (Map == null)
                {
                    return;
                }
                foreach (FeatureLayer layer in GetLayers(LayerIDs, Map.Layers))
                {
                    if (!IsTemplatable(layer))
                    {
                        continue;
                    }
                    if (layer.LayerInfo.HasM || layer.LayerInfo.HasZ && !layer.LayerInfo.EnableZDefaults)
                    {
                        continue;
                    }
                    Editor editor = new Editor()
                    {
                        AutoComplete         = AutoComplete,
                        AutoSelect           = AutoSelect,
                        ContinuousMode       = Continuous,
                        Freehand             = Freehand,
                        GeometryServiceUrl   = GeometryServiceUrl,
                        GeometryServiceToken = GeometryServiceToken,
                        ProxyUrl             = ProxyUrl,
                        LayerIDs             = new string[] { layer.ID },
                        Map = Map,
                    };
                    editor.EditorActivated += Editor_EditorActivated;
                    editor.EditCompleted   += Editor_EditCompleted;
                    TemplateGroup group = new TemplateGroup();
                    group.Name      = layer.ID;
                    group.Layer     = layer;
                    group.Templates = new List <SymbolTemplate>();

                    if (layer.Renderer != null)
                    {
                        Symbol defaultSymbol = layer.Renderer.GetSymbol(null);
                        if (layer.LayerInfo.FeatureTypes != null && layer.LayerInfo.FeatureTypes.Count > 0)
                        {
                            foreach (KeyValuePair <object, FeatureType> type in layer.LayerInfo.FeatureTypes)
                            {
                                if (type.Value != null && type.Value.Templates != null && type.Value.Templates.Count > 0)
                                {
                                    foreach (KeyValuePair <string, FeatureTemplate> featureTemplate in type.Value.Templates)
                                    {
                                        string name = type.Value.Name;
                                        if (type.Value.Templates.Count > 1)
                                        {
                                            name = string.Format("{0}-{1}", type.Value.Name, featureTemplate.Value.Name);
                                        }
                                        Symbol         symbol         = featureTemplate.Value.GetSymbol(layer.Renderer) ?? defaultSymbol;
                                        SymbolTemplate symbolTemplate = GetSymbolTemplate(editor, symbol,
                                                                                          type.Value.Id, featureTemplate.Value,
                                                                                          name, featureTemplate.Value.Description);
                                        if (symbol != null)
                                        {
                                            group.Templates.Add(symbolTemplate);
                                        }
                                    }
                                }
                            }
                            if (AlwaysDisplayDefaultTemplates)
                            {
                                if (defaultSymbol != null)
                                {
                                    var defaultLabel = layer.Renderer is UniqueValueRenderer ? (layer.Renderer as UniqueValueRenderer).DefaultLabel :
                                                       (layer.Renderer is UniqueValueMultipleFieldsRenderer) ? (layer.Renderer as UniqueValueMultipleFieldsRenderer).DefaultLabel : null;
                                    group.Templates.Add(GetSymbolTemplate(editor, defaultSymbol, null, null, defaultLabel ?? layer.ID, null));
                                }
                            }
                        }
                        else if (layer.LayerInfo.Templates != null && layer.LayerInfo.Templates.Count > 0)
                        {
                            foreach (KeyValuePair <string, FeatureTemplate> featureTemplate in layer.LayerInfo.Templates)
                            {
                                Symbol         symbol         = featureTemplate.Value.GetSymbol(layer.Renderer) ?? defaultSymbol;
                                SymbolTemplate symbolTemplate = GetSymbolTemplate(editor, symbol,
                                                                                  null, featureTemplate.Value, featureTemplate.Value.Name, featureTemplate.Value.Description);
                                if (symbol != null)
                                {
                                    group.Templates.Add(symbolTemplate);
                                }
                            }
                        }
                        else if (layer.Renderer is UniqueValueRenderer || layer.Renderer is UniqueValueMultipleFieldsRenderer)
                        {
                            var uvr = layer.Renderer as UniqueValueRenderer;
                            if (uvr != null)
                            {
                                foreach (var info in uvr.Infos)
                                {
                                    var prototypeAttributes = new Dictionary <string, object>();
                                    prototypeAttributes[uvr.Field] = info.Value;
                                    var featureTemplate = new FeatureTemplate(info.Label, info.Description, null, prototypeAttributes, FeatureEditTool.None);
                                    group.Templates.Add(GetSymbolTemplate(editor, info.Symbol, info.Value, featureTemplate, info.Label, info.Description));
                                }
                                if (AlwaysDisplayDefaultTemplates && uvr.DefaultSymbol != null)
                                {
                                    group.Templates.Add(GetSymbolTemplate(editor, uvr.DefaultSymbol, null, null, uvr.DefaultLabel ?? layer.ID, null));
                                }
                            }
                            else
                            {
                                var uvmfr = layer.Renderer as UniqueValueMultipleFieldsRenderer;
                                foreach (var info in uvmfr.Infos)
                                {
                                    var prototypeAttributes = new Dictionary <string, object>();
                                    if (uvmfr.Fields != null)
                                    {
                                        int i = 0;
                                        foreach (var field in uvmfr.Fields)
                                        {
                                            prototypeAttributes[field] = info.Values[i];
                                            i++;
                                        }
                                    }
                                    var featureTemplate = new FeatureTemplate(info.Label, info.Description, null, prototypeAttributes, FeatureEditTool.None);
                                    group.Templates.Add(GetSymbolTemplate(editor, info.Symbol, null, featureTemplate, info.Label, info.Description));
                                }
                                if (AlwaysDisplayDefaultTemplates && uvmfr.DefaultSymbol != null)
                                {
                                    group.Templates.Add(GetSymbolTemplate(editor, uvmfr.DefaultSymbol, null, null, uvmfr.DefaultLabel ?? layer.ID, null));
                                }
                            }
                        }
                        else
                        {
                            if (defaultSymbol != null)
                            {
                                group.Templates.Add(GetSymbolTemplate(editor, defaultSymbol, null, null, layer.ID, null));
                            }
                            else if (layer.Renderer is ClassBreaksRenderer)
                            {
                                var cbr = layer.Renderer as ClassBreaksRenderer;
                                if (AlwaysDisplayDefaultTemplates && cbr.DefaultSymbol != null)
                                {
                                    group.Templates.Add(GetSymbolTemplate(editor, cbr.DefaultSymbol, null, null, layer.ID, null));
                                }
                            }
                        }
                        if (group.Templates.Count > 0)
                        {
                            templateGroups.Add(group);
                        }
                    }
                }
            }
            TemplateGroups = templateGroups;
        }
Esempio n. 12
0
 /// <summary>
 /// A template is selected for creation of a feature
 /// </summary>
 /// <param name="arg"></param>
 private void OnTemplateSelect(object arg)
 {
     TemplateData templateSelect = (TemplateData)arg;
     currentTemplateLayer = templateSelect.LayerId;
     currentTemplate = templateSelect.EditTemplate;
     if (this.EditLayers.Count > 0)
     {
         //this.SelectedEditLayer = this.EditLayers.FirstOrDefault(l => l.LayerName.Equals(currentTemplateLayer));
         //this.RaisePropertyChanged(() => this.SelectedEditLayer);
     }
 }
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (!(value is SymbolTemplate))
            {
                return(value);
            }

            SymbolTemplate symbolTemplate = value as SymbolTemplate;

            if (symbolTemplate.Symbol == null)
            {
                return(null);
            }
            Symbol convertedSymbol = symbolTemplate.Symbol;

            if (symbolTemplate.FeatureTemplate == null)
            {
                return(convertedSymbol);
            }

            FeatureTemplate featureTemplate = symbolTemplate.FeatureTemplate;

            if (symbolTemplate.Symbol is FSSymbols.SimpleFillSymbol ||
                symbolTemplate.Symbol is FSSymbols.PictureFillSymbol ||
                symbolTemplate.Symbol is FSSymbols.SimpleLineSymbol)
            {
                switch (featureTemplate.DrawingTool)
                {
                case FeatureEditTool.Polygon:
                    convertedSymbol = new PolygonSymbol();
                    break;

                case FeatureEditTool.AutoCompletePolygon:
                    convertedSymbol = new AutoCompletePolygonSymbol();
                    break;

                case FeatureEditTool.Circle:
                    convertedSymbol = new CircleSymbol();
                    break;

                case FeatureEditTool.Ellipse:
                    convertedSymbol = new EllipseSymbol();
                    break;

                case FeatureEditTool.Rectangle:
                    convertedSymbol = new RectangleSymbol();
                    break;

                case FeatureEditTool.Freehand:
                    if (symbolTemplate.Symbol is FSSymbols.SimpleLineSymbol)
                    {
                        convertedSymbol = new FreehandLineSymbol();
                    }
                    else
                    {
                        convertedSymbol = new FreehandPolygonSymbol();
                    }
                    break;

                case FeatureEditTool.Line:
                    convertedSymbol = new PolylineSymbol();
                    break;
                }

                if (convertedSymbol is ShapeMarkerSymbol)
                {
                    ShapeMarkerSymbol shapeMarkerSymbol = convertedSymbol as ShapeMarkerSymbol;
                    FillMarkerSymbol  fillMarkerSymbol  = convertedSymbol as FillMarkerSymbol;
                    if (symbolTemplate.Symbol is FSSymbols.SimpleFillSymbol)
                    {
                        ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleFillSymbol simpleFillSymbol =
                            symbolTemplate.Symbol as FSSymbols.SimpleFillSymbol;
                        fillMarkerSymbol.Stroke          = simpleFillSymbol.BorderBrush;
                        fillMarkerSymbol.Fill            = simpleFillSymbol.Fill;
                        fillMarkerSymbol.StrokeStyle     = simpleFillSymbol.BorderStyle;
                        fillMarkerSymbol.StrokeThickness = simpleFillSymbol.BorderThickness;
                        shapeMarkerSymbol.SelectionColor = simpleFillSymbol.SelectionColor;
                    }
                    else if (symbolTemplate.Symbol is FSSymbols.PictureFillSymbol)
                    {
                        ESRI.ArcGIS.Client.FeatureService.Symbols.PictureFillSymbol pictureFillSymbol =
                            symbolTemplate.Symbol as FSSymbols.PictureFillSymbol;
                        fillMarkerSymbol.Stroke          = pictureFillSymbol.BorderBrush;
                        fillMarkerSymbol.StrokeStyle     = pictureFillSymbol.BorderStyle;
                        fillMarkerSymbol.StrokeThickness = pictureFillSymbol.BorderThickness;
                        shapeMarkerSymbol.SelectionColor = pictureFillSymbol.SelectionColor;

                        // Create new image brush for fill in order to set stretch to Uniform
                        ImageBrush brush = new ImageBrush()
                        {
                            Stretch     = Stretch.Uniform,
                            ImageSource = pictureFillSymbol.Source
                        };
                        fillMarkerSymbol.Fill = brush;
                    }
                    else if (symbolTemplate.Symbol is FSSymbols.SimpleLineSymbol)
                    {
                        ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleLineSymbol simpleLineSymbol =
                            symbolTemplate.Symbol as FSSymbols.SimpleLineSymbol;
                        shapeMarkerSymbol.Stroke          = simpleLineSymbol.Color;
                        shapeMarkerSymbol.StrokeStyle     = simpleLineSymbol.Style;
                        shapeMarkerSymbol.StrokeThickness = simpleLineSymbol.Width;
                        shapeMarkerSymbol.SelectionColor  = simpleLineSymbol.SelectionColor;

                        if (fillMarkerSymbol != null)
                        {
                            fillMarkerSymbol.Fill = new SolidColorBrush(Colors.Transparent);
                        }
                    }
                }
            }

            return(convertedSymbol);
        }
Esempio n. 14
0
 public CustomName(string name, FeatureTemplate template)
 {
     this.name     = name;
     this.template = template;
 }
Esempio n. 15
0
        public virtual void LoadFromTxt(string path)
        {
            //if (Load(ByteArray.Create(path + Predefine.BIN_EXT))) return;

            var lines = File.ReadAllLines(path);

            // print lines[0];          // version
            // print lines[1];          // cost-factor
            // print lines[2];          // "maxid:xx"
            // print lines[3];          // xsize
            // lines[4]: blank line

            tag2id = new Dictionary <string, int>();
            int    i    = 5;
            string line = null;

            for (; i < lines.Length; i++)
            {
                line = lines[i];
                if (string.IsNullOrEmpty(line))
                {
                    break;
                }
                tag2id[line] = i - 5;
            }
            int size = tag2id.Count;

            id2tag = new string[size];      //! id2tag的元素赋值为什么不放入上一个循环中? tag2id.Count必然比keyvaluepair.value最大值大1,否则下面给id2tag元素赋值会出错
            foreach (var p in tag2id)
            {
                id2tag[p.Value] = p.Key;
            }

            var ffMap  = new SortedDictionary <string, FeatureFunction>(StrComparer.Default);
            var ffList = new List <FeatureFunction>();

            _ftList = new List <FeatureTemplate>();
            i++;                                    // 跳过当前的空白行
            for (; i < lines.Length; i++)
            {
                line = lines[i];
                if (string.IsNullOrEmpty(line))
                {
                    break;
                }
                if ("B" != line)
                {
                    _ftList.Add(FeatureTemplate.Create(line));
                }
                else
                {
                    _matrix = new double[size][];               //? 第一次遇到"B"行,表示接来下是_matrix数据信息,于是,初始化_matrix方阵
                }
            }
            i++;                                    // 跳过当前空白行
            if (_matrix != null)
            {
                i++;                                // 如果提供了_matrix数据信息,则接下来一行为 0 B,跳过
            }
            for (; i < lines.Length; i++)
            {
                line = lines[i];
                if (string.IsNullOrEmpty(line))
                {
                    break;
                }
                var args  = line.Split(new[] { ' ' }, 2);
                var chars = args[1].ToCharArray();
                var ff    = new FeatureFunction(chars, size);
                ffMap[args[1]] = ff;
                ffList.Add(ff);
            }
            i++;                                    // 跳过当前空白行
            if (_matrix != null)
            {
                for (int k = 0; k < size; k++)
                {
                    _matrix[k] = new double[size];
                    for (int j = 0; j < size; j++)
                    {
                        _matrix[k][j] = double.Parse(lines[i++]);
                    }
                }
            }

            for (int k = 0; k < ffList.Count; k++)
            {
                var ff = ffList[k];
                for (int j = 0; j < size; j++)
                {
                    ff.w[j] = double.Parse(lines[i++]);
                }
            }
            if (i < lines.Length)
            {
                // log  "文本读取有残留,可能出现问题"
            }
            _ffTrie.Build(ffMap);

            // 缓存bin数据文件
            var fs = new FileStream(path + Predefine.BIN_EXT, FileMode.Create, FileAccess.Write);

            try
            {
                Save(fs);
                fs.Close();
            }
            catch (Exception e)
            {
                // log e
                fs.Close();
                File.Delete(path + Predefine.BIN_EXT);
            }
            OnLoadTxtFinished();
        }