예제 #1
0
        public PolylineRenderForm(IGeometryRender geoRender, object[] fieldNamesItems)
        {
            InitializeComponent();

            {
                this.comboBox1.Items.AddRange(fieldNamesItems);
                this.comboBox1.Text = "";

                if (geoRender != null)
                {
                    int index = Utils.getIndexFromItems(fieldNamesItems, geoRender.RenderGroupField);
                    this.comboBox1.SelectedIndex = index;
                }
            }

            ISimpleGeometryRender render = geoRender as ISimpleGeometryRender;

            if (render == null || render.Symbol == null)
            {
                ICurveSymbol tmpSymbol = new CurveSymbol();
                string[]     row1      = new string[] { "Color", tmpSymbol.Color.ToString() };
                string[]     row2      = new string[] { "RepeatLength", tmpSymbol.RepeatLength.ToString() };
                string[]     row3      = new string[] { "Width", tmpSymbol.Width.ToString() };
                object[]     rows      = new object[] { row1, row2, row3 };
                foreach (string[] rowArray in rows)
                {
                    this.dataGridView2.Rows.Add(rowArray);
                }
                this.textBoxPictureName.Text = "";
                return;
            }

            if (render.Symbol == null)
            {
                this.textBoxPictureName.Text = "";
                return;
            }

            {
                ICurveSymbol symbol = render.Symbol as ICurveSymbol;
                string[]     row1   = new string[] { "Color", symbol.Color.ToString() };
                string[]     row2   = new string[] { "RepeatLength", symbol.RepeatLength.ToString() };
                string[]     row3   = new string[] { "Width", symbol.Width.ToString() };
                object[]     rows   = new object[] { row1, row2, row3 };
                foreach (string[] rowArray in rows)
                {
                    this.dataGridView2.Rows.Add(rowArray);
                }

                this.textBoxPicturePath.Text = symbol.ImageName;
                this.textBoxPictureName.Text = symbol.ImageName;
            }
        }
예제 #2
0
        public ModelPointRenderForm(IGeometryRender geoRender, object[] fieldNamesItems)
        {
            InitializeComponent();

            {
                this.comboBox1.Items.AddRange(fieldNamesItems);
                this.comboBox1.Text = "";

                if (geoRender != null)
                {
                    int index = Utils.getIndexFromItems(fieldNamesItems, geoRender.RenderGroupField);
                    this.comboBox1.SelectedIndex = index;
                }
            }

            ISimpleGeometryRender render = geoRender as ISimpleGeometryRender;

            if (render == null || render.Symbol == null)
            {
                IModelPointSymbol tmpSymbol = new ModelPointSymbol();
                string[]          row1      = new string[] { "Color", tmpSymbol.Color.ToString() };
                string[]          row2      = new string[] { "EnableColor", tmpSymbol.EnableColor.ToString() };
                string[]          row3      = new string[] { "EnableTexture ", tmpSymbol.EnableTexture.ToString() };
                object[]          rows      = new object[] { row1, row2, row3 };
                foreach (string[] rowArray in rows)
                {
                    this.dataGridView2.Rows.Add(rowArray);
                }
                return;
            }

            if (render.Symbol == null)
            {
                return;
            }

            {
                IModelPointSymbol symbol = render.Symbol as IModelPointSymbol;
                string[]          row1   = new string[] { "Color", symbol.Color.ToString() };
                string[]          row2   = new string[] { "EnableColor", symbol.EnableColor.ToString() };
                string[]          row3   = new string[] { "EnableTexture ", symbol.EnableTexture.ToString() };
                object[]          rows   = new object[] { row1, row2, row3 };
                foreach (string[] rowArray in rows)
                {
                    this.dataGridView2.Rows.Add(rowArray);
                }
            }
        }
