Esempio n. 1
0
        private void MoveEachFeature(GSOFeatureFolder folder, double daltX, double daltY)
        {
            GSOFeatures features = folder.Features;

            for (int i = 0; i < features.Length; i++)
            {
                GSOFeature feature = features[i];
                if (feature is GSOFeatureFolder)
                {
                    MoveEachFeature(feature as GSOFeatureFolder, daltX, daltY);
                }
                else
                {
                    GSOGeometry g = feature.Geometry;
                    if (g != null)
                    {
                        g.MoveXY(daltX, daltY);
                    }

                    //GSOGeoModel model = feature.Geometry as GSOGeoModel;
                    //if (model!=null)
                    //{
                    //    GSOPoint3d pt = model.Position;
                    //    pt.X += daltX;
                    //    pt.Y += daltY;

                    //    model.Position = pt;
                    //}
                }
            }
        }
Esempio n. 2
0
        private void cmbLayer_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBoxShpLayerList.SelectedItem == null)
            {
                return;
            }
            GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(comboBoxShpLayerList.SelectedItem.ToString().Trim());

            if (layer == null)
            {
                return;
            }
            textBoxNewLayerName.Text = layer.Caption;

            GSOFeatures features = layer.GetAllFeatures();

            if (features.Length == 0)
            {
                return;
            }
            combCode.Items.Clear();
            combDeep.Items.Clear();
            combModelName.Items.Clear();

            for (int i = 0; i < features[0].GetFieldCount(); i++)
            {
                GeoScene.Data.GSOFieldDefn fielddef = (GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i));
                combCode.Items.Add(fielddef.Name);
                combDeep.Items.Add(fielddef.Name);
                combModelName.Items.Add(fielddef.Name);
            }
            combCode.SelectedItem      = "管线点编码";
            combDeep.SelectedItem      = "井深";
            combModelName.SelectedItem = "编号";
        }
 private FrmShowValvesNeedClose(GSOGlobeControl globe, GSOFeatures features, ArrayList list)
 {
     InitializeComponent();
     globeControl1 = globe;
     m_CloseValvesAnalyResFeatures = features;
     m_CloseValvesList             = list;
 }
Esempio n. 4
0
 private FrmShowValvesNeedClose(GSOGlobeControl globe,GSOFeatures features,ArrayList list)
 {
     InitializeComponent();
         globeControl1 = globe;
         m_CloseValvesAnalyResFeatures = features;
         m_CloseValvesList = list;
 }
Esempio n. 5
0
        private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                DataGridView.HitTestInfo hittestinfo = dataGridView1.HitTest(e.X, e.Y);
                if (hittestinfo.RowIndex > -1)
                {
                    contextMenuStrip1.Show(dataGridView1, e.X, e.Y);

                    if (layer == null)
                    {
                        return;
                    }

                    GSOFeatureLayer pFeatureLayer = layer as GSOFeatureLayer;
                    if (pFeatureLayer != null)
                    {
                        features = layer.GetFeatureByName(dataGridView1.Rows[hittestinfo.RowIndex].Cells["编号"].Value.ToString(), true);
                        if (features != null)
                        {
                            for (int i = 0; i < features.Length; i++)
                            {
                                m_feature           = features[i];
                                m_feature.HighLight = false;
                            }
                            globeControl1.Globe.Refresh();
                        }
                    }
                }
            }
        }
        private void cmbLayer_SelectedIndexChanged(object sender, EventArgs e)
        {
            GSOLayer    layer    = ctl.Globe.Layers[cmbLayer.SelectedIndex];
            GSOFeatures features = layer.GetAllFeatures();

            if (features.Length == 0)
            {
                return;
            }

            cmbFrom.Items.Clear();
            cmbTo.Items.Clear();
            cmbRadius.Items.Clear();
            cmbID.Items.Clear();
            for (int i = 0; i < features[0].GetFieldCount(); i++)
            {
                cmbFrom.Items.Add(((GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i))).Name);
                cmbTo.Items.Add(((GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i))).Name);
                cmbRadius.Items.Add(((GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i))).Name);
                cmbID.Items.Add(((GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i))).Name);
            }
            cmbFrom.SelectedItem   = "Deep1";
            cmbTo.SelectedItem     = "Deep2";
            cmbRadius.SelectedItem = "Diameter";
            cmbID.SelectedItem     = "Handle";
        }
Esempio n. 7
0
        private void MoveEachFeature(GSOFeatureFolder folder, double height)
        {
            GSOFeatures features = folder.Features;

            for (int i = 0; i < features.Length; i++)
            {
                GSOFeature feature = features[i];
                if (feature is GSOFeatureFolder)
                {
                    MoveEachFeature(feature as GSOFeatureFolder, height);
                }
                else
                {
                    GSOGeoModel model = feature.Geometry as GSOGeoModel;
                    if (model != null)
                    {
                        GSOPoint3d pt = model.Position;
                        if (model.AltitudeMode == EnumAltitudeMode.ClampToGround)
                        {
                            model.AltitudeMode = EnumAltitudeMode.RelativeToGround;
                        }
                        pt.Z          += height;
                        model.Position = pt;
                    }
                }
            }
        }
        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }

            GSOFeatureLayer pFeatureLayer = geoLayer as GSOFeatureLayer;

            if (pFeatureLayer != null)
            {
                string featureName = dataGridView1.Rows[e.RowIndex].Cells["编号"].Value.ToString();
                if (featureName == "")
                {
                    return;
                }
                GSOFeatures features = pFeatureLayer.GetFeatureByName(featureName, false);
                GSOFeature  feature  = new GSOFeature();
                for (int j = 0; j < features.Length; j++)
                {
                    if (features[j].Name == featureName)
                    {
                        feature = features[j];
                        if (globeControl1 != null)
                        {
                            globeControl1.Globe.FlyToFeature(feature);
                            globeControl1.Globe.Refresh();
                        }
                    }
                }
            }
        }
 private FrmEditLayerAttributesByTable(GSOLayer layer,GSOFeatures selectFeatures, GSOGlobeControl globeControl)
 {
     InitializeComponent();
     geoLayer = layer;
     m_features = selectFeatures;
     globeControl1 = globeControl;
 }
Esempio n. 10
0
        private void buttonMerge_Click(object sender, EventArgs e)
        {
            GSOLayer layerlgd = mGlobeControl.Globe.Layers.Add(textBoxLgdPath.Text.Trim());
            GSOLayer layerkml = mGlobeControl.Globe.Layers.Add(textBoxKmlPath.Text.Trim());
            GSOLayer newlayer = mGlobeControl.Globe.Layers.Add(textBoxSavePath.Text.Trim());

            if (layerlgd.GetAllFeatures().Length > 0)
            {
                GSOFeatures features = layerlgd.GetAllFeatures();
                for (int i = 0; i < features.Length; i++)
                {
                    GSOFeature feature = features[i];
                    newlayer = AddFeatureAndFeatureFolder(feature, newlayer);
                }
            }
            if (layerkml.GetAllFeatures().Length > 0)
            {
                GSOFeatures features = layerkml.GetAllFeatures();
                for (int i = 0; i < features.Length; i++)
                {
                    GSOFeature feature = features[i];
                    newlayer = AddFeatureAndFeatureFolder(feature, newlayer);
                }
            }
            if (newlayer.GetAllFeatures().Length > 0)
            {
                newlayer.SaveAs(textBoxSavePath.Text.Trim());
                MessageBox.Show("合并成功", "提示");
            }
            else
            {
                MessageBox.Show("将要合并的图层不符合要求", "提示");
            }
            this.Close();
        }
Esempio n. 11
0
 //删除
 private void button3_Click(object sender, EventArgs e)
 {
     try
     {
         double min = double.Parse(textBox1.Text);
         double max = double.Parse(textBox2.Text);
         for (int i = 0; i < treeView1.Nodes.Count; i++)
         {
             if (treeView1.Nodes[i].Checked)
             {
                 GSOLayer    layer = treeView1.Nodes[i].Tag as GSOLayer;
                 GSOFeatures fs    = layer.GetAllFeatures();
                 for (int j = fs.Length - 1; j >= 0; j--)
                 {
                     GSOFeature f = fs[j];
                     double     z = f.Geometry.GeoCenterPoint.Z;
                     if (z >= min && z <= max)
                     {
                         layer.RemoveAt(j);
                     }
                 }
             }
         }
     }
     catch (Exception exp)
     {
         exp.GetType();
     }
 }
