Ejemplo n.º 1
0
 /// <summary>
 /// Creates a new instance of CustomSymbolizer
 /// </summary>
 public CustomSymbolizer(IFeatureSymbolizer symbolizer, string uniqueName, string name, string categoryName)
 {
     _symbolizer   = symbolizer;
     _uniqueName   = uniqueName;
     _name         = name;
     _categoryName = categoryName;
     _type         = GetSymbolType(_symbolizer);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Creates a new instance of CustomSymbolizer
 /// </summary>
 public CustomSymbolizer(IFeatureSymbolizer symbolizer, string uniqueName, string name, string categoryName)
 {
     _symbolizer = symbolizer;
     _uniqueName = uniqueName;
     _name = name;
     _categoryName = categoryName;
     _type = GetSymbolType(_symbolizer);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Constructs a new instance of a custom symbolizer
 /// </summary>
 public CustomSymbolizer()
 {
     _symbolizer   = new PointSymbolizer();
     _uniqueName   = "symbol 001";
     _name         = "symbol 001";
     _categoryName = "default";
     _type         = GetSymbolType(_symbolizer);
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Gets a string array of all available categories (groups) of custom predefined symbols
        /// </summary>
        public string[] GetAvailableCategories(SymbolizerType symbolType)
        {
            var query = (from item in _list
                         where item.SymbolType == symbolType
                         select item.Category).Distinct();

            return query.ToArray();
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Constructs a new instance of a custom symbolizer
 /// </summary>
 public CustomSymbolizer()
 {
     _symbolizer = new PointSymbolizer();
     _uniqueName = "symbol 001";
     _name = "symbol 001";
     _categoryName = "default";
     _type = GetSymbolType(_symbolizer);
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Gets a string array of all available categories (groups) of custom predefined symbols
        /// </summary>
        public string[] GetAvailableCategories(SymbolizerType symbolType)
        {
            var query = (from item in _list
                         where item.SymbolType == symbolType
                         select item.Category).Distinct();

            return(query.ToArray());
        }
Ejemplo n.º 7
0
        public static RenderRule createDefaultRule(SymbolizerType symbolizertype)
        {
            switch (symbolizertype)
            {
            case SymbolizerType.POINT:
                return(new RenderRule(null, pointsymbolizer.createDefaultpointsymbolizer(), new textsymbolizer()));

            case SymbolizerType.LINE:
                return(new RenderRule(null, linesymbolizer.createdefaultlinesymbolizer(), new textsymbolizer()));

            case SymbolizerType.POLYGON:
                return(new RenderRule(null, polygonsymbolizer.createdefalutpolygonsymbolizer(), new textsymbolizer()));
            }
            return(null);
        }
Ejemplo n.º 8
0
        public static Style createUniqueValueStyle(FeatureSource featuresource, string arrtributename)
        {
            //arrtributename = featuresource.schema.fields.Keys.First();//////????????????????????????????????????//
            Schema         schema = featuresource.schema;
            SymbolizerType sign   = SymbolizerType.POINT;

            switch (schema.geometryType)
            {
            case OSGeo.OGR.wkbGeometryType.wkbPoint:
                sign = SymbolizerType.POINT;
                break;

            case OSGeo.OGR.wkbGeometryType.wkbLineString:
                sign = SymbolizerType.LINE;
                break;

            case OSGeo.OGR.wkbGeometryType.wkbPolygon:
                sign = SymbolizerType.POLYGON;
                break;
            }
            //获取attributename 所对应的所有不同属性值
            HashSet <object> set = new HashSet <object>();
            List <GisSmartTools.Data.Feature> featurelist = featuresource.features.featureList;

            foreach (GisSmartTools.Data.Feature feature in featurelist)
            {
                set.Add(feature.GetArrtributeByName(arrtributename));
            }
            List <RenderRule> rulelist = new List <RenderRule>();

            foreach (object value in set)
            {
                RenderRule rule = RenderRule.createDefaultRule(sign);
                rule.filter = new Filter_Equals(arrtributename, value);
                rulelist.Add(rule);
            }
            Style style = new Style("uniqueValueStyle", StyleType.UNIQUESTYLE, RenderRule.createDefaultRule(sign));

            style.rulelist = rulelist;
            return(style);
        }
Ejemplo n.º 9
0
        public static RenderRule createDefaultRule(SymbolizerType symbolizertype, Color color)
        {
            switch (symbolizertype)
            {
            case SymbolizerType.POINT:
                pointsymbolizer pointsym = pointsymbolizer.createDefaultpointsymbolizer();
                pointsym.color = color;
                return(new RenderRule(null, pointsym, new textsymbolizer()));

            case SymbolizerType.LINE:
                linesymbolizer linesym = linesymbolizer.createdefaultlinesymbolizer();
                linesym.color = color;
                return(new RenderRule(null, linesym, new textsymbolizer()));

            case SymbolizerType.POLYGON:
                polygonsymbolizer polygonsym = polygonsymbolizer.createdefalutpolygonsymbolizer();
                polygonsym.fillcolor = color;
                //polygonsym.strokecolor = color;
                polygonsym.strokecolor = Colors.Black;
                return(new RenderRule(null, polygonsym, new textsymbolizer()));
            }
            return(null);
        }
        /// <summary>
        /// Sets up the Table to work with the specified layer.  This should be the copy,
        /// and not the original.
        /// </summary>
        /// <param name="layer"></param>
        public void Initialize(IFeatureLayer layer)
        {
            _original = layer.Symbology;
            _newScheme = _original.Copy();
            _source = layer.DataSet;
            if (!layer.DataSet.AttributesPopulated)
            {
                if (layer.DataSet.NumRows() < 100000)
                {
                    _source.FillAttributes(); // for small datasets, it is better to just load and cache it.
                }
            }

            if (_source.AttributesPopulated)
            {
                _expressionDialog.Table = _source.DataTable;
            }
            else
            {
                _expressionDialog.AttributeSource = _source;
            }

            _schemeType = GetSchemeType(layer);

            if (_schemeType != SymbolizerType.Polygon)
            {
                chkUseGradients.Visible = false;
                angGradientAngle.Visible = false;
            }
            else
            {
                chkUseGradients.Visible = true;
                angGradientAngle.Visible = true;
            }
            if (_schemeType == SymbolizerType.Point)
            {
                IPointScheme ps = _newScheme as IPointScheme;

                if (ps != null)
                {
                    IPointSymbolizer sym;
                    if (ps.Categories.Count == 0 || ps.Categories[0].Symbolizer == null)
                    {
                        sym = new PointSymbolizer();
                    }
                    else
                    {
                        sym = ps.Categories[0].Symbolizer;
                    }
                    _ignoreRefresh = true;
                    featureSizeRangeControl1.SizeRange = new FeatureSizeRange(sym, _newScheme.EditorSettings.StartSize, _newScheme.EditorSettings.EndSize);
                    featureSizeRangeControl1.Initialize(new SizeRangeEventArgs(_newScheme.EditorSettings.StartSize, _newScheme.EditorSettings.EndSize, sym, _newScheme.EditorSettings.UseSizeRange));
                    featureSizeRangeControl1.Scheme = ps;
                    featureSizeRangeControl1.Visible = true;
                    _ignoreRefresh = false;
                }
            }
            else if (_schemeType == SymbolizerType.Line)
            {
                ILineScheme ls = _newScheme as ILineScheme;
                if (ls != null)
                {
                    ILineSymbolizer sym;
                    if (ls.Categories.Count == 0 || ls.Categories[0].Symbolizer == null)
                    {
                        sym = new LineSymbolizer();
                    }
                    else
                    {
                        sym = ls.Categories[0].Symbolizer;
                    }
                    _ignoreRefresh = true;
                    featureSizeRangeControl1.SizeRange = new FeatureSizeRange(sym, _newScheme.EditorSettings.StartSize, _newScheme.EditorSettings.EndSize);
                    featureSizeRangeControl1.Initialize(new SizeRangeEventArgs(_newScheme.EditorSettings.StartSize, _newScheme.EditorSettings.EndSize, sym, _newScheme.EditorSettings.UseSizeRange));
                    featureSizeRangeControl1.Scheme = ls;
                    featureSizeRangeControl1.Visible = true;
                    _ignoreRefresh = false;
                }
            }
            else
            {
                featureSizeRangeControl1.Visible = false;
            }

            UpdateFields();
            if (_newScheme.EditorSettings.ClassificationType != ClassificationType.Quantities) return;
            nudCategoryCount.Enabled = true;
            tabScheme.Visible = true;
            dgvCategories.Height = 217;
            UpdateStatistics(false, null);
        }
Ejemplo n.º 11
0
        public static Style createRankStyle(FeatureSource featuresource, string attributename, int num, Color startcolor, Color endcolor)
        {
            Schema         schema = featuresource.schema;
            SymbolizerType sign   = SymbolizerType.POINT;

            switch (schema.geometryType)
            {
            case OSGeo.OGR.wkbGeometryType.wkbPoint:
                sign = SymbolizerType.POINT;
                break;

            case OSGeo.OGR.wkbGeometryType.wkbLineString:
                sign = SymbolizerType.LINE;
                break;

            case OSGeo.OGR.wkbGeometryType.wkbPolygon:
                sign = SymbolizerType.POLYGON;
                break;
            }
            FieldDefn fielddefn = null;

            if (schema.fields.TryGetValue(attributename, out fielddefn) || attributename.Equals("FeatureID"))
            {
                FieldType type = FieldType.OFTString;
                if (!attributename.Equals("FeatureID"))
                {
                    type = fielddefn.GetFieldType();
                }
                if (type == FieldType.OFTInteger || type == FieldType.OFTReal || attributename.Equals("FeatureID"))
                {
                    double maxvalue = double.MinValue;
                    double minvalue = double.MaxValue;
                    foreach (GisSmartTools.Data.Feature feature in featuresource.features.featureList)
                    {
                        double value = 0;
                        if (type == FieldType.OFTInteger || attributename.Equals("FeatureID"))
                        {
                            value = (int)feature.GetArrtributeByName(attributename);
                        }
                        if (type == FieldType.OFTReal)
                        {
                            value = (double)feature.GetArrtributeByName(attributename);
                        }
                        if (value > maxvalue)
                        {
                            maxvalue = value;
                        }
                        if (value < minvalue)
                        {
                            minvalue = value;
                        }
                    }
                    if (num == 0)
                    {
                        return(null);
                    }
                    double x = (maxvalue - minvalue) / num;
                    //逐个创建对应的rule
                    Color[]           colorarray    = Utils.GetLinearColorList(startcolor, endcolor, num);
                    double            temp_minvalue = minvalue;
                    double            temp_maxvalue = minvalue + x;
                    List <RenderRule> rulelist      = new List <RenderRule>();
                    // Printer.printnode("min=" + minvalue + " max=" + maxvalue, "");

                    for (int i = 0; i < num; i++)
                    {
                        RenderRule           rule       = RenderRule.createDefaultRule(sign, colorarray[i]);
                        Filter_Larger        larger     = new Filter_Larger(attributename, temp_minvalue);
                        Filter_Less          less       = new Filter_Less(attributename, temp_maxvalue);
                        List <Filter.Filter> filterlist = new List <Filter.Filter>();
                        filterlist.Add(larger); filterlist.Add(less);
                        Filter_And andfilter = new Filter_And(filterlist);
                        rule.filter = andfilter;
                        rulelist.Add(rule);
                        // Printer.printnode("temp_" + i, "min=" + temp_minvalue + " max=" + temp_maxvalue);
                        temp_minvalue += x; temp_maxvalue += x;
                    }
                    Style rankstyle = new Style("RankStyle", StyleType.RANKSTYLE, RenderRule.createDefaultRule(sign, startcolor));
                    rankstyle.rulelist = rulelist;
                    Printer.printnode("rulist,count=", "" + rulelist.Count);
                    return(rankstyle);
                }
            }
            return(null);
        }