예제 #3
0
 public void SetRender(TreeNodeFeatureClass treeNode, DF3DFeatureClass dffc)
 {
     if (treeNode == null || dffc == null)
     {
         return;
     }
     try
     {
         IFeatureClass fc = dffc.GetFeatureClass();
         if (fc == null)
         {
             return;
         }
         IFeatureLayer fl = dffc.GetFeatureLayer();
         if (fl == null)
         {
             return;
         }
         string name        = string.IsNullOrEmpty(fc.AliasName) ? fc.Name : fc.AliasName;
         string xmlFileName = renderPath + name + ".xml";
         if (File.Exists(xmlFileName))
         {
             XmlDocument xmlDoc = new XmlDocument();
             xmlDoc.Load(xmlFileName);
             if (xmlDoc != null)
             {
                 XmlNode featureLayerNode = xmlDoc.SelectSingleNode("FeatureLayer");
                 if (featureLayerNode == null)
                 {
                     return;
                 }
                 XmlNode         geometryRenderNode = featureLayerNode.SelectSingleNode("GeometryRender");
                 IGeometryRender geoRender          = GetGeoRender(geometryRenderNode);
                 XmlNode         textRenderNode     = featureLayerNode.SelectSingleNode("TextRender");
                 ITextRender     textRender         = GetTextRender(textRenderNode);
                 fl.SetTextRender(textRender);
                 fl.SetGeometryRender(geoRender);
                 treeNode.Visible = false;
             }
         }
     }
     catch (Exception ex) { }
 }
예제 #4
0
        private void importGeometryRenderToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog od = new OpenFileDialog();

            od.Filter           = "XML文件|*.xml";
            od.RestoreDirectory = true;
            if (od.ShowDialog() == DialogResult.OK)
            {
                if (File.Exists(od.FileName))
                {
                    StreamReader sr        = new StreamReader(od.FileName);
                    string       xmlstring = sr.ReadToEnd();
                    sr.Close();

                    IGeometryRender gr       = this.axRenderControl1.ObjectManager.CreateGeometryRenderFromXML(xmlstring);
                    string          nodeName = selectNode.Text;
                    myListNode      node     = selectNode as myListNode;
                    IFeatureLayer   layer    = node.layer;
                    layer.SetGeometryRender(gr);
                }
            }
        }
예제 #5
0
        // 公共方法
        void FeatureLayerVisualize(IConnectionInfo ci, bool needfly, string sourceName,
                                   ITextRender textRender, IGeometryRender geoRender)
        {
            IDataSourceFactory dsFactory = null;
            IDataSource        ds        = null;
            IFeatureDataSet    dataset   = null;

            try
            {
                dsFactory = new DataSourceFactory();
                ds        = dsFactory.OpenDataSource(ci);
                string[] setnames = (string[])ds.GetFeatureDatasetNames();
                if (setnames.Length == 0)
                {
                    return;
                }
                dataset = ds.OpenFeatureDataset(setnames[0]);
                string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable);
                if (fcnames.Length == 0)
                {
                    return;
                }
                fcMap = new Hashtable(fcnames.Length);
                foreach (string name in fcnames)
                {
                    IFeatureClass fc = dataset.OpenFeatureClass(name);
                    // 找到空间列字段
                    List <string>        geoNames   = new List <string>();
                    IFieldInfoCollection fieldinfos = fc.GetFields();
                    for (int i = 0; i < fieldinfos.Count; i++)
                    {
                        IFieldInfo fieldinfo = fieldinfos.Get(i);
                        if (null == fieldinfo)
                        {
                            continue;
                        }
                        IGeometryDef geometryDef = fieldinfo.GeometryDef;
                        if (null == geometryDef)
                        {
                            continue;
                        }
                        geoNames.Add(fieldinfo.Name);
                    }
                    fcMap.Add(fc, geoNames);
                }

                // CreateFeautureLayer
                bool hasfly = !needfly;
                foreach (IFeatureClass fcInMap in fcMap.Keys)
                {
                    List <string> geoNames = (List <string>)fcMap[fcInMap];
                    foreach (string geoName in geoNames)
                    {
                        IFeatureLayer featureLayer = this.axRenderControl1.ObjectManager.CreateFeatureLayer(
                            fcInMap, geoName, textRender, geoRender, rootId);

                        // 设置featureLayer组可见
                        if (!geoRender.RenderGroupField.Equals(""))
                        {
                            SetGroupVisiable(dataset, featureLayer);
                        }

                        // 添加节点到界面控件上
                        myListNode item = new myListNode(string.Format("{0}_{1}_{2}", sourceName, fcInMap.Name, featureLayer.MaxVisibleDistance.ToString()), featureLayer);
                        item.Checked = true;
                        listView1.Items.Add(item);
                        layerFcMap.Add(featureLayer, fcInMap);

                        IFieldInfoCollection fieldinfos  = fcInMap.GetFields();
                        IFieldInfo           fieldinfo   = fieldinfos.Get(fieldinfos.IndexOf(geoName));
                        IGeometryDef         geometryDef = fieldinfo.GeometryDef;
                        IEnvelope            env         = geometryDef.Envelope;
                        layerEnvelopeMap.Add(featureLayer, env);
                        if (env == null || (env.MaxX == 0.0 && env.MaxY == 0.0 && env.MaxZ == 0.0 &&
                                            env.MinX == 0.0 && env.MinY == 0.0 && env.MinZ == 0.0))
                        {
                            continue;
                        }

                        // 相机飞入
                        if (!hasfly)
                        {
                            angle.Set(0, -20, 0);
                            this.axRenderControl1.Camera.LookAt(env.Center, 1000, angle);
                        }
                        hasfly = true;
                    }
                }
            }
            catch (COMException ex)
            {
                System.Diagnostics.Trace.WriteLine(ex.Message);
                return;
            }
            catch (System.Exception e)
            {
                System.Diagnostics.Trace.WriteLine(e.Message);
                return;
            }
            finally
            {
                if (dsFactory != null)
                {
                    //Marshal.ReleaseComObject(dsFactory);
                    dsFactory = null;
                }
                if (ds != null)
                {
                    //Marshal.ReleaseComObject(ds);
                    ds = null;
                }
                if (dataset != null)
                {
                    //Marshal.ReleaseComObject(dataset);
                    dataset = null;
                }
                //if (fc != null)
                //{
                //    //Marshal.ReleaseComObject(fc);
                //    fc = null;
                //}
            }
        }