Esempio n. 12
0
        private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                DataGridView.HitTestInfo hittestinfo = dataGridView1.HitTest(e.X, e.Y);
                if (hittestinfo.RowIndex > -1)
                {

                    contextMenuStrip1.Show(dataGridView1, e.X, e.Y);

                    if (layer == null)
                    {
                        return;
                    }

                    GSOFeatureLayer pFeatureLayer = layer as GSOFeatureLayer;
                    if (pFeatureLayer != null)
                    {
                        features = layer.GetFeatureByName(dataGridView1.Rows[hittestinfo.RowIndex].Cells["编号"].Value.ToString(), true);
                        if (features != null)
                        {
                            for (int i = 0; i < features.Length; i++)
                            {
                                m_feature = features[i];
                                m_feature.HighLight = false;
                            }
                            globeControl1.Globe.Refresh();
                        }
                    }
                }
            }
        }
 private FrmEditLayerAttributesByTable(GSOLayer layer, GSOFeatures selectFeatures, GSOGlobeControl globeControl)
 {
     InitializeComponent();
     geoLayer      = layer;
     m_features    = selectFeatures;
     globeControl1 = globeControl;
 }
Esempio n. 14
0
 private void FrmBatchUpdateFieldValue_FormClosing(object sender, FormClosingEventArgs e)
 {
     globeControl1.Globe.Action = EnumAction3D.ActionNull;
     isSelectObject             = false;
     layer    = null;
     features = null;
 }
Esempio n. 15
0
        /// <summary>
        /// 递归升高/降低给定高度值
        /// </summary>
        /// <param name="folder">要素集</param>
        /// <param name="height">高度/米</param>
        private void MoveEachFeature(GSOFeatureFolder folder, double height)
        {
            GSOFeatures features = folder.Features;

            for (int i = 0; i < features.Length; i++)
            {
                GSOFeature feature = features[i];
                if (feature is GSOFeatureFolder)
                {
                    MoveEachFeature(feature as GSOFeatureFolder, height);
                }
                else
                {
                    GSOGeometry geometry = feature.Geometry;
                    if (geometry != null)
                    {
                        //为了显示升降效果,需要将ClampToGround模式修改为RelativeToGround模式
                        if (geometry.AltitudeMode == EnumAltitudeMode.ClampToGround)
                        {
                            geometry.AltitudeMode = EnumAltitudeMode.RelativeToGround;
                        }
                        //将z轴移动height米
                        geometry.MoveZ(height);
                    }
                }
            }
        }
Esempio n. 16
0
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectIndex = comboBox1.SelectedIndex;

            if (selectIndex >= 0)
            {
                layer = mGlobeControl.Globe.Layers.GetLayerByCaption(comboBox1.SelectedItem.ToString());
                if (layer != null)
                {
                    features = layer.GetAllFeatures();
                    if (features.Length > 0)
                    {
                        GSOFeature feature = features[0];
                        if (feature.GetFieldCount() > 0)
                        {
                            for (int i = 0; i < feature.GetFieldCount(); i++)
                            {
                                GSOFieldDefn defn = (GSOFieldDefn)feature.GetFieldDefn(i);
                                listBox1.Items.Add(defn.Name);
                            }
                        }
                    }
                }
            }
        }
        private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                DataGridView.HitTestInfo hittestinfo = dataGridView1.HitTest(e.X, e.Y);
                if (hittestinfo.RowIndex > -1)
                {
                    string featureName = dataGridView1.Rows[hittestinfo.RowIndex].Cells["编号"].Value.ToString();
                    contextMenuStrip1.Show(dataGridView1, e.X, e.Y);
                    featureName = featureName.Trim();


                    if (geoLayer == null)
                    {
                        return;
                    }
                    GSOFeatures features = geoLayer.GetFeatureByName(featureName, false);

                    for (int j = 0; j < features.Length; j++)
                    {
                        if (features[j].Name == featureName)
                        {
                            m_feature = features[j];
                            if (m_feature != null && m_feature.HighLight == true)
                            {
                                m_feature.HighLight = false;
                                globeControl1.Globe.Refresh();
                            }
                            break;
                        }
                    }
                }
            }
        }
Esempio n. 18
0
        /// <summary>
        /// 获取图层中的所有feature对象,包括featureFolder下面的feature对象
        /// </summary>
        /// <param name="layer"></param>
        /// <returns></returns>
        public static GSOFeatures getRealFeaturesByLayer(GSOLayer layer)
        {
            GSOFeatures realFeatures = new GSOFeatures();

            if (layer != null)
            {
                for (int i = 0; i < layer.GetAllFeatures().Length; i++)
                {
                    GSOFeature feature = layer.GetAt(i);
                    if (feature != null)
                    {
                        if (feature.Type == EnumFeatureType.FeatureFolder)
                        {
                            GSOFeatureFolder featureFolder = feature as GSOFeatureFolder;
                            getRealFeatureByFeatures(featureFolder.Features, ref realFeatures);
                        }
                        else
                        {
                            realFeatures.Add(feature);
                        }
                    }
                }
            }
            return(realFeatures);
        }
        private GSOFeatureDataset CreateDBFeatureDataset(string name)
        {
            if (comboBoxShpLayerList.SelectedItem == null)
            {
                MessageBox.Show("请选择一个Shp图层!", "提示");
                return(null);
            }
            GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(comboBoxShpLayerList.SelectedItem.ToString().Trim());

            if (layer == null)
            {
                MessageBox.Show("Shp图层为空!", "提示");
                return(null);
            }
            GSOFeatures features = layer.GetAllFeatures();

            if (features.Length == 0)
            {
                MessageBox.Show("图层要素个数为0!", "提示");
                return(null);
            }
            GSOFeatureDataset featureDataset = layer.Dataset as GSOFeatureDataset;

            if (featureDataset == null)
            {
                MessageBox.Show("Shp图层不是矢量图层!", "提示");
                return(null);
            }
            if (comboBoxDataSourceList.SelectedItem == null)
            {
                MessageBox.Show("请选择一个目标数据源!", "提示");
                return(null);
            }
            GSODataSource ds = Utility.getDataSourceByFullName(globeControl1, comboBoxDataSourceList.SelectedItem.ToString().Trim());

            if (ds == null)
            {
                MessageBox.Show("选择的目标数据源为空!", "提示");
                return(null);
            }
            GSOFeatureDataset newFeatureDataset = ds.CreateFeatureDataset(name);

            if (newFeatureDataset != null)
            {
                for (int i = 0; i < featureDataset.FieldCount; i++)
                {
                    GeoScene.Data.GSOFieldAttr fielddef = featureDataset.GetField(i);

                    GSOFieldAttr field = new GSOFieldAttr();
                    field.Name      = fielddef.Name;
                    field.Type      = fielddef.Type;
                    field.Width     = fielddef.Width;
                    field.Precision = fielddef.Precision;
                    bool res = newFeatureDataset.AddField(field);
                }
                newFeatureDataset.Save();
            }
            return(newFeatureDataset);
        }
        public FrmShowValveInformation(GSOGlobe _globe, GSOFeatures _features, int _valveCount)
        {
            InitializeComponent();

            globe      = _globe;
            features   = _features;
            valveCount = _valveCount;
        }
