Как применить тему SharpMap.VectorStyle к VectorLayer, если DataSource - FeatureDataTable? - PullRequest
0 голосов
/ 02 марта 2020

Я пробовал тему векторного слоя, когда использовал ShapeFile в качестве источника данных для векторного слоя. Но когда я пытаюсь добиться того же с помощью пользовательских данных многоугольника, это не работает.

Ниже приведен код, который я использовал:

Dictionary<string, SharpMap.Styles.IStyle> styles = new Dictionary<string, SharpMap.Styles.IStyle>();
                styles.Clear();
                styles.Add("NONE", m_noneStyleDefault);
                foreach (ListViewItem tn in _arlv)
                {
                    DataRow _row = (DataRow)tn.Tag;
                    r = labelData.NewRow();
                    var wkbreader = new NetTopologySuite.IO.WKTReader();
                    var geom = wkbreader.Read(_row["ogr_geometry"].ToString());
                    r["FID"] = (Int32)_row["ogr_fid"];
                    r["NAME"] = _row["sovereignt"].ToString();
                    r["SOV_A3"] = _row["sov_a3"].ToString().Trim().ToUpper();
                    r["TYPE"] = _row["mytype"].ToString();
                    r.Geometry = geom;

                    labelData.Rows.Add(r);
                    styles.Add(_row["sov_a3"].ToString().Trim().ToUpper(), m_selectStyleDefault);
                }

                m_vlCountries.DataSource = new SharpMap.Data.Providers.GeometryProvider(labelData);
                //m_vlCountries.Style = m_selectStyleDefault;

                m_vlCountries.Theme = new SharpMap.Rendering.Thematics.UniqueValuesTheme<string>("SOV_A3", styles, m_noneStyleDefault);

1 Ответ

0 голосов
/ 03 марта 2020

Вам нужно использовать SharpMap.Data.Providers.GeometryFeatureProvider вместо простого GeometryProvider

...