예제 #6
0
        public PolygonRenderForm(IGeometryRender geoRender, object[] fieldNamesItems)
        {
            InitializeComponent();

            {
                this.comboBox1.Items.AddRange(fieldNamesItems);
                this.comboBox1.Text = "";

                if (geoRender != null)
                {
                    int index = Utils.getIndexFromItems(fieldNamesItems, geoRender.RenderGroupField);
                    this.comboBox1.SelectedIndex = index;
                }
            }

            ISimpleGeometryRender render = geoRender as ISimpleGeometryRender;

            if (render == null || render.Symbol == null)
            {
                ISurfaceSymbol tmpSurfaceSymbol = new SurfaceSymbol();
                string[]       row1             = new string[] { "Color", tmpSurfaceSymbol.Color.ToString() };
                string[]       row2             = new string[] { "EnableLight", tmpSurfaceSymbol.EnableLight.ToString() };
                string[]       row3             = new string[] { "RepeatLengthU", tmpSurfaceSymbol.RepeatLengthU.ToString() };
                string[]       row4             = new string[] { "RepeatLengthV", tmpSurfaceSymbol.RepeatLengthV.ToString() };
                string[]       row5             = new string[] { "Rotation", tmpSurfaceSymbol.Rotation.ToString() };
                ICurveSymbol   tmpCurveSymbol   = new CurveSymbol();
                string[]       row6             = new string[] { "BoundaryColor", tmpCurveSymbol.Color.ToString() };
                string[]       row7             = new string[] { "RepeatLength", tmpCurveSymbol.RepeatLength.ToString() };
                string[]       row8             = new string[] { "Width", tmpCurveSymbol.Width.ToString() };
                object[]       rows             = new object[] { row1, row2, row3, row4, row5, row6, row7, row8 };
                foreach (string[] rowArray in rows)
                {
                    this.dataGridView2.Rows.Add(rowArray);
                }
                return;
            }

            if (render.Symbol == null)
            {
                this.textBoxSurfacePictureName.Text = "";
                return;
            }

            {
                ISurfaceSymbol surfaceSymbol  = render.Symbol as ISurfaceSymbol;
                ICurveSymbol   boundarySymbol = surfaceSymbol.BoundarySymbol as ICurveSymbol;
                if (boundarySymbol != null)
                {
                    string[] row1  = new string[] { "Color", surfaceSymbol.Color.ToString() };
                    string[] row2  = new string[] { "EnableLight", surfaceSymbol.EnableLight.ToString() };
                    string[] row3  = new string[] { "RepeatLengthU", surfaceSymbol.RepeatLengthU.ToString() };
                    string[] row4  = new string[] { "RepeatLengthV", surfaceSymbol.RepeatLengthV.ToString() };
                    string[] row5  = new string[] { "Rotation", surfaceSymbol.Rotation.ToString() };
                    string[] row6  = new string[] { "BoundaryColor", boundarySymbol.Color.ToString() };
                    string[] row7  = new string[] { "RepeatLength", boundarySymbol.RepeatLength.ToString() };
                    string[] row8  = new string[] { "Width", boundarySymbol.Width.ToString() };
                    object[] rows2 = new object[] { row1, row2, row3, row4, row5, row6, row7, row8 };
                    foreach (string[] rowArray in rows2)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }
                    this.textBoxCurvePictureName.Text = boundarySymbol.ImageName;
                    this.textBoxCurvePicturePath.Text = boundarySymbol.ImageName;
                }
                else
                {
                    ICurveSymbol boundarySymbolNew = new CurveSymbol();
                    string[]     row1  = new string[] { "Color", surfaceSymbol.Color.ToString() };
                    string[]     row2  = new string[] { "EnableLight", surfaceSymbol.EnableLight.ToString() };
                    string[]     row3  = new string[] { "RepeatLengthU", surfaceSymbol.RepeatLengthU.ToString() };
                    string[]     row4  = new string[] { "RepeatLengthV", surfaceSymbol.RepeatLengthV.ToString() };
                    string[]     row5  = new string[] { "Rotation", surfaceSymbol.Rotation.ToString() };
                    string[]     row6  = new string[] { "BoundaryColor", boundarySymbolNew.Color.ToString() };
                    string[]     row7  = new string[] { "RepeatLength", boundarySymbolNew.RepeatLength.ToString() };
                    string[]     row8  = new string[] { "Width", boundarySymbolNew.Width.ToString() };
                    object[]     rows2 = new object[] { row1, row2, row3, row4, row5, row6, row7, row8 };
                    foreach (string[] rowArray in rows2)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }
                    this.textBoxCurvePictureName.Text = "";
                    this.textBoxCurvePicturePath.Text = "";
                }

                this.textBoxSurfacePictureName.Text = surfaceSymbol.ImageName;
                this.textBoxSurfacePicturePath.Text = surfaceSymbol.ImageName;
            }
        }