Esempio n. 21
0
        public FrmShowValveInformation(GSOGlobe _globe, GSOFeatures _features,int _valveCount)
        {
            InitializeComponent();

            globe = _globe;
            features = _features;
            valveCount = _valveCount;
        }
        private void buttonAnalyse_Click(object sender, EventArgs e)
        {
            if (globeControl1.Globe != null && m_polygon3D != null)
            {
                double dAlt = Convert.ToDouble(textBoxDestAlt.Text);
                //交给系统处理,传入值为面,高度,返回为挖的高度,填的高度,挖的区域,填的区域,全部的面积,最高点,最低点,最后两项默认false,0
                globeControl1.Globe.Analysis3D.DigFillAnalyse(m_polygon3D, dAlt, out m_dDigVolume, out m_dFillVolume,
                                                              out m_dDigArea, out m_dFillArea, out m_dTotalArea, out m_pntMaxAlt, out m_pntMinAlt, false, 0);

                GSOFeature  altFeature   = null;                                                                        //创建一个空要素
                GSOFeatures tempFeatures = globeControl1.Globe.MemoryLayer.GetFeatureByName("DigFillAltPolygon", true); //要素从内存图层里获取
                if (tempFeatures.Length > 0)                                                                            //判断是否获取到
                {
                    altFeature = tempFeatures[0];                                                                       //获取到就直接赋值
                }
                //把传进来的范围面复制一个
                GSOGeoPolygon3D newPolygon = (GSOGeoPolygon3D)m_polygon3D.Clone();
                newPolygon.SetAltitude(dAlt);                                  //给这个面设置高度
                newPolygon.AltitudeMode = EnumAltitudeMode.Absolute;           //高度类型是相对地面

                GSOExtrudeStyle extrudeStyle = new GSOExtrudeStyle();          //拉伸风格
                extrudeStyle.ExtrudeType     = EnumExtrudeType.ExtrudeToValue; //拉伸方式
                extrudeStyle.ExtrudeValue    = m_pntMinAlt.Z;                  //拉伸的值
                extrudeStyle.TailPartVisible = false;                          //末端是否可见

                //多边形风格,立面风格
                GSOSimplePolygonStyle3D extrudePolygonStyle = new GSOSimplePolygonStyle3D();
                extrudePolygonStyle.FillColor = Color.FromArgb(150, 0, 255, 0); //多边形填充颜色
                extrudeStyle.BodyStyle        = extrudePolygonStyle;            //把风格赋给拉伸风格

                //多边形风格,顶层风格
                GSOSimplePolygonStyle3D polygonStyle = new GSOSimplePolygonStyle3D();
                polygonStyle.FillColor = Color.FromArgb(200, 0, 0, 255); //设置颜色

                newPolygon.Style        = polygonStyle;                  //面的顶层风格
                newPolygon.ExtrudeStyle = extrudeStyle;                  //棉的立面风格

                //判断如果要素为空,或者被删除
                if (m_AltFeature == null || m_AltFeature.IsDeleted)
                {
                    //新建一个要素,并且把刚才配置的要素赋值给它
                    m_AltFeature          = new GSOFeature();
                    m_AltFeature.Name     = "DigFillAltPolygon";
                    m_AltFeature.Geometry = newPolygon;
                    globeControl1.Globe.MemoryLayer.AddFeature(m_AltFeature);
                }
                else
                {
                    //如果原来就有,就直接赋值
                    m_AltFeature.Geometry = newPolygon;
                }
                //刷新球
                globeControl1.Globe.Refresh();

                //设置文字
                SetText();
            }
        }
        private void buttonAddAttribute_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("确定要添加该属性字段?", "提示!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                try
                {
                    GSOFeatureLayer pFeatureLayer = geoLayer as GSOFeatureLayer;
                    if (pFeatureLayer == null)
                    {
                        return;
                    }
                    GSOFeatures       feats     = pFeatureLayer.GetAllFeatures();
                    GSOFeatureDataset dateset   = pFeatureLayer.Dataset as GSOFeatureDataset;
                    GSOFieldAttr      fieldattr = new GSOFieldAttr();

                    fieldattr.Name = textBoxAddAttributeName.Text;
                    switch (comboBoxAddAttributeType.SelectedIndex)
                    {
                    case 0:
                        fieldattr.Type  = EnumFieldType.Text;
                        fieldattr.Width = 2000;
                        break;

                    case 1:
                        fieldattr.Type = EnumFieldType.Double;
                        break;

                    case 2:
                        //fieldattr.Type = EnumFieldType.INT16;
                        //fieldattr.Type = EnumFieldType.INT32;
                        fieldattr.Type = EnumFieldType.INT64;
                        break;

                    case 3:
                        fieldattr.Type = EnumFieldType.Date;
                        break;
                    }

                    dateset.AddField(fieldattr);
                    dateset.Save();
                    listBoxAttribute.Items.Add(fieldattr.Name);

                    MessageBox.Show("添加属性字段成功!", "提示!");

                    if (m_globeControl != null)
                    {
                        m_globeControl.Refresh();
                    }
                }
                catch (System.Exception exp)
                {
                    Log.PublishTxt(exp);
                }
            }
        }
Esempio n. 24
0
        private void buttonOk_Click(object sender, EventArgs e)//确定
        {
            if (comboBox1.Text.Trim() == "")
            {
                MessageBox.Show("图层不能为空");
                return;
            }
            if (txtPath.Text.Trim() == "")
            {
                MessageBox.Show("模型路径不能为空");
                return;
            }

            if (textBoxLayerPath.Text.Trim() == "")
            {
                MessageBox.Show("图层保存路径不能为空");
                return;
            }

            GSOLayer newlayer = globeControl1.Globe.Layers.Add(textBoxLayerPath.Text.Trim());

            newlayer.Caption = Path.GetFileNameWithoutExtension(txtPath.Text.Trim());
            GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(comboBox1.Text.Trim());

            if (layer != null)
            {
                GSOFeatures features = layer.GetAllFeatures();
                if (features.Length > 0)
                {
                    for (int i = 0; i < features.Length; i++)
                    {
                        if (features[i] != null && features[i].Geometry != null)
                        {
                            if (features[i].Geometry.Type == EnumGeometryType.GeoPoint3D)
                            {
                                GSOFeature    feature = new GSOFeature();
                                GSOGeoPoint3D point3d = features[i].Geometry as GSOGeoPoint3D;
                                if (point3d != null)
                                {
                                    GSOGeoModel model = new GSOGeoModel();
                                    model.FilePath   = txtPath.Text.Trim();
                                    model.Position   = point3d.Position;
                                    feature.Geometry = model;
                                    newlayer.AddFeature(feature);
                                }
                            }
                        }
                    }
                    globeControl1.Globe.Refresh();
                }
            }

            this.Close();
        }
Esempio n. 25
0
        //取消高亮
        private void button4_Click(object sender, EventArgs e)
        {
            GSOFeatures feats = getFeatures();

            if (feats != null && feats.Length != 0)
            {
                for (int i = 0; i < feats.Length; i++)
                {
                    feats[i].HighLight = false;
                }
            }
            globeControl1.Globe.Refresh();
        }
 public static FrmShowValvesNeedClose getForm(GSOGlobeControl globe, GSOFeatures features, ArrayList list)
 {
     if (form == null)
     {
         form = new FrmShowValvesNeedClose(globe, features, list);
     }
     else
     {
         form.m_CloseValvesAnalyResFeatures = features;
         form.m_CloseValvesList             = list;
     }
     return(form);
 }
Esempio n. 27
0
 public static FrmShowValvesNeedClose getForm(GSOGlobeControl globe, GSOFeatures features, ArrayList list)
 {
     if (form == null)
     {
         form = new FrmShowValvesNeedClose(globe, features, list);
     }
     else
     {
         form.m_CloseValvesAnalyResFeatures = features;
         form.m_CloseValvesList = list;
     }
     return form;
 }
Esempio n. 28
0
        private void buttonOk_Click(object sender, EventArgs e)
        {
            if (comboBoxLayers.Text == "")
            {
                MessageBox.Show("请选择一个图层!");
                return;
            }
            GSOLayer layer = mGlobeControl.Globe.Layers.GetLayerByCaption(comboBoxLayers.Text.Trim());

            if (layer == null)
            {
                MessageBox.Show("您选择的图层不存在!");
                return;
            }

            Color fontColor = textBoxFontColor.BackColor;

            string strFontSize  = comboBoxFontSize.Text;
            double fontSize     = 12;
            bool   blIsFontSize = double.TryParse(strFontSize, out fontSize);

            GSOFeatures features = layer.GetAllFeatures();

            for (int i = 0; i < features.Length; i++)
            {
                GSOFeature feature = features[i];
                if (feature.Geometry != null)
                {
                    switch (feature.Geometry.Type)
                    {
                    case EnumGeometryType.GeoMarker:

                        GSOGeoMarker     marker    = (GSOGeoMarker)feature.Geometry;
                        GSOMarkerStyle3D style     = (marker.Style == null ? new GSOMarkerStyle3D() : (GSOMarkerStyle3D)marker.Style);
                        GSOTextStyle     textStyle = (style.TextStyle == null ? new GSOTextStyle() : style.TextStyle);

                        textStyle.ForeColor = fontColor;
                        textStyle.FontSize  = fontSize;

                        style.TextStyle = textStyle;
                        marker.Style    = style;

                        break;
                    }
                }
                mGlobeControl.Globe.Refresh();
            }
            //layer.Save();
            this.Close();
        }
 private void ClearCloseValvesAnalysis()//清楚阀门分析结果
 {
     if (m_CloseValvesAnalyResFeatures != null)
     {
         for (int i = 0; i < m_CloseValvesList.Count; i++)
         {
             GSOFeature feature = m_CloseValvesList[i] as GSOFeature;
             feature.Label.Text = "";
         }
         globeControl1.Refresh();
         m_CloseValvesAnalyResFeatures = null;
         m_CloseValvesList             = new ArrayList();
     }
 }
Esempio n. 30
0
        public static GSOFeature FindFeatureByUserID(GSOFeatureDataset featdataset, string fieldname, string value)
        {
            GSOFeatures feats = featdataset.GetAllFeatures();

            for (int i = 0; i < feats.Length; i++)
            {
                GSOFeature feat = feats[i];
                if (feat.GetFieldAsString(fieldname) == value)
                {
                    return(feat);
                }
            }
            return(null);
        }