예제 #7
0
        public PointRenderForm(IGeometryRender geoRender, object[] fieldNamesItems, bool isSimplePoint)
        {
            InitializeComponent();
            IsSimplePoint = isSimplePoint;

            {
                this.comboBox1.Items.AddRange(fieldNamesItems);
                this.comboBox1.Text = "";

                if (geoRender != null)
                {
                    int index = Utils.getIndexFromItems(fieldNamesItems, geoRender.RenderGroupField);
                    this.comboBox1.SelectedIndex = index;
                }
            }

            ISimpleGeometryRender render = geoRender as ISimpleGeometryRender;

            if (render == null)
            {
                if (isSimplePoint)
                {
                    this.dataGridView1.Enabled      = true;
                    this.checkBox1.Enabled          = false;
                    this.textBoxPictureName.Enabled = false;
                    this.textBoxPicturePath.Enabled = false;

                    ISimplePointSymbol tmpSymbol = new SimplePointSymbol();
                    string[]           row1      = new string[] { "Alignment", tmpSymbol.Alignment.ToString() };
                    string[]           row2      = new string[] { "Size", tmpSymbol.Size.ToString() };
                    object[]           rows      = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    string[] row11 = new string[] { "FillColor", tmpSymbol.FillColor.ToString() };
                    string[] row12 = new string[] { "Style", tmpSymbol.Style.ToString() };
                    object[] rows2 = new object[] { row11, row12 };
                    foreach (string[] rowArray in rows2)
                    {
                        this.dataGridView1.Rows.Add(rowArray);
                    }
                    return;
                }
                else
                {
                    this.dataGridView1.Enabled      = false;
                    this.checkBox1.Enabled          = true;
                    this.textBoxPictureName.Enabled = true;

                    IImagePointSymbol tmpSymbol = new ImagePointSymbol();
                    string[]          row1      = new string[] { "Alignment", tmpSymbol.Alignment.ToString() };
                    string[]          row2      = new string[] { "Size", tmpSymbol.Size.ToString() };
                    object[]          rows      = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    this.textBoxPictureName.Text = "";
                    return;
                }
            }

            if (render.Symbol == null)
            {
                return;
            }

            if (isSimplePoint)
            {
                this.dataGridView1.Enabled      = true;
                this.checkBox1.Enabled          = false;
                this.textBoxPictureName.Enabled = false;
                this.textBoxPicturePath.Enabled = false;

                ISimplePointSymbol symbol = render.Symbol as ISimplePointSymbol;
                if (symbol != null)
                {
                    string[] row1 = new string[] { "Alignment", symbol.Alignment.ToString() };
                    string[] row2 = new string[] { "Size", symbol.Size.ToString() };
                    object[] rows = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    string[] row11 = new string[] { "FillColor", symbol.FillColor.ToString() };
                    string[] row12 = new string[] { "Style", symbol.Style.ToString() };
                    object[] rows2 = new object[] { row11, row12 };
                    foreach (string[] rowArray in rows2)
                    {
                        this.dataGridView1.Rows.Add(rowArray);
                    }
                }
                else
                {
                    ISimplePointSymbol tmpSymbol = new SimplePointSymbol();
                    string[]           row1      = new string[] { "Alignment", tmpSymbol.Alignment.ToString() };
                    string[]           row2      = new string[] { "Size", tmpSymbol.Size.ToString() };
                    object[]           rows      = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    string[] row11 = new string[] { "FillColor", tmpSymbol.FillColor.ToString() };
                    string[] row12 = new string[] { "Style", tmpSymbol.Style.ToString() };
                    object[] rows2 = new object[] { row11, row12 };
                    foreach (string[] rowArray in rows2)
                    {
                        this.dataGridView1.Rows.Add(rowArray);
                    }
                }
            }
            else
            {
                this.dataGridView1.Enabled      = false;
                this.checkBox1.Enabled          = true;
                this.textBoxPictureName.Enabled = true;

                IImagePointSymbol symbol = render.Symbol as IImagePointSymbol;
                if (symbol != null)
                {
                    string[] row1 = new string[] { "Alignment", symbol.Alignment.ToString() };
                    string[] row2 = new string[] { "Size", symbol.Size.ToString() };
                    object[] rows = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    this.textBoxPicturePath.Text = symbol.ImageName;
                    this.textBoxPictureName.Text = symbol.ImageName;
                }
                else
                {
                    IImagePointSymbol tmpSymbol = new ImagePointSymbol();
                    string[]          row1      = new string[] { "Alignment", tmpSymbol.Alignment.ToString() };
                    string[]          row2      = new string[] { "Size", tmpSymbol.Size.ToString() };
                    object[]          rows      = new object[] { row1, row2 };
                    foreach (string[] rowArray in rows)
                    {
                        this.dataGridView2.Rows.Add(rowArray);
                    }

                    this.textBoxPictureName.Text = "";
                }
            }
        }
예제 #8
0
파일: MainForm.cs 프로젝트: batuZ/Samples
        // 公共方法
        void FeatureLayerVisualize(IConnectionInfo ci, bool needfly, string fcNameNeedMap,
                                   ITextRender textRender, IGeometryRender geoRender)
        {
            IDataSourceFactory dsFactory = null;
            IDataSource        ds        = null;
            IFeatureDataSet    dataset   = null;

            try
            {
                dsFactory = new DataSourceFactory();
                ds        = dsFactory.OpenDataSource(ci);
                string[] setnames = (string[])ds.GetFeatureDatasetNames();
                if (setnames.Length == 0)
                {
                    return;
                }
                dataset = ds.OpenFeatureDataset(setnames[0]);
                string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable);
                if (fcnames.Length == 0)
                {
                    return;
                }
                fcMap = new Hashtable(fcnames.Length);
                foreach (string name in fcnames)
                {
                    IFeatureClass fc = dataset.OpenFeatureClass(name);
                    // 找到空间列字段
                    List <string>        geoNames   = new List <string>();
                    IFieldInfoCollection fieldinfos = fc.GetFields();
                    for (int i = 0; i < fieldinfos.Count; i++)
                    {
                        IFieldInfo fieldinfo = fieldinfos.Get(i);
                        if (null == fieldinfo)
                        {
                            continue;
                        }
                        IGeometryDef geometryDef = fieldinfo.GeometryDef;
                        if (null == geometryDef)
                        {
                            continue;
                        }
                        geoNames.Add(fieldinfo.Name);
                    }
                    fcMap.Add(fc, geoNames);
                }

                // CreateFeautureLayer
                bool hasfly = !needfly;
                foreach (IFeatureClass fcInMap in fcMap.Keys)
                {
                    List <string> geoNames = (List <string>)fcMap[fcInMap];
                    foreach (string geoName in geoNames)
                    {
                        if (fcInMap.Name.Equals(fcNameNeedMap))
                        {
                            this.axRenderControl1.ObjectManager.CreateFeatureLayer(fcInMap, geoName, textRender, geoRender, rootId);
                        }
                        else
                        {
                            this.axRenderControl1.ObjectManager.CreateFeatureLayer(fcInMap, geoName, null, null, rootId);
                        }

                        IFieldInfoCollection fieldinfos  = fcInMap.GetFields();
                        IFieldInfo           fieldinfo   = fieldinfos.Get(fieldinfos.IndexOf(geoName));
                        IGeometryDef         geometryDef = fieldinfo.GeometryDef;
                        IEnvelope            env         = geometryDef.Envelope;
                        if (env == null || (env.MaxX == 0.0 && env.MaxY == 0.0 && env.MaxZ == 0.0 &&
                                            env.MinX == 0.0 && env.MinY == 0.0 && env.MinZ == 0.0))
                        {
                            continue;
                        }

                        // 相机飞入
                        if (!hasfly)
                        {
                            IVector3 pos = new Vector3();
                            pos.Set(env.Center.X, env.Center.Y, env.Center.Z);
                            IEulerAngle ang = new EulerAngle();
                            ang.Set(0, -20, 0);
                            this.axRenderControl1.Camera.LookAt(pos, 600, ang);
                        }
                        hasfly = true;
                    }
                }
            }
            catch (COMException ex)
            {
                System.Diagnostics.Trace.WriteLine(ex.Message);
                return;
            }
            catch (System.Exception e)
            {
                System.Diagnostics.Trace.WriteLine(e.Message);
                return;
            }
            finally
            {
                if (dsFactory != null)
                {
                    //Marshal.ReleaseComObject(dsFactory);
                    dsFactory = null;
                }
                if (ds != null)
                {
                    //Marshal.ReleaseComObject(ds);
                    ds = null;
                }
                if (dataset != null)
                {
                    //Marshal.ReleaseComObject(dataset);
                    dataset = null;
                }
            }
        }