Esempio n. 31
0
 //清楚阀门分析结果
 private void ClearCloseValvesAnalysis()
 {
     if (m_CloseValvesAnalyResFeatures != null)
     {
         for (int i = 0; i < m_CloseValvesList.Count; i++)
         {
             GSOFeature feature = m_CloseValvesList[i] as GSOFeature;
             feature.Label.Text = "";
         }
         globeControl1.Refresh();
         m_CloseValvesAnalyResFeatures = null;
         m_CloseValvesList = new ArrayList();
     }
 }
        GSOFeatures GetAllRealFeatures(GSOLayer layer)
        {
            if (layer == null)
            {
                return(null);
            }
            GSOFeatures realfeatures = new GSOFeatures();

            for (int i = 0; i < layer.GetAllFeatures().Length; i++)
            {
                GSOFeature feature = layer.GetAllFeatures()[i];
                GetRealFeature(feature, realfeatures);
            }
            return(realfeatures);
        }
 public static FrmEditLayerAttributesByTable GetForm(GSOLayer layer, GSOFeatures selectFeatures, GSOGlobeControl globeControl)
 {
     if (tableAttribute == null)
     {
         tableAttribute = new FrmEditLayerAttributesByTable(layer, selectFeatures, globeControl);
     }
     else
     {
         geoLayer      = layer;
         m_features    = selectFeatures;
         globeControl1 = globeControl;
     }
     tableAttribute.isShow = true;
     return(tableAttribute);
 }
 public static FrmEditLayerAttributesByTable GetForm(GSOLayer layer, GSOFeatures selectFeatures, GSOGlobeControl globeControl)
 {
     if (tableAttribute == null)
     {
         tableAttribute = new FrmEditLayerAttributesByTable(layer, selectFeatures, globeControl);
     }
     else
     {
         geoLayer = layer;
         m_features = selectFeatures;
         globeControl1 = globeControl;
     }
     tableAttribute.isShow = true;
     return tableAttribute;
 }
 private void cancelHighLight(GSOFeatures features)
 {
     if (features != null)
     {
         for (int i = 0; i < features.Length; i++)
         {
             GSOFeature feature = features[i];
             if (feature != null)
             {
                 feature.HighLight = false;
             }
         }
         globeControl1.Globe.Action = EnumAction3D.ActionNull;
     }
 }
Esempio n. 36
0
        /// <summary>
        /// 删除字段
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Delete_Click(object sender, EventArgs e)
        {
            if (null == this.dataGridView1.SelectedCells ||
                1 > this.dataGridView1.SelectedCells.Count)
            {
                MessageBox.Show("请选择要删除的列。");
                return;
            }
            //新建选择列列表
            List <DataGridViewColumn> colsToDel = new List <DataGridViewColumn>();

            for (int i = 0; i < this.dataGridView1.SelectedCells.Count; i++)
            {
                //获取到datagridView中选中的列信息
                var column = this.dataGridView1.Columns[this.dataGridView1.SelectedCells[i].ColumnIndex];
                if (!colsToDel.Contains(column))
                {
                    //添加列信息
                    colsToDel.Add(column);
                }
            }
            //提示是否删除
            if (MessageBox.Show(string.Format("是否删除{0}字段?\n此操作不可撤销。", string.Join(",", colsToDel.AsEnumerable().Select(c => c.Name))),
                                "消息", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                //获得所有要素
                GSOFeatures features = _layer.GetAllFeatures();
                //遍历选中列的列表
                foreach (var item in colsToDel)
                {
                    //遍历所有要素
                    for (int i = 0; i < features.Length; i++)
                    {
                        GSOFeature feature = features[i];
                        //获取选中列在要素属性表中的索引
                        int index = feature.GetFieldIndex(item.Name);
                        //删除该字段
                        feature.DeleteField(index);
                    }
                    //同时删除控件中的列
                    this.dataGridView1.Columns.Remove(item);
                }
                //保存图层
                _layer.Save();
            }
        }
Esempio n. 37
0
        private void cmbLayer_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBoxShpLayerList.SelectedItem == null)
            {
                return;
            }
            GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(comboBoxShpLayerList.SelectedItem.ToString().Trim());

            if (layer == null)
            {
                return;
            }
            textBoxNewLayerName.Text = layer.Caption;
            GSOFeatures features = layer.GetAllFeatures();

            if (features.Length == 0)
            {
                return;
            }
            cmbFrom.Items.Clear();
            cmbTo.Items.Clear();
            cmbRadius.Items.Clear();
            cmbID.Items.Clear();
            cmbMaiSheFangShi.Items.Clear();
            cmbWidth.Items.Clear();
            cmbHeight.Items.Clear();
            for (int i = 0; i < features[0].GetFieldCount(); i++)
            {
                GeoScene.Data.GSOFieldDefn fielddef = (GeoScene.Data.GSOFieldDefn)(features[0].GetFieldDefn(i));

                cmbFrom.Items.Add(fielddef.Name);
                cmbTo.Items.Add(fielddef.Name);
                cmbRadius.Items.Add(fielddef.Name);
                cmbID.Items.Add(fielddef.Name);
                cmbMaiSheFangShi.Items.Add(fielddef.Name);
                cmbWidth.Items.Add(fielddef.Name);
                cmbHeight.Items.Add(fielddef.Name);
            }
            cmbFrom.SelectedItem          = "Deep1";
            cmbTo.SelectedItem            = "Deep2";
            cmbID.SelectedItem            = "Handle";
            cmbRadius.SelectedItem        = "Diameter";
            cmbMaiSheFangShi.SelectedItem = "D_Type";
            cmbWidth.SelectedItem         = "Weight";
            cmbHeight.SelectedItem        = "Height";
        }
Esempio n. 38
0
 //datagrid绑定数据
 public void SetDataTable(GSOFeatures feats)
 {
     if (feats.Length == 0)
     {
         MessageBox.Show("查询结果为空!","提示");
         return;
     }
     GSOFeature feat = feats[0];
     try
     {
         DataTable table = new DataTable();
         for (int i = 0; i < feat.GetFieldCount(); i++)
         {
             GSOFieldDefn field = (GSOFieldDefn)feat.GetFieldDefn(i);
             table.Columns.Add(field.Name);
         }
         for (int i = 0; i < feats.Length; i++)
         {
             GSOFeature f = feats[i];
             DataRow row = table.NewRow();
             for (int j = 0; j < feat.GetFieldCount(); j++)
             {
                 GSOFieldDefn field = (GSOFieldDefn)feat.GetFieldDefn(j);
                 row[j] = f.GetValue(field.Name);
             }
             table.Rows.Add(row);
         }
         dataGridView1.DataSource = table;
         for (int i = 0; i < feats.Length; i++)
         {
             GSOFeature f = feats[i];
             if (dataGridView1.Rows.Count > i)
             {
                 dataGridView1.Rows[i].Tag = f;
             }
         }
     }
     catch (System.Exception exp)
     {
         Log.PublishTxt(exp);
         MessageBox.Show(exp.Message,"提示");
     }
 }
Esempio n. 39
0
        private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex < 0)
                return;

            GSOFeatureLayer pFeatureLayer = layer as GSOFeatureLayer;
            if (pFeatureLayer != null)
            {
                features = layer.GetFeatureByName(dataGridView1.Rows[e.RowIndex].Cells["编号"].Value.ToString(),true);
                if (features != null)
                {
                    for (int i = 0; i < features.Length; i++)
                    {
                        m_feature = features[i];
                        globeControl1.Globe.FlyToFeature(features[i]);
                    }
                    globeControl1.Globe.Refresh();
                }
            }
        }
Esempio n. 40
0
        private void buttonOK_Click(object sender, EventArgs e)
        {
            string filename = textbox1.Text.Trim();
            GSOLayer newlayer =  mGlobeControl.Globe.Layers.Add(filename);

            int indexCount = filename.LastIndexOf('.') - filename.LastIndexOf('\\') - 1;
            string newlayerCaption = "";
            if (indexCount > 0)
            {
                newlayerCaption = filename.Substring(filename.LastIndexOf('\\') + 1, indexCount);
                newlayer.Caption = newlayerCaption;

            }

            for (int i = 0; i < mListPolygon.Count; i++)
            {
                GSOGeoPolygon3D polygon = mListPolygon[i];
                string caption = "";
                if (comboBoxLayerName.SelectedIndex >= 0)
                {
                    caption = comboBoxLayerName.SelectedItem.ToString().Trim();
                }
                GSOLayer layer = mGlobeControl.Globe.Layers.GetLayerByCaption(caption);
                GSOFeatures feats = new GSOFeatures();
                if (layer != null)
                {
                    feats = layer.FindFeaturesInPolygon(polygon, false);
                }
                if (feats != null)
                {
                    newlayer.AddFeatures(feats);
                }
            }
            if (newlayer != null)
            {
                newlayer.SaveAs(filename);
                MessageBox.Show("导出成功!","提示");
            }
            this.Close();
        }