예제 #9
0
        private IGeometryRender GetGeoRender(XmlNode node)
        {
            if (node == null)
            {
                return(null);
            }
            IGeometryRender result       = null;
            double          heightOffset = 0.0;
            string          value        = node.Attributes["HeightStyle"].Value;
            object          obj          = node.Attributes["HeightOffset"];

            if (obj != null)
            {
                heightOffset = double.Parse(node.Attributes["HeightOffset"].Value);
            }
            string value2 = node.Attributes["GroupField"].Value;
            string value3 = node.Attributes["RenderType"].Value;

            if (value3 == gviRenderType.gviRenderSimple.ToString())
            {
                ISimpleGeometryRender simpleGeometryRender = new SimpleGeometryRenderClass();
                XmlNode xmlNode = node.SelectSingleNode("GeometrySymbol");
                if (xmlNode != null)
                {
                    string value4 = xmlNode.Attributes["GeometryType"].Value;
                    simpleGeometryRender.Symbol = this.GetGeometrySymbol(value4, xmlNode);
                }
                if (value == gviHeightStyle.gviHeightAbsolute.ToString())
                {
                    simpleGeometryRender.HeightStyle = gviHeightStyle.gviHeightAbsolute;
                }
                else
                {
                    simpleGeometryRender.HeightStyle = gviHeightStyle.gviHeightOnTerrain;
                }
                simpleGeometryRender.HeightOffset     = heightOffset;
                simpleGeometryRender.RenderGroupField = value2;
                result = simpleGeometryRender;
            }
            else
            {
                XmlNodeList xmlNodeList = node.SelectNodes("ValueMap/RenderScheme");
                if (xmlNodeList != null && xmlNodeList.Count > 0)
                {
                    IValueMapGeometryRender valueMapGeometryRender = new ValueMapGeometryRenderClass();
                    foreach (XmlNode xmlNode2 in xmlNodeList)
                    {
                        IGeometryRenderScheme geometryRenderScheme = new GeometryRenderSchemeClass();
                        XmlNode xmlNode3 = xmlNode2.SelectSingleNode("RenderRule");
                        if (xmlNode3 != null)
                        {
                            string value5 = xmlNode3.Attributes["RuleType"].Value;
                            string value6 = xmlNode3.Attributes["LookUpField"].Value;
                            if (value5 == gviRenderRuleType.gviRenderRuleUniqueValues.ToString())
                            {
                                IUniqueValuesRenderRule uniqueValuesRenderRule = new UniqueValuesRenderRuleClass();
                                uniqueValuesRenderRule.LookUpField = value6;
                                if (xmlNode3.Attributes["UniqueValue"] != null)
                                {
                                    string value7 = xmlNode3.Attributes["UniqueValue"].Value;
                                    uniqueValuesRenderRule.AddValue(value7);
                                }
                                geometryRenderScheme.AddRule(uniqueValuesRenderRule);
                            }
                            else
                            {
                                IRangeRenderRule rangeRenderRule = new RangeRenderRuleClass();
                                string           value8          = xmlNode3.Attributes["IncludeMax"].Value;
                                string           value9          = xmlNode3.Attributes["IncludeMin"].Value;
                                string           value10         = xmlNode3.Attributes["MaxValue"].Value;
                                string           value11         = xmlNode3.Attributes["MinValue"].Value;
                                rangeRenderRule.LookUpField = value6;
                                rangeRenderRule.IncludeMax  = (value8.ToLower() == "true");
                                rangeRenderRule.IncludeMin  = (value9.ToLower() == "true");
                                rangeRenderRule.MaxValue    = double.Parse(value10);
                                rangeRenderRule.MinValue    = double.Parse(value11);
                                geometryRenderScheme.AddRule(rangeRenderRule);
                            }
                        }
                        XmlNode xmlNode4 = xmlNode2.SelectSingleNode("GeometrySymbol");
                        if (xmlNode4 != null)
                        {
                            string          value12        = xmlNode4.Attributes["GeometryType"].Value;
                            IGeometrySymbol geometrySymbol = this.GetGeometrySymbol(value12, xmlNode4);
                            geometryRenderScheme.Symbol = geometrySymbol;
                        }
                        if (value == gviHeightStyle.gviHeightAbsolute.ToString())
                        {
                            valueMapGeometryRender.HeightStyle = gviHeightStyle.gviHeightAbsolute;
                        }
                        else
                        {
                            valueMapGeometryRender.HeightStyle = gviHeightStyle.gviHeightOnTerrain;
                        }
                        valueMapGeometryRender.HeightOffset     = heightOffset;
                        valueMapGeometryRender.RenderGroupField = value2;
                        valueMapGeometryRender.AddScheme(geometryRenderScheme);
                    }
                    result = valueMapGeometryRender;
                }
            }
            return(result);
        }
예제 #10
0
        private void btnApply_Click(object sender, System.EventArgs e)
        {
            string script = this.txtScript.Text.Trim();

            if (script != "")
            {
                IGeometryRender render = selectedLayer.GetGeometryRender();
                if (render != null)
                {
                    if (render.RenderType == gviRenderType.gviRenderSimple)
                    {
                        ISimpleGeometryRender simpleRender = render as ISimpleGeometryRender;
                        IGeometrySymbol       geoSymbol    = simpleRender.Symbol;
                        geoSymbol.Script    = script;
                        simpleRender.Symbol = geoSymbol;
                        if (!selectedLayer.SetGeometryRender(simpleRender))
                        {
                            MessageBox.Show("错误码为:" + this.axRenderControl1.GetLastError());
                        }
                    }
                }
                else
                {
                    ISimpleGeometryRender simpleRender = new SimpleGeometryRender();
                    switch (type)
                    {
                    case LayerType.ModelPoint:
                    {
                        IModelPointSymbol mps = new ModelPointSymbol();
                        mps.Script          = script;
                        simpleRender.Symbol = mps;
                    }
                    break;

                    case LayerType.Polyline:
                    {
                        ICurveSymbol cs = new CurveSymbol();
                        cs.Script           = script;
                        simpleRender.Symbol = cs;
                    }
                    break;

                    case LayerType.Point:
                    {
                        if (script.Contains("<ImageName>"))
                        {
                            IImagePointSymbol ips = new ImagePointSymbol();
                            ips.Script          = script;
                            simpleRender.Symbol = ips;
                        }
                        else
                        {
                            ISimplePointSymbol sps = new SimplePointSymbol();
                            sps.Script          = script;
                            simpleRender.Symbol = sps;
                        }
                    }
                    break;

                    case LayerType.Polygon:
                    {
                        if (script.Contains("<Height>"))
                        {
                            IPolygon3DSymbol p3s = new Polygon3DSymbol();
                            p3s.Script          = script;
                            simpleRender.Symbol = p3s;
                        }
                        else
                        {
                            ISurfaceSymbol ss = new SurfaceSymbol();
                            ss.Script           = script;
                            simpleRender.Symbol = ss;
                        }
                    }
                    break;
                    }
                    if (!selectedLayer.SetGeometryRender(simpleRender))
                    {
                        MessageBox.Show("错误码为:" + this.axRenderControl1.GetLastError());
                    }
                }
            }
            else
            {
                selectedLayer.SetGeometryRender(null);
            }
        }