Esempio n. 41
0
 GSOFeatures GetAllRealFeatures(GSOLayer layer)
 {
     if (layer == null)
     {
         return null;
     }
     GSOFeatures realfeatures = new GSOFeatures();
     for (int i = 0; i < layer.GetAllFeatures().Length; i++)
     {
         GSOFeature feature = layer.GetAllFeatures()[i];
         GetRealFeature(feature, realfeatures);
     }
     return realfeatures;
 }
Esempio n. 42
0
 private void VisitFeature3Ds(GSOFeatures feature3ds, TreeNode node)
 {
     for (int i = 0; i < feature3ds.Length; i++)
     {
         GSOFeature feature = feature3ds[i];
         if (feature.Type == EnumFeatureType.FeatureFolder)
         {
             TreeNode tempnode = new TreeNode();
             tempnode.Text = feature.Name;
             tempnode.ImageIndex = 1;
             tempnode.SelectedImageIndex = 1;
             tempnode.Checked = feature.Visible;
             tempnode.Tag = feature;
             node.Nodes.Add(tempnode);
             GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
             VisitFeature3Ds(featureFolder.Features, tempnode);
         }
         else
         {
             TreeNode tempnode = new TreeNode();
             tempnode.Text = feature.Name;
             if (feature.Geometry != null)
             {
                 switch (feature.Geometry.Type)
                 {
                     case EnumGeometryType.GeoPoint3D:
                     case EnumGeometryType.GeoMarker:
                         tempnode.ImageIndex = 3;
                         tempnode.SelectedImageIndex = 3;
                         break;
                     case EnumGeometryType.GeoPolyline3D:
                         tempnode.ImageIndex = 4;
                         tempnode.SelectedImageIndex = 4;
                         break;
                     case EnumGeometryType.GeoPolygon3D:
                         tempnode.ImageIndex = 5;
                         tempnode.SelectedImageIndex = 5;
                         break;
                     case EnumGeometryType.GeoModel:
                     case EnumGeometryType.GeoEntity:
                     case EnumGeometryType.GeoGroupEntity:
                     case EnumGeometryType.GeoSphereEntity:
                     case EnumGeometryType.GeoBoxEntity:
                     case EnumGeometryType.GeoEllipsoidEntity:
                     case EnumGeometryType.GeoCylinderEntity:
                     case EnumGeometryType.GeoFrustumEntity:
                     case EnumGeometryType.GeoEllipCylinderEntity:
                     case EnumGeometryType.GeoEllipFrustumEntity:
                     case EnumGeometryType.GeoRangeEllipsoidEntity:
                     case EnumGeometryType.GeoRangeEllipCylinderEntity:
                     case EnumGeometryType.GeoRangeEllipFrustumEntity:
                         tempnode.ImageIndex = 6;
                         tempnode.SelectedImageIndex = 6;
                         break;
                     case EnumGeometryType.GeoGroundOverlay:
                         tempnode.ImageIndex = 7;
                         tempnode.SelectedImageIndex = 7;
                         break;
                 }
             }
             tempnode.Checked = feature.Visible;
             tempnode.Tag = feature;
             node.Nodes.Add(tempnode);
         }
     }
 }
Esempio n. 43
0
        private void ConnexityAnalysis()
        {
            GSODataset curCAYDataset = m_ConnexityAnalysisFirstLayer.Dataset;
            string srName = curCAYDataset.Name;
            GSONetworkDataset curCAYNDataset = curCAYDataset.DataSource.GetDatasetByName(srName + "Network") as GSONetworkDataset;
            if (curCAYNDataset == null)
            {
                MessageBox.Show("该图层没有创建网络拓扑,请先创建网络拓扑信息再进行分析!", "提示");
                return;
            }

            int[] arryResID;
            curCAYNDataset.ConnexityAnalysis(m_ConnexityAnalysisFirstFeature.ID, m_ConnexityAnaylsisSecondFeature.ID, out arryResID, false, true);
            m_ConnexityAnalyResFeatures = m_ConnexityAnalysisFirstLayer.GetFeaturesByIDs(arryResID);
            if (m_ConnexityAnalyResFeatures == null || m_ConnexityAnalyResFeatures.Length < 1)
            {
                String strLine1 = "管线:" + m_ConnexityAnalysisFirstFeature.ID;
                String strLine2 = "管线:" + m_ConnexityAnaylsisSecondFeature.ID;
                MessageBox.Show(strLine1 + " 与 " + strLine2 + " 不连通", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            else
            {
                int nCount = m_ConnexityAnalyResFeatures.Length;
                GSOGeoPolyline3D effectLine = new GSOGeoPolyline3D();
                GSOPoint3ds effectPart = new GSOPoint3ds();
                for (int i = 0; i < nCount; i++)
                {
                    m_ConnexityAnalyResFeatures[i].HighLight = true;
                    GSOGeoPolyline3D geoline = m_ConnexityAnalyResFeatures[i].Geometry as GSOGeoPolyline3D;
                    if (geoline != null)
                    {
                        //管线显示流动效果
                        for (int j = 0; j < geoline.PartCount; j++)
                        {
                            effectLine.AddPart(geoline[j]);
                        }
                    }
                }
                effectLine.SmoothToSpline();
                GSOFeature feature = new GSOFeature();
                feature.Geometry = effectLine;
                if (feature.Geometry.Style == null)
                {
                    feature.Geometry.Style = new GSOSimpleLineStyle3D();
                }
                feature.Geometry.AltitudeMode = EnumAltitudeMode.RelativeToGround;
                ((GSOStyle3D)feature.Geometry.Style).UsingBlur = true;
                globeControl1.Globe.MemoryLayer.AddFeature(feature);

                GSOAniFeature featureAnimation = new GSOAniFeature();//动画的类型--要素动画
                featureAnimation.Feature = feature;                  //动画的关联对象

                GSOGeoMarker marker = new GSOGeoMarker(0, 0, 0,"");
                GSOMarkerStyle3D markerStyle = new GSOMarkerStyle3D();
                markerStyle.IconPath = Application.StartupPath + "/Resource/image/star4.bmp";
                marker.Style = markerStyle;
                marker.AltitudeMode = EnumAltitudeMode.RelativeToGround;
                GSOFeature markerFeature = new GSOFeature();
                markerFeature.Geometry = marker;

                GSOAniEffectLineGrow effect = new GSOAniEffectLineGrow();//动画效果-线增长动画
                effect.StartValue = 0;
                effect.EndValue = 1;
                effect.FrameCount = 1200;
                effect.RepeatCount = 1;
                effect.IsSmooth = false;
                effect.ActorFeature = markerFeature;

                GSOAniKeyFrame keyFream = new GSOAniKeyFrame(); //关键帧
                keyFream.Frame = 0;
                keyFream.AddEffect(effect);                     //给关键帧添加动画效果

                GSOAniObjTimeLine timeLine = new GSOAniObjTimeLine();//动画对象
                timeLine.Name = "线增长动画对象";
                timeLine.AniObject = featureAnimation;               //动画对象的动画类型
                timeLine.AddKeyFrame(keyFream);                      //给动画对象添加关键帧

                GSOAnimationPage page = new GSOAnimationPage();      //动画
                page.FPS = 60;                                       //动画--帧率
                page.FrameCount = 20 * 60; //动画时长 * 帧率         //动画--帧总数
                page.Name = "线增长动画";
                page.AddObjTimeLine(timeLine);                       //给动画添加动画对象

                globeControl1.Globe.AnimationPages.Add(page);

                globeControl1.Globe.AnimationPages.GetAt(globeControl1.Globe.AnimationPages.Length - 1).Play();

                globeControl1.Refresh();
            }
        }
Esempio n. 44
0
        private void 属性ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TreeNode node = (TreeNode)layerNodeContexMenu.Tag;
            if (node != null)
            {
                string name = node.Text;
                string path = "";
                string type = "";
                double opaque = 0.0d;
                bool isEdit = false;

                if (node.Parent == layerManagerNode)
                {
                    GSOLayer layer = (GSOLayer)node.Tag;
                    if (layer != null)
                    {
                        if (layer.Dataset != null && layer.Dataset.DataSource != null)
                        {
                            GSODataSource ds = layer.Dataset.DataSource;
                            if (ds.Type == EnumDataSourceType.SqlServer)
                            {
                                path = ds.Name.Substring(0, ds.Name.IndexOf("_"));
                            }
                            else if (ds.Type == EnumDataSourceType.Oracle)
                            {
                                path = ds.Name.Substring(0, ds.Name.IndexOf("/"));
                            }
                        }
                        else
                        {
                            path = layer.Name;
                        }
                        GSOFeatures feats = new GSOFeatures();
                        count = 0;
                        GetReallyFeature(layer.GetAllFeatures());

                        type = layer.Type.ToString();
                        opaque = layer.Opaque;
                        isEdit = layer.Editable;

                        MessageBox.Show("图层名称:" + name + "\n\n路径:" + path + "\n\n类型:" + type
                            + "\n\n不透明度:" + opaque.ToString() + "\n\n可编辑:" + isEdit.ToString()
                            + "\n\n共有 " + count.ToString() + " 条记录", "属性", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }
Esempio n. 45
0
 private void FrmPipelineIndented_Load(object sender, EventArgs e)
 {
     if (globeControl1 != null)
     {
         for (int i = 0; i < globeControl1.Globe.Layers.Count; i++)
         {
             GSOLayer layer = globeControl1.Globe.Layers[i];
             if (layer != null && layer.Type == EnumLayerType.FeatureLayer)
             {
                 comboBoxLayerCaption.Items.Add(layer.Caption);
                 comboBoxLayerValveCaption.Items.Add(layer.Caption);
             }
         }
     }
     featuresIndented = new GSOFeatures();
     featuresInit = new GSOFeatures();
 }
Esempio n. 46
0
 private void FrmBatchUpdateFieldValue_FormClosing(object sender, FormClosingEventArgs e)
 {
     globeControl1.Globe.Action = EnumAction3D.ActionNull;
     isSelectObject = false;
     layer = null;
     features = null;
 }
Esempio n. 47
0
        private void FrmPolygonToWater_Load(object sender, EventArgs e)
        {
            mFeatures = mLayer.GetAllFeatures();
            mFeaturesOld = new GSOFeatures();
            bool hasGeoWater = false;
            for (int i = 0; i < mFeatures.Length; i++)
            {
                if (mFeatures[i] != null)
                {
                    mFeaturesOld.Add(mFeatures[i].Clone());
                    if (!hasGeoWater)
                    {
                        if (mFeatures[i].Geometry != null && mFeatures[i].Geometry.Type == EnumGeometryType.GeoWater)
                        {
                            GSOGeoWater geoWater = (GSOGeoWater)mFeatures[i].Geometry;
                            // 水一般都是绝对高度模式
                            //geoWater.Altitude = EnumAltitudeMode.Absolute;

                            textBoxWaveSpeedX.Text = geoWater.WaveSpeedX.ToString();
                            textBoxWaveSpeedY.Text = geoWater.WaveSpeedY.ToString();
                            textBoxWaveWidth.Text = geoWater.WaveWidth.ToString();
                            pictureBoxWaterColor.BackColor = geoWater.WaterColor;
                            pictureBoxReflectColor.BackColor = geoWater.ReflectColor;
                            textBoxNormalImage.Text = geoWater.WaveNormalImage;
                            textBoxDuDvImage.Text = geoWater.WaveDuDvImage;
                            checkboxReflectSky.Checked = geoWater.ReflectSky;
                            checkBoxWaveLOD.Checked = geoWater.UseWaveLOD;

                            hasGeoWater = true;
                        }
                    }
                }
            }
            if (!hasGeoWater)
            {
                textBoxWaveSpeedX.Text = "" + 0;
                textBoxWaveSpeedY.Text = "" + 0.00999999977648258;
                textBoxWaveWidth.Text = "" + 1;
                comboBoxLightType.SelectedIndex = 0;
            }
        }
Esempio n. 48
0
        //上下游追踪
        private void NetworkTraceUpDown(Boolean bTraceUp)
        {
            if (globeControl1.Globe.SelectedObject == null)
            {
                MessageBox.Show("请点击“工具”—“选中对象”选择一条线!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            GSOFeature selLineFeature = globeControl1.Globe.SelectedObject;
            if (selLineFeature.Geometry == null || selLineFeature.Geometry.Type != EnumGeometryType.GeoPolyline3D)
            {
                MessageBox.Show("请点击“工具”—“选中对象”选择一条线!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            if (globeControl1.Globe.SelectedObjectLayer == null)
            {
                return;
            }

            GSODataset curCAYDataset = globeControl1.Globe.SelectedObjectLayer.Dataset;
            if (curCAYDataset == null || curCAYDataset.DataSource == null)
            {
                MessageBox.Show("选中对象所在图层不是数据库图层!", "提示");
                return;
            }

            string srName = curCAYDataset.Name;
            GSONetworkDataset curCAYNDataset = curCAYDataset.DataSource.GetDatasetByName(srName + "Network") as GSONetworkDataset;

            if (curCAYNDataset == null)
            {
                MessageBox.Show("选中对象所在图层没有创建拓扑!","提示");
                return;
            }

            int[] arryResID;
            curCAYNDataset.TraceUpDownAnalysis(selLineFeature.ID, out arryResID, bTraceUp, false, true);
            m_TraceUpDownAnalyResFeatures = globeControl1.Globe.SelectedObjectLayer.GetFeaturesByIDs(arryResID);
            if (m_TraceUpDownAnalyResFeatures == null || m_TraceUpDownAnalyResFeatures.Length < 1)
            {
                String strLine1 = "没有上游!";
                if (!bTraceUp)
                {
                    strLine1 = "没有下游!";

                }
                MessageBox.Show(strLine1);
            }
            else
            {
                int nCount = m_TraceUpDownAnalyResFeatures.Length;

                //显示箭头
                for (int i = 0; i < nCount; i++)
                {
                    m_TraceUpDownAnalyResFeatures[i].HighLight = true;
                    GSOGeoPolyline3D geoline = m_TraceUpDownAnalyResFeatures[i].Geometry as GSOGeoPolyline3D;
                    if (geoline != null)
                    {
                        GSOLineStyle3D lineStyle = geoline.Style as GSOLineStyle3D;
                        if (lineStyle != null)
                        {
                            if (lineStyle.ArrowStyle == null)
                            {
                                lineStyle.ArrowStyle = new GSOArrowStyle();
                                lineStyle.ArrowStyle.BodyWidth = 2;
                                lineStyle.ArrowStyle.BodyLen = 6;
                                lineStyle.ArrowStyle.HeadWidth = 8;
                                lineStyle.ArrowStyle.HeadLen = 10;
                                lineStyle.ArrowStyle.OutlineVisible = true;
                                lineStyle.ArrowStyle.OutlineColor = Color.Red;
                                lineStyle.ArrowStyle.Speed = lineStyle.ArrowStyle.Speed / 2;
                            }
                            lineStyle.ArrowVisible = true;
                            lineStyle.ArrowStyle.Play();
                        }
                    }
                }

                //动画
                //GSOLayer layer = globeControl1.Globe.Layers.Add(Application.StartupPath + "/MyPlace.kml");
                //if (layer != null)
                //{
                //    GSOAnimationPage page = new GSOAnimationPage();      //动画
                //    page.FPS = 60;                                       //动画--帧率
                //    page.FrameCount = 20 * 60; //动画时长 * 帧率         //动画--帧总数
                //    page.Name = "线增长动画";
                //    GSOAniObjTimeLine timeLine = new GSOAniObjTimeLine();//动画对象
                //    timeLine.Name = "线增长动画对象";

                //    for (int i = 0; i < nCount; i++)
                //    {
                //        m_TraceUpDownAnalyResFeatures[i].HighLight = false;
                //        GSOGeoPolyline3D geoline = m_TraceUpDownAnalyResFeatures[i].Geometry as GSOGeoPolyline3D;
                //        if (geoline != null && geoline.PartCount > 0)
                //        {
                //            GSOPoint3d endPoint = geoline[0][0];
                //            if (endPoint != null)
                //            {
                //                GSOFeatures featuresInPolygon = getFeatureByPolygon(layer, m_TraceUpDownAnalyResFeatures, endPoint, 0.1);
                //                if (featuresInPolygon != null && featuresInPolygon.Length == 0)
                //                {
                //                    timeLine = createKeyFrame(timeLine, m_TraceUpDownAnalyResFeatures[i]);
                //                    endPoint = geoline[geoline.PartCount - 1][geoline[geoline.PartCount - 1].Count - 1];
                //                }
                //            }
                //        }
                //    }

                //    page.AddObjTimeLine(timeLine);
                //    globeControl1.Globe.AnimationPages.Add(page);
                //    globeControl1.Globe.AnimationPages.GetAt(globeControl1.Globe.AnimationPages.Length - 1).Play();
                //    globeControl1.Refresh();
                //}
                //else
                //{
                //    MessageBox.Show("没有动画演示需要的临时图层MyPlace","提示");
                //}

                globeControl1.Refresh();
            }
        }
Esempio n. 49
0
        private bool apply()
        {
            double waveSpeedX = 0;
            if (!double.TryParse(textBoxWaveSpeedX.Text.Trim(), out waveSpeedX))
            {
                MessageBox.Show("水波横向速度不符合要求");
                return false ;
            }
            double waveSpeedY = 0;
            if (!double.TryParse(textBoxWaveSpeedY.Text.Trim(), out waveSpeedY))
            {
                MessageBox.Show("水波纵向速度不符合要求");
                return false;
            }
            double waveWidth = 0;
            if (!double.TryParse(textBoxWaveWidth.Text.Trim(), out waveWidth))
            {
                MessageBox.Show("水波宽度不符合要求");
                return false;
            }
            Color waterColor = pictureBoxWaterColor.BackColor;
            Color reflectorColor = Color.FromArgb(Convert.ToByte(upDownReflectOpaque.Value), pictureBoxReflectColor.BackColor);
            int intLightType = comboBoxLightType.SelectedIndex;
            string waveNormalImagePath = textBoxNormalImage.Text;
            string waveDuDvImagePath = textBoxDuDvImage.Text;
            GSOFeatures featuresAdded = new GSOFeatures();
            GSOFeatures featuresNomal = new GSOFeatures();
            for (int i = mFeatures.Length - 1; i >= 0 ; i--)
            {
                GSOFeature feature = mFeatures[i];
                if (feature != null && feature.Geometry != null)
                {
                    if (feature.Geometry.Type == EnumGeometryType.GeoPolygon3D)
                    {
                        GSOGeoPolygon3D geoPolygon3d = (GSOGeoPolygon3D)feature.Geometry;
                        GSOGeoWater geoWater = geoPolygon3d.ConvertToGeoWater();
                        // 水一般都是绝对高度模式
                        //geoWater.Altitude = EnumAltitudeMode.Absolute;

                        geoWater.WaveSpeedX = waveSpeedX;
                        geoWater.WaveSpeedY = waveSpeedY;
                        geoWater.WaveWidth = waveWidth;
                        geoWater.WaterColor = waterColor;
                        geoWater.ReflectColor = reflectorColor;
                        geoWater.WaveNormalImage = waveNormalImagePath;
                        geoWater.WaveDuDvImage = waveDuDvImagePath;
                        geoWater.ReflectSky = checkboxReflectSky.Checked;
                        geoWater.UseWaveLOD = checkBoxWaveLOD.Checked;

                        GSOFeature newFeature = feature.Clone();
                        geoWater.Play();
                        newFeature.Geometry = geoWater;

                        featuresAdded.Add(newFeature);

                    }
                    else if (feature.Geometry.Type == EnumGeometryType.GeoWater)
                    {
                        GSOGeoWater geoWater = (GSOGeoWater)feature.Geometry;
                        // 水一般都是绝对高度模式
                        //geoWater.Altitude = EnumAltitudeMode.Absolute;

                        geoWater.WaveSpeedX = waveSpeedX;
                        geoWater.WaveSpeedY = waveSpeedY;
                        geoWater.WaveWidth = waveWidth;
                        geoWater.WaterColor = waterColor;
                        geoWater.ReflectColor = reflectorColor;
                        geoWater.WaveNormalImage = waveNormalImagePath;
                        geoWater.WaveDuDvImage = waveDuDvImagePath;
                        geoWater.ReflectSky = checkboxReflectSky.Checked;
                        geoWater.UseWaveLOD = checkBoxWaveLOD.Checked;

                        GSOFeature newFeature = feature.Clone();
                        geoWater.Play();
                        newFeature.Geometry = geoWater;

                        featuresAdded.Add(newFeature);
                    }
                    else
                    {
                        featuresNomal.Add(feature);
                    }
                }
            }
            mLayer.RemoveAllFeature();
            mLayer.AddFeatures(featuresAdded);
            mLayer.AddFeatures(featuresNomal);
            mGlobeControl.Refresh();
            return true;
        }
Esempio n. 50
0
 private GSOFeatures getFeatureByPolygon(GSOLayer layer,GSOFeatures features, GSOPoint3d point, double allowValue)
 {
     if (layer == null || point == null || allowValue <= 0)
     {
         return null;
     }
     GSOGeoPolyline3D bufferLine = new GSOGeoPolyline3D();
     GSOPoint3ds points = new GSOPoint3ds();
     points.Add(point);
     GSOPoint3d newPoint = new GSOPoint3d();
     newPoint.X = point.X + 0.00001;
     newPoint.Y = point.Y;
     newPoint.Z = point.Z;
     points.Add(newPoint);
     bufferLine.AddPart(points);
     GSOGeoPolygon3D polygon = bufferLine.CreateBuffer(allowValue, true, 12, false, false);
     layer.RemoveAllFeature();
     layer.AddFeatures(features);
     GSOFeatures featuresInPolygon = layer.FindFeaturesInPolygon(polygon, false);
     return featuresInPolygon;
 }
Esempio n. 51
0
        void AddFeaturesNodeToMyPlace(GSOFeatures features)
        {
            if (features==null)
            {
                return;
            }

            for (Int32 i = 0; i < features.Length; i++)
            {
                GSOFeature feature = features[i];
                if (feature.Type == EnumFeatureType.FeatureFolder)
                {
                    GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
                    AddFeaturesNodeToMyPlace(featureFolder.Features);
                }
                else
                {
                    TreeNode tempnode = new TreeNode();
                    tempnode.Text = feature.Name;
                    if (feature.Geometry != null)
                    {
                        switch (feature.Geometry.Type)
                        {
                            case EnumGeometryType.GeoPoint3D:
                            case EnumGeometryType.GeoMarker:
                                tempnode.ImageIndex = 3;
                                tempnode.SelectedImageIndex = 3;
                                break;
                            case EnumGeometryType.GeoPolyline3D:
                                tempnode.ImageIndex = 4;
                                tempnode.SelectedImageIndex = 4;
                                break;
                            case EnumGeometryType.GeoPolygon3D:
                                tempnode.ImageIndex = 5;
                                tempnode.SelectedImageIndex = 5;
                                break;
                            case EnumGeometryType.GeoModel:
                            case EnumGeometryType.GeoEntity:
                            case EnumGeometryType.GeoGroupEntity:
                            case EnumGeometryType.GeoSphereEntity:
                            case EnumGeometryType.GeoBoxEntity:
                            case EnumGeometryType.GeoEllipsoidEntity:
                            case EnumGeometryType.GeoCylinderEntity:
                            case EnumGeometryType.GeoFrustumEntity:
                            case EnumGeometryType.GeoEllipCylinderEntity:
                            case EnumGeometryType.GeoEllipFrustumEntity:
                            case EnumGeometryType.GeoRangeEllipsoidEntity:
                            case EnumGeometryType.GeoRangeEllipCylinderEntity:
                            case EnumGeometryType.GeoRangeEllipFrustumEntity:
                                tempnode.ImageIndex = 6;
                                tempnode.SelectedImageIndex = 6;
                                break;
                            case EnumGeometryType.GeoGroundOverlay:
                                tempnode.ImageIndex = 7;
                                tempnode.SelectedImageIndex = 7;
                                break;
                        }

                    }
                    GSOFeature newFeature = globeControl1.Globe.MemoryLayer.AddFeature(feature);
                    tempnode.Checked = newFeature.Visible;
                    tempnode.Tag = newFeature;
                    myPlaceNode.Nodes.Add(tempnode);
                }
            }
        }
Esempio n. 52
0
        private void btnApply_Click(object sender, EventArgs e)
        {
            GSOLayer layer = ctl.Globe.Layers.GetLayerByCaption(cmbLayers.Text.Trim());
            if (layer == null)
            {
                MessageBox.Show("请选择图层", "提示");
                return;
            }
            if (layer.Type != EnumLayerType.FeatureLayer)
            {
                MessageBox.Show("当前选中的图层不是模型图层!", "提示");
                return;
            }
            GSOFeatureLayer flayer = layer as GSOFeatureLayer;
            GSOFeatures features = new GSOFeatures();
            if (radioButtonElevateAllFeature.Checked == true)
            {
                features = flayer.GetAllFeatures();
            }
            else if (radioButtonElevatePartFeature.Checked == true)
            {
                string fieldName = comboBoxFieldNames.Text.Trim();
                if (fieldName == "")
                {
                    MessageBox.Show("请选择字段名称!", "提示");
                    return;
                }
                if (listViewFieldValues.SelectedItems.Count <= 0)
                {
                    MessageBox.Show("请选中一个字段值!", "提示");
                    return;
                }
                string fieldValue = listViewFieldValues.SelectedItems[0].Text.Trim();
                features = flayer.GetFeatureByFieldValue(fieldName, fieldValue,true);
            }

            string elevateHeight = txtHeight.Text.Trim();
            double height = 0;
            if (txtHeight.Text == "" || double.TryParse(elevateHeight, out height) == false)
            {
                MessageBox.Show("请输入正确的调整高度", "提示");
                return;
            }

            for (int i = 0; i < features.Length; i++)
            {
                GSOFeature feature = features[i];
                if (feature is GSOFeatureFolder)
                {
                    MoveEachFeature(feature as GSOFeatureFolder, height);
                }
                else if (feature.Geometry is GSOGeoModel)
                {
                    GSOGeoModel model = feature.Geometry as GSOGeoModel;
                    if (model != null)
                    {
                        GSOPoint3d pt = model.Position;
                        pt.Z += height;
                        model.Position = pt;
                    }
                }
                else if (feature.Geometry is GSOGeoPolyline3D)
                {
                    GSOGeoPolyline3D templine = feature.Geometry as GSOGeoPolyline3D;
                    if (templine != null)
                    {
                        templine.MoveZ(height);
                        feature.Geometry = templine;
                    }
                }
            }
            ctl.Refresh();
            MessageBox.Show("抬升成功", "提示");
        }
Esempio n. 53
0
        //阀门分析
        private bool NetworkCloseValvesAnalysis(GSOFeature lineFeature, GSOPoint3d pntBreak, GSOLayer lineLayer)
        {
            if (lineLayer == null || lineFeature == null || lineFeature.Geometry == null || lineFeature.Geometry.Type != EnumGeometryType.GeoPolyline3D)
            {
                return false;
            }
            GSODataset curCAYDataset = lineLayer.Dataset;

            if (curCAYDataset == null || curCAYDataset.DataSource == null)
            {
                return false;
            }
            string srName = curCAYDataset.Name;
            GSONetworkDataset curCAYNDataset = curCAYDataset.DataSource.GetDatasetByName(srName + "Network") as GSONetworkDataset;

            if (curCAYNDataset == null)
            {
                MessageBox.Show("该图层没有创建网络拓扑,请先创建网络拓扑信息再进行分析!", "提示");
                return false;
            }
            ClearCloseValvesAnalysisMenuItem_Click(null, null);

            int[] arryResNodeID;
            int[] arryResValveID;
            curCAYNDataset.CloseValveAnalysis(lineFeature.ID, out arryResNodeID, out arryResValveID, false, true);
            if (arryResValveID != null)
            {
                if (lineFeature.GetFieldAsInt32("管线编码") >= 6000 && lineFeature.GetFieldAsInt32("管线编码") <= 6203)  // 6100是热力管线的编码
                {
                    GSOLayer ValveLayer = globeControl1.Globe.Layers.GetLayerByCaption("热力阀门");
                    if (ValveLayer != null)
                    {
                        m_CloseValvesAnalyResFeatures = ValveLayer.GetFeaturesByIDs(arryResValveID);
                    }
                }
                else if (lineFeature.GetFieldAsInt32("管线编码") >= 5000 && lineFeature.GetFieldAsInt32("管线编码") <= 5200)  // 5000是燃气管线的编码
                {
                    GSOLayer ValveLayer = globeControl1.Globe.Layers.GetLayerByCaption("燃气阀门");
                    if (ValveLayer != null)
                    {
                        m_CloseValvesAnalyResFeatures = ValveLayer.GetFeaturesByIDs(arryResValveID);
                    }
                }
                else if (lineFeature.GetFieldAsInt32("管线编码") >= 3000 && lineFeature.GetFieldAsInt32("管线编码") <= 3513)  // 3000是给水管线的编码
                {
                    GSOLayer ValveLayer = globeControl1.Globe.Layers.GetLayerByCaption("给水阀门");
                    if (ValveLayer != null)
                    {
                        m_CloseValvesAnalyResFeatures = ValveLayer.GetFeaturesByIDs(arryResValveID);
                    }
                }
            }
            if (m_CloseValvesAnalyResFeatures == null ||
                m_CloseValvesAnalyResFeatures.Length < 1)
            {
                MessageBox.Show("没有找到要关闭的阀门!");
            }
            else
            {
                int nCount = m_CloseValvesAnalyResFeatures.Length;
                if (nCount > 0)
                {
                    FrmShowValvesNeedClose frm = FrmShowValvesNeedClose.getForm(globeControl1, m_CloseValvesAnalyResFeatures, m_CloseValvesList);
                    frm.setLstValvesName();
                    if (!frm.Visible)
                    {
                        frm.Show(this);
                    }
                }
            }
            return true;
        }
Esempio n. 54
0
 void GetRealFeature(GSOFeature feature, GSOFeatures realfeatures)
 {
     if (feature == null || realfeatures == null)
     {
         return;
     }
     if (feature.Type == EnumFeatureType.Feature)
     {
         realfeatures.Add(feature);
     }
     else if (feature.Type == EnumFeatureType.FeatureFolder)
     {
         GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature;
         for (int i = 0; i < featureFolder.Features.Length; i++)
         {
             GetRealFeature(featureFolder.Features[i],realfeatures);
         }
     }
 }
Esempio n. 55
0
 private void cancelHighLight(GSOFeatures features)
 {
     if (features != null)
     {
         for (int i = 0; i < features.Length; i++)
         {
             GSOFeature feature = features[i];
             if (feature != null)
             {
                 feature.HighLight = false;
             }
         }
         globeControl1.Globe.Action = EnumAction3D.ActionNull;
     }
 }
Esempio n. 56
0
 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
     int selectIndex = comboBox1.SelectedIndex;
     if (selectIndex >= 0)
     {
         layer = mGlobeControl.Globe.Layers.GetLayerByCaption(comboBox1.SelectedItem.ToString());
         if (layer != null)
         {
             features = layer.GetAllFeatures();
             if (features.Length > 0)
             {
                 GSOFeature feature = features[0];
                 if (feature.GetFieldCount() > 0)
                 {
                     for (int i = 0; i < feature.GetFieldCount(); i++)
                     {
                         GSOFieldDefn defn = (GSOFieldDefn)feature.GetFieldDefn(i);
                         listBox1.Items.Add(defn.Name);
                     }
                 }
             }
         }
     }
 }
Esempio n. 57
0
 private GSOFeatures getFeatures()
 {
     try
     {
         GSOFeatures feats = new GSOFeatures();
         double min = double.Parse(textBox1.Text);
         double max = double.Parse(textBox2.Text);
         for (int i = 0; i < treeView1.Nodes.Count; i++)
         {
             if (treeView1.Nodes[i].Checked)
             {
                 GSOLayer layer = treeView1.Nodes[i].Tag as GSOLayer;
                 GSOFeatures fs = layer.GetAllFeatures();
                 for (int j = 0; j < fs.Length; j++)
                 {
                     GSOFeature f = fs[j];
                     double z = f.Geometry.GeoCenterPoint.Z;
                     if (f != null && f.Geometry != null && f.Geometry.Type == EnumGeometryType.GeoModel)
                     {
                         GSOGeoModel model = f.Geometry as GSOGeoModel;
                         z = model.PositionZ;
                     }
                     if (z >= min && z <= max)
                     {
                         feats.Add(f);
                     }
                 }
             }
         }
         return feats;
     }
     catch (Exception exp)
     {
         exp.GetType();
     }
     return null;
 }
Esempio n. 58
0
        public static GSOFeatures Table2Features(DataTable table, string currentQueryLayer,GeoScene.Globe.GSOGlobeControl globeControl1)
        {
            GSOFeatures features = new GSOFeatures();
            for (int i = 0; i < table.Rows.Count; i++)
            {
                DataRow row = table.Rows[i];

                string featureName = row["编号"].ToString();
                featureName = featureName.Trim();
                GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(currentQueryLayer);
                GSOFeatures tempfeatures = layer.GetFeatureByName(featureName, false);
                if (tempfeatures.Length > 0)
                {
                    features.Add(tempfeatures[0]);
                }
            }
            return features;
        }
Esempio n. 59
0
 //清除追踪结果
 private void ClearUpDownTraceMenuItem_Click(object sender, EventArgs e)
 {
     if (m_TraceUpDownAnalyResFeatures != null)
     {
         int nCount = m_TraceUpDownAnalyResFeatures.Length;
         for (int i = 0; i < nCount; i++)
         {
             m_TraceUpDownAnalyResFeatures[i].HighLight = false;
             GSOGeoPolyline3D geoline = m_TraceUpDownAnalyResFeatures[i].Geometry as GSOGeoPolyline3D;
             if (geoline != null)
             {
                 GSOLineStyle3D lineStyle = geoline.Style as GSOLineStyle3D;
                 if (lineStyle != null)
                 {
                     lineStyle.ArrowVisible = false;
                 }
             }
         }
         m_TraceUpDownAnalyResFeatures = null;
     }
 }
 private void GetReallyFeature(GSOFeatures features)
 {
     if (features != null && features.Length > 0)
     {
         for (int i = 0; i < features.Length; i++)
         {
             if (features[i].Type == EnumFeatureType.FeatureFolder)
             {
                 GetReallyFeature(((GSOFeatureFolder)features[i]).Features);
             }
             else
             {
                 countLog++;
             }
         }
     }
 }