예제 #11
0
        private void listView1_MouseDown(object sender, MouseEventArgs e)
        {
            myListNode item = (myListNode)this.listView1.GetItemAt(e.X, e.Y);

            if (item == null)
            {
                return;
            }

            cbCOMProperties.Items.Clear();
            selectedLayer = item.layer;
            IGeometryRender render = selectedLayer.GetGeometryRender();

            if (render != null)
            {
                if (render.RenderType == gviRenderType.gviRenderSimple)
                {
                    IGeometrySymbol geoSymbol = (render as ISimpleGeometryRender).Symbol;
                    txtScript.Text = geoSymbol.Script;

                    switch (geoSymbol.SymbolType)
                    {
                    case gviGeometrySymbolType.gviGeoSymbolPoint:
                    {
                        cbCOMProperties.Items.Add("Size");
                        cbCOMProperties.Items.Add("FillColor");
                    }
                    break;

                    case gviGeometrySymbolType.gviGeoSymbolModelPoint:
                    {
                        cbCOMProperties.Items.Add("Color");
                    }
                    break;

                    case gviGeometrySymbolType.gviGeoSymbolImagePoint:
                    {
                        cbCOMProperties.Items.Add("Size");
                        cbCOMProperties.Items.Add("ImageName");
                    }
                    break;

                    case gviGeometrySymbolType.gviGeoSymbolCurve:
                    {
                        cbCOMProperties.Items.Add("Color");
                        cbCOMProperties.Items.Add("ImageName");
                        cbCOMProperties.Items.Add("RepeatLength");
                        cbCOMProperties.Items.Add("Width");
                    }
                    break;

                    case gviGeometrySymbolType.gviGeoSymbolSurface:
                    {
                        cbCOMProperties.Items.Add("Color");
                    }
                    break;

                    case gviGeometrySymbolType.gviGeoSymbol3DPolygon:
                    {
                        cbCOMProperties.Items.Add("Color");
                        cbCOMProperties.Items.Add("Height");
                    }
                    break;
                    }
                }
            }
            else
            {
                switch (item.type)
                {
                case LayerType.ModelPoint:
                {
                    cbCOMProperties.Items.Add("Color");
                }
                break;

                case LayerType.Polyline:
                {
                    cbCOMProperties.Items.Add("Color");
                    cbCOMProperties.Items.Add("ImageName");
                    cbCOMProperties.Items.Add("RepeatLength");
                    cbCOMProperties.Items.Add("Width");
                }
                break;

                case LayerType.Point:
                {
                    cbCOMProperties.Items.Add("Size");
                    cbCOMProperties.Items.Add("FillColor");
                    cbCOMProperties.Items.Add("ImageName");
                }
                break;

                case LayerType.Polygon:
                {
                    cbCOMProperties.Items.Add("Color");
                    cbCOMProperties.Items.Add("Height");
                }
                break;
                }
            }

            cbFields.Items.Clear();
            IFeatureClass fc = null;

            try
            {
                foreach (System.Guid guid in fcGuidMap.Keys)
                {
                    if (guid.Equals(selectedLayer.FeatureClassId))
                    {
                        fc = fcGuidMap[guid] as IFeatureClass;
                    }
                }

                IFieldInfoCollection fields = fc.GetFields();
                for (int i = 0; i < fields.Count; i++)
                {
                    IFieldInfo field = fields.Get(i);
                    if (field.FieldType == gviFieldType.gviFieldGeometry || field.FieldType == gviFieldType.gviFieldBlob)
                    {
                        continue;
                    }
                    cbFields.Items.Add(field.Name);
                }
            }
            catch (System.Exception ex)
            {
            }

            type = item.type;
        }