예제 #1
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);
                            }
                        }
                    }
                }
            }
        }
예제 #2
0
 public FrmAddFieldToLayer(GSOLayer _layer, DataGridView _dataGridView1)
 {
     InitializeComponent();
     layer         = _layer;
     dataGridView1 = _dataGridView1;
     comboBoxFieldType.SelectedItem = "Text";
 }
예제 #3
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 FrmEditLayerAttributesByTable(GSOLayer layer,GSOFeatures selectFeatures, GSOGlobeControl globeControl)
 {
     InitializeComponent();
     geoLayer = layer;
     m_features = selectFeatures;
     globeControl1 = globeControl;
 }
예제 #5
0
        private void FrmAddWell_Load(object sender, EventArgs e)
        {
            cmbLayer.Items.Clear();
            for (int i = 0; i < globeControl1.Globe.Layers.Count; i++)
            {
                GSOLayer layer = globeControl1.Globe.Layers[i];
                cmbLayer.Items.Add(layer.Caption);
            }

            string filename = Application.StartupPath + "\\config.xml";

            if (File.Exists(filename))
            {
                XmlTextReader XmlReader = new XmlTextReader(filename);
                try
                {
                    while (XmlReader.Read())
                    {
                        if (XmlReader.Name == "GongJing")
                        {
                            string str1 = XmlReader["label"];
                            string str3 = XmlReader["type"];
                            string str2 = XmlReader.ReadElementString();
                            en_cns.Add(str1, str2);
                            fields_types.Add(str1, str3);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.PublishTxt(ex);
                    MessageBox.Show(ex.Message);
                }
            }
        }
 private FrmEditLayerAttributesByTable(GSOLayer layer, GSOFeatures selectFeatures, GSOGlobeControl globeControl)
 {
     InitializeComponent();
     geoLayer      = layer;
     m_features    = selectFeatures;
     globeControl1 = globeControl;
 }
        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";
        }
        private void btn_ImportCAD_Click(object sender, EventArgs e)
        {
            //打开CAD文件
            OpenFileDialog dialog = new OpenFileDialog();

            //定义CAD文件类型
            string[] cadExtension = new string[] { ".dxf", ".dwg" };
            dialog.Filter = "支持格式(*.dxf,*.dwg)|*.dxf;*.dwg";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                //获取文件后缀名
                string fileExt = Path.GetExtension(dialog.FileName);
                //判断是CAD文件并且文件夹下没有同名投影文件
                if (cadExtension.Contains(fileExt) &&
                    !File.Exists(dialog.FileName.Replace(fileExt, ".prj")))
                {
                    MessageBox.Show(Path.GetFileName(dialog.FileName) + "文件不包含投影信息,请选择匹配的投影文件或者重新生成一个投影文件", "未知投影");
                    //添加投影文件窗口
                    FrmAddPrj frm = new FrmAddPrj(dialog.FileName);
                    if (frm.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }
                }
                //添加CAD文件图层
                GSOLayer layer = _glbControl.Globe.Layers.Add(dialog.FileName);
                layer.Editable = true;
                FlyToLayer(layer);  //添加完图层之后视角飞到图层上方
            }
        }
예제 #9
0
        //加载shp文件并显示管线
        private void btn_LoadLayer_Click(object sender, EventArgs e)
        {
            if (_layerAdded)
            {
                return;
            }
            _shpLayer          = _glbControl.Globe.Layers.Add(_testShpPath);
            _shpLayer.Editable = true;
            //设置样式
            GSOPipeLineStyle3D style = new GSOPipeLineStyle3D();

            style.LineColor = Color.Green;
            //管线半径
            style.Radius = _radius;
            //获得默认图层的要素
            var features = _shpLayer.GetAllFeatures();

            //遍历要素
            for (int i = 0; i < features.Length; i++)
            {
                GSOGeoPolyline3D geometry = features[i].Geometry as GSOGeoPolyline3D;
                geometry.Style = style;
                //将高度抬高到管径高度
                geometry.MoveZ(style.Radius);
                //重要,要将高度模式设置成相对地表,如果为依附地面则无渲染效果
                geometry.AltitudeMode = EnumAltitudeMode.RelativeToGround;
            }
            _glbControl.Refresh();
            FlyToLayer(_shpLayer);
        }
 private FrmShowFeatureAttributesByTable(DataTable importDt, GSOLayer layer, GSOGlobeControl globeControl)
 {
     InitializeComponent();
     dt            = importDt;
     geoLayer      = layer;
     globeControl1 = globeControl;
 }
예제 #11
0
 /// <summary>
 /// 鼠标移动的时候
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void GlobeControl1OnMouseMove(object sender, MouseEventArgs e)
 {
     //3D可视域分析
     {
         if (bViewshed3DAnalysisCheck && bViewshed3DAnalysising)
         {
             //如果是第一次分析
             if (curViewshed3DAnalysisOther == null)
             {
                 GSOLayer   resLayer = null;
                 GSOPoint3d resIntersectPoint;
                 globeControl1.Globe.HitTest(e.X, e.Y, out resLayer, out resIntersectPoint, false, true, 0);
                 pntDistDirPoint = resIntersectPoint;
                 curViewshed3DAnalysis.SetDistDirByPoint(resIntersectPoint);
             }
             //如果是其他分析
             else
             {
                 GSOLayer   resLayer = null;
                 GSOPoint3d resIntersectPoint;
                 globeControl1.Globe.HitTest(e.X, e.Y, out resLayer, out resIntersectPoint, false, true, 0);
                 pntDistDirPoint = resIntersectPoint;
                 curViewshed3DAnalysisOther.SetDistDirByPoint(resIntersectPoint);
             }
         }
     }
 }
예제 #12
0
 private void FrmBatchUpdateFieldValue_FormClosing(object sender, FormClosingEventArgs e)
 {
     globeControl1.Globe.Action = EnumAction3D.ActionNull;
     isSelectObject             = false;
     layer    = null;
     features = null;
 }
예제 #13
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();
        }
        private void cbox_Layers_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbox_Layers.SelectedItem == null)
            {
                return;
            }
            GSOLayer m_layer = globeControl1.Globe.Layers.GetLayerByCaption(cbox_Layers.SelectedItem.ToString().Trim());//获取当前选择的layer图层

            if (m_layer == null)
            {
                return;
            }
            listBox_Field.Items.Clear();
            GSOFeatureLayer flayer = m_layer as GSOFeatureLayer;

            if (flayer == null)
            {
                return;
            }
            sourcefDataset = m_layer.Dataset as GSOFeatureDataset;
            if (sourcefDataset == null)
            {
                return;
            }
            sourcefDataset.Open();
            for (int j = 0; j < sourcefDataset.FieldCount; j++)
            {
                GSOFieldAttr fieldef = sourcefDataset.GetField(j);
                listBox_Field.Items.Add(fieldef.Name);
            }
            //设置当前选择字段为第一个
            listBox_Field.SelectedIndex = 0;
            //将描述信息修改
            label3.Text = "SELECT * FROM " + m_layer.Caption + " WHERE:";
        }
예제 #15
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 = "编号";
        }
예제 #16
0
 public FrmAttriTable(GSOGlobeControl glbControl, GSOLayer layer)
 {
     InitializeComponent();
     _glbControl = glbControl;
     _layer      = layer;
     InitialTable();
 }
예제 #17
0
 public FrmAtrributeMapping1(GSOGlobeControl globeControl,GSOLayer layer,GSOFeature feature)
 {
     InitializeComponent();
     m_globeControl = globeControl;
     m_feature = feature;
     m_layer = layer;
 }
 private FrmShowFeatureAttributesByTable(DataTable importDt, GSOLayer layer, GSOGlobeControl globeControl)
 {
     InitializeComponent();
     dt = importDt;
     geoLayer = layer;
     globeControl1 = globeControl;
 }
        //导弹动画
        private void btn_Missile_Click(object sender, EventArgs e)
        {
            //创建相机状态
            GSOCameraState camera = new GSOCameraState();

            camera.Longitude    = 100.42875293029;
            camera.Latitude     = 38.9355930610869;
            camera.Distance     = 12209.9485092387;
            camera.Heading      = -92.7905229605158;
            camera.Tilt         = 68.5957814133134;
            camera.Altitude     = 1490.27994062379;
            camera.AltitudeMode = EnumAltitudeMode.Absolute;
            //添加.lgd图层
            _glbControl.Globe.JumpToCameraState(camera);

            //添加.lgd图层
            GSOLayer layer = _glbControl.Globe.Layers.Add(_missileAnimatePath);

            if (layer != null)
            {
                //添加.gla动画文件
                GSOAnimationPage page = _glbControl.Globe.AnimationPages.AddAnimationPage(_missileAnimatePath.Replace(".lgd", ".gla"));
                if (page != null)
                {
                    page.RepeatCount = 1;
                    page.Play();
                }
            }
        }
 public FrmAtrributeMapping1(GSOGlobeControl globeControl, GSOLayer layer, GSOFeature feature)
 {
     InitializeComponent();
     m_globeControl = globeControl;
     m_feature      = feature;
     m_layer        = layer;
 }
예제 #21
0
        private void btnExportCAD_Click(object sender, EventArgs e)
        {
            globeControl1.Globe.MemoryLayer.RemoveAllFeature();
            int id = GeoScene.Data.GSOProjectManager.AddProject("+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=555484.8092 +y_0=-4114948.631 +ellps=krass +units=m +no_defs");

            for (int i = 0; i < listPoint.Count; i++)
            {
                GSOPoint3d geoPoint = (GSOPoint3d)listPoint[i];
                GSOFeature feature  = listFeat[i] as GSOFeature;
                if (feature != null)
                {
                    if (feature.Geometry.Type == EnumGeometryType.GeoPolyline3D)
                    {
                        GSOPipeLineStyle3D style = feature.Geometry.Style as GSOPipeLineStyle3D;
                        double             r     = style.Radius;
                        //ExportCAD(double.Parse(sortIndex[i, 0].ToString()), geoPoint.Z, r);
                        Export(geoPoint, r);
                    }
                }
            }
            GSOLayer layer = globeControl1.Globe.MemoryLayer;

            layer.Dataset.ImportProjectionRefFromProj4("+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=555484.8092 +y_0=-4114948.631 +ellps=krass +units=m +no_defs");
            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Filter = "*.dxf|*.dxf";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                layer.SaveAs(dlg.FileName);
                globeControl1.Globe.MemoryLayer.RemoveAllFeature();
                MessageBox.Show("导出CAD完成!", "提示");
            }
        }
예제 #22
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();
     }
 }
예제 #23
0
 private void button1_Click(object sender, EventArgs e)//确定
 {
     if (listBox1.SelectedItems.Count > 0)
     {
         GSODataSource ds = Utility.getDataSourceByFullName(globeControl1, comboBoxDataSourceList.SelectedItem.ToString().Trim());
         if (ds != null)
         {
             DateTime timeStart = DateTime.Now;
             for (int i = 0; i < listBox1.SelectedItems.Count; i++)
             {
                 GSODataset dataset = ds.GetDatasetByName(listBox1.SelectedItems[i].ToString().Trim());
                 if (dataset != null)
                 {
                     dataset.Caption = dataset.Name;
                     GSOLayer layer = globeControl1.Globe.Layers.Add(dataset);
                     layer.MaxVisibleAltitude = 7000;
                 }
             }
             TimeSpan timeConnect    = DateTime.Now - timeStart;
             double   secondsConnect = timeConnect.TotalSeconds;
             MessageBox.Show("打开" + listBox1.SelectedItems.Count.ToString() + "个图层, 用时" + secondsConnect.ToString() + "秒", "提示");
             this.Close();
         }
     }
 }
        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 CtrlLineFieldsValuePage(GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl)
        {
            InitializeComponent();
            mGlobeControl = globeControl;
            m_feature     = feature;

            mlayer = layer;
        }
예제 #26
0
        public CtrlLineFieldsValuePage(GSOFeature feature,GSOLayer layer, GSOGlobeControl globeControl)
        {
            InitializeComponent();
            mGlobeControl = globeControl;
            m_feature = feature;

            mlayer = layer;
        }
예제 #27
0
 public static FrmFeatureInfo GetForm(GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl)
 {
     if (featureInfo == null)
     {
         featureInfo = new FrmFeatureInfo(feature, layer, globeControl);
     }
     return(featureInfo);
 }
 private void FrmLayerOperate_Load(object sender, EventArgs e)
 {
     _layer = _glbControl.Globe.Layers.Add(_testLayerPath);
     //设置图层为可编辑
     _layer.Editable = true;
     FlyToLayer(_layer);
     _glbControl.Globe.Action = EnumAction3D.SelectObject;
 }
예제 #29
0
 public static void removeLayer(GSOGlobeControl globeControl1, GSOLayer layer)
 {
     if (globeControl1 != null && layer != null)
     {
         layer.Dataset.DataSource.RemoveDataset(layer.Dataset);
         globeControl1.Globe.Layers.Remove(layer);
     }
 }
예제 #30
0
        public static FrmFeatureInfo GetForm(GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl)
        {
            if (featureInfo == null)
            {
                featureInfo = new FrmFeatureInfo(feature, layer, globeControl);

            }
            return featureInfo;
        }
 private void FrmPipelineModel_Load(object sender, EventArgs e)
 {
     cmbLayer.Items.Clear();
     for (int i = 0; i < ctl.Globe.Layers.Count; i++)
     {
         GSOLayer layer = ctl.Globe.Layers[i];
         cmbLayer.Items.Add(layer.Caption);
     }
 }
예제 #32
0
        public CtrlPolylineSpaceInfo(GSOGeometry geometry,GSOFeature feature,GSOLayer layer,GSOGlobeControl globeControl)
        {
            InitializeComponent();
            m_GlobeControl = globeControl;
            m_Geometry = geometry;

            mlayer = layer;
            mfeature = feature;
        }
예제 #33
0
 private void FrmFlow_Load(object sender, EventArgs e)
 {
     cboxLayer.Items.Clear();
     for (int i = 0; i < globeControl.Globe.Layers.Count; i++)
     {
         GSOLayer layer = globeControl.Globe.Layers[i];
         cboxLayer.Items.Add(layer.Caption);
     }
 }
        public CtrlPolylineSpaceInfo(GSOGeometry geometry, GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl)
        {
            InitializeComponent();
            m_GlobeControl = globeControl;
            m_Geometry     = geometry;

            mlayer   = layer;
            mfeature = feature;
        }
예제 #35
0
        /// <summary>
        /// 向LDB中新建图层数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_EditLayer_Click(object sender, EventArgs e)
        {
            //添加名为Test的图层数据
            GSOFeatureDataset dataset = _ldbDataSource.CreateFeatureDataset("Test");
            //将新建的图层数据添加到Globe控件中
            GSOLayer featureLayer = _glbControl.Globe.Layers.Add(dataset);

            btn_EditFeature.Enabled = true;
        }
예제 #36
0
 public FrmAddPipeFitting(GSOGlobeControl ctl, GSOPoint3d p,GSOLayer _layer)
 {
     InitializeComponent();
     this.globeControl1 = ctl;
     this.point = p;
     layer = _layer;
     plane3DControl = new GSOPlane3DControl();
     panel1.Controls.Add(plane3DControl);
     plane3DControl.Dock = DockStyle.Fill;
 }
예제 #37
0
 public FrmAddPipeFitting(GSOGlobeControl ctl, GSOPoint3d p, GSOLayer _layer)
 {
     InitializeComponent();
     this.globeControl1 = ctl;
     this.point         = p;
     layer          = _layer;
     plane3DControl = new GSOPlane3DControl();
     panel1.Controls.Add(plane3DControl);
     plane3DControl.Dock = DockStyle.Fill;
 }
예제 #38
0
 public CtrlDataGridView(GSOGlobeControl globeControl,GSOLayer layer1, DataTable dt)
 {
     InitializeComponent();
     globeControl1 = globeControl;
     layer = layer1;
     mDataTable = dt;
     countLog = dt.Rows.Count;
     dataGridView1.DataSource = mDataTable;
     dataGridView1.ReadOnly = true;
 }
 public static FrmShowFeatureAttributesByTable GetForm(DataTable importDt, GSOLayer layer, GSOGlobeControl globeControl)
 {
     if (tableAttribute == null)
     {
         tableAttribute = new FrmShowFeatureAttributesByTable(importDt, layer, globeControl);
     }
     else
     {
         dt = importDt;
         geoLayer = layer;
         globeControl1 = globeControl;
     }
     return tableAttribute;
 }
예제 #40
0
        public FrmSetLineStyle(GSOStyle style,GSOFeature feature,GSOLayer layer, GSOGlobeControl globeControl)
        {
            InitializeComponent();
            m_GlobeControl = globeControl;
            mlayer = layer;
            mfeature = feature;

            // 如果m_OldStyle不存在,先备份一个
            if (style != null)
            {
                m_OldStyle = style.Clone();
            }
            m_Style = style;
        }
 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;
 }
예제 #42
0
 public FrmFeatureInfo(GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl)
 {
     InitializeComponent();
     if (layer != null)
     {
         mlayer = layer;
     }
     m_Feature = feature;
     // 先备份一个
     if (feature != null)
     {
         m_OldFeture = feature.Clone();
     }
     m_GlobeControl = globeControl;
 }
예제 #43
0
        public CtrlPipelineStyleSetting(GSOStyle style, GSOFeature feature, GSOLayer layer, GSOGlobeControl globeControl)
        {
            InitializeComponent();
            m_GlobeControl = globeControl;
            mlayer = layer;
            mfeature = feature;
            altituMode = feature.Geometry.AltitudeMode;

            // 如果m_OldStyle不存在,先备份一个
            if (style != null)
            {
                m_OldStyle = style.Clone();
            }
            m_Style = style;
        }
예제 #44
0
        public CtrlLineStylePage(GSOGeometry geometry,GSOFeature feature,GSOLayer layer, GSOGlobeControl globeControl)
        {
            InitializeComponent();

            m_GlobeControl = globeControl;
            m_Geometry = geometry;
            mlayer = layer;
            mfeature = feature;

            if (m_Geometry != null && m_Geometry.Style != null)
            {
                m_Style = (GSOLineStyle3D)m_Geometry.Style;

                m_OldStyle = (GSOLineStyle3D)m_Geometry.Style.Clone();
            }
        }
예제 #45
0
 GSOLayer AddFeatureAndFeatureFolder(GSOFeature feature,GSOLayer newlayer)
 {
     if (feature != null && newlayer != null)
     {
         if (feature.Type == EnumFeatureType.Feature)
         {
             newlayer.AddFeature(feature);
         }
         else
         {
             GSOFeatureFolder folder = (GSOFeatureFolder)feature;
             for (int i = 0; i < folder.Features.Length; i++)
             {
                 newlayer = AddFeatureAndFeatureFolder(folder.Features[i], newlayer);
             }
         }
     }
     return newlayer;
 }
예제 #46
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);
                     }
                 }
             }
         }
     }
 }
예제 #47
0
 public FrmAddFieldToLayer(GSOLayer _layer, DataGridView _dataGridView1)
 {
     InitializeComponent();
     layer = _layer;
     dataGridView1 = _dataGridView1;
 }
예제 #48
0
        private void one2Multi(GSOGeoPolyline3D line, int num_width, int num_height, double interval, GSOPipeLineStyle3D style, GSOLayer layer,string name)
        {
            line = LatLon2Coord_Line(line);

            double width_all = interval * (num_width-1);
            double height_all = interval * (num_height-1);

            line.Clone();
            GSOGeoPolyline3D line_1 = line.Clone() as GSOGeoPolyline3D;

            GSOPoint3d p1 = line[0][0];
            GSOPoint3d p2 = line[0][1];

            double daltaX = p2.X-p1.X;
            double daltaY = p2.Y-p1.Y;

            double agree = Math.Atan(daltaY/daltaX);

            line.MoveXY((-0.5*width_all-interval)*Math.Sin(agree),(0.5*width_all+interval)*Math.Cos(agree));

            line.MoveZ(height_all / -2);

            for (int i = 0; i < num_width; i++)
            {
                for (int j = 0; j < num_height; j++)
                {
                    GSOGeoPolyline3D templine = line.Clone() as GSOGeoPolyline3D;

                    templine.MoveXY((i + 1) * interval * Math.Sin(agree), -1 * (i + 1) * interval * Math.Cos(agree));

                    templine = Coord2LatLon_Line(templine);

                    templine.MoveZ(interval*j);

                    GSOFeature feat = new GSOFeature();
                    feat.Geometry = templine;
                    feat.Geometry.Style = style;
                    feat.Name = name;
                    layer.AddFeature(feat);
                }
            }
        }
예제 #49
0
 private void cboxLayer_SelectedIndexChanged(object sender, EventArgs e)
 {
     layer = globeControl.Globe.Layers[cboxLayer.SelectedIndex];
 }
예제 #50
0
 private void comboBoxLayers_SelectedIndexChanged(object sender, EventArgs e)
 {
     string layerCaption = comboBoxLayers.Text;
     layer = globeControl1.Globe.Layers.GetLayerByCaption(layerCaption);
     if (layer.Dataset.IsFeatureDataset)
     {
         GSOFeatureDataset data = (GSOFeatureDataset)layer.Dataset;
         if (data.FieldCount <= 0)
         {
             return;
         }
         for (int i = 0; i < data.FieldCount; i++)
         {
             comboBoxUpdateFieldName.Items.Add(data.GetField(i).Name); //绑定图层中的字段
             comboBoxConditionFieldName.Items.Add(data.GetField(i).Name);
         }
     }
 }
예제 #51
0
 private void FrmBatchUpdateFieldValue_FormClosing(object sender, FormClosingEventArgs e)
 {
     globeControl1.Globe.Action = EnumAction3D.ActionNull;
     isSelectObject = false;
     layer = null;
     features = null;
 }
예제 #52
0
 public FrmDeleteFieldFromLayer(GSOLayer _layer, DataGridView _dataGridView1)
 {
     InitializeComponent();
     layer = _layer;
     dataGridView1 = _dataGridView1;
 }
예제 #53
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;
 }
예제 #54
0
 private void valiYBdata(GSOLayer layer)
 {
     txtMessage.Text = "";
     if (layer != null)
     {
         GSOFeatureDataset featDataSet = layer.Dataset as GSOFeatureDataset;
         List<string> lstField = new List<string>();
         List<string> listFieldType_Text = new List<string>();
         for (int i = 0; i < featDataSet.FieldCount; i++)
         {
             string fieldName = featDataSet.GetField(i).Name;
             lstField.Add(fieldName);
             if (yb_types.ContainsKey(fieldName))
             {
                 string fieldType = yb_types[fieldName].ToString().ToUpper();
                 switch (featDataSet.GetField(i).Type)
                 {
                     case EnumFieldType.Text:
                         if (fieldType != "string".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         listFieldType_Text.Add(fieldName);
                         break;
                     case EnumFieldType.INT32:
                         if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         break;
                     case EnumFieldType.INT16:
                         if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         break;
                     case EnumFieldType.Double:
                         if (fieldType != "double".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         break;
                     case EnumFieldType.Date:
                         if (fieldType != "date".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         break;
                 }
             }
             else
             {
                 txtMessage.Text += "警告:配置文件中不包含\"" + fieldName + "\"字段\r\n";
             }
         }
         if (!lstField.Contains("编号"))
         {
             txtMessage.Text += "编号字段不存在!\r\n";
         }
         if (!lstField.Contains("管线点编码"))
         {
             txtMessage.Text += "管线点编码字段不存在!\r\n";
         }
         if (!lstField.Contains("井深"))
         {
             txtMessage.Text += "井深字段不存在!\r\n";
         }
         else
         {
             GSOFieldAttr fieldZ = featDataSet.GetField("井深");
             if (fieldZ.Type != EnumFieldType.Double && fieldZ.Type != EnumFieldType.Float && fieldZ.Type != EnumFieldType.INT16 && fieldZ.Type != EnumFieldType.INT32)
             {
                 txtMessage.Text += "\"井深\"字段必须为数值类型 \r\n";
             }
         }
         if (!lstField.Contains("旋转角度"))
         {
             txtMessage.Text += "旋转角度字段不存在!\r\n";
         }
         else
         {
             GSOFieldAttr fieldZ = featDataSet.GetField("旋转角度");
             if (fieldZ.Type != EnumFieldType.Double && fieldZ.Type != EnumFieldType.Float && fieldZ.Type != EnumFieldType.INT16 && fieldZ.Type != EnumFieldType.INT32)
             {
                 txtMessage.Text += "\"旋转角度\"字段必须为数值类型 \r\n";
             }
         }
         for (int i = 0; i < layer.GetAllFeatures().Length; i++)
         {
             GSOFeature f = layer.GetAt(i);
             for (int j = 0; j < listFieldType_Text.Count; j++)
             {
                 string fieldName = listFieldType_Text[j];
                 if (yb_types.ContainsKey(fieldName))
                 {
                     if (f.GetValue(fieldName).ToString().Trim().Length > 8000)
                     {
                         txtMessage.Text += "名称为" + f.Name + "的要素的字段" + fieldName + "的长度大于8000 !\r\n";
                     }
                 }
             }
         }
     }
 }
예제 #55
0
 private void valiPipedata(GSOLayer layer)
 {
     txtMessage.Text = "";
     if (layer != null)
     {
         GSOFeatureDataset featDataSet = layer.Dataset as GSOFeatureDataset;
         List<string> lstField = new List<string>();
         List<string> listFieldType_Text = new List<string>();
         for (int i = 0; i < featDataSet.FieldCount; i++)
         {
             string fieldName = featDataSet.GetField(i).Name;
             lstField.Add(fieldName);
             if (fields_types.ContainsKey(fieldName))
             {
                 string fieldType = fields_types[fieldName].ToString().ToUpper();
                 switch (featDataSet.GetField(i).Type)
                 {
                     case EnumFieldType.Text:
                         if (fieldType != "string".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         listFieldType_Text.Add(fieldName);
                         break;
                     case EnumFieldType.INT32:
                         if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         break;
                     case EnumFieldType.INT16:
                         if (fieldType != "int".ToUpper() && fieldType != "double".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         break;
                     case EnumFieldType.Double:
                         if (fieldType != "double".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         break;
                     case EnumFieldType.Date:
                         if (fieldType != "date".ToUpper())
                         {
                             txtMessage.Text += "" + fieldName + "数据类型不正确\r\n";
                         }
                         break;
                 }
             }
             else
             {
                 txtMessage.Text += "警告:配置文件中不包含\"" + fieldName + "\"字段\r\n";
             }
         }
         if (!lstField.Contains("Deep1"))
         {
             txtMessage.Text += "Deep1字段不存在!\r\n";
         }
         else
         {
             GSOFieldAttr fieldDeep1 = featDataSet.GetField("Deep1");
             if (fieldDeep1.Type != EnumFieldType.Double && fieldDeep1.Type != EnumFieldType.Float && fieldDeep1.Type != EnumFieldType.INT16 && fieldDeep1.Type != EnumFieldType.INT32)
             {
                 txtMessage.Text += "Deep1字段必须为数值类型\r\n";
             }
         }
         if (!lstField.Contains("Deep2"))
         {
             txtMessage.Text += "Deep2字段不存在!\r\n";
         }
         else
         {
             GSOFieldAttr fieldDeep1 = featDataSet.GetField("Deep2");
             if (fieldDeep1.Type != EnumFieldType.Double && fieldDeep1.Type != EnumFieldType.Float && fieldDeep1.Type != EnumFieldType.INT16 && fieldDeep1.Type != EnumFieldType.INT32)
             {
                 txtMessage.Text += "Deep2字段必须为数值类型\r\n";
             }
         }
         if (!lstField.Contains("Diameter"))
         {
             txtMessage.Text += "Diameter字段不存在!\r\n";
         }
         else
         {
             GSOFieldAttr fieldDeep1 = featDataSet.GetField("Diameter");
             if (fieldDeep1.Type != EnumFieldType.Double && fieldDeep1.Type != EnumFieldType.Float && fieldDeep1.Type != EnumFieldType.INT16 && fieldDeep1.Type != EnumFieldType.INT32)
             {
                 txtMessage.Text += "Diameter字段必须为数值类型\r\n";
             }
         }
         if (!lstField.Contains("Handle"))
         {
             txtMessage.Text += "Handle字段不存在!\r\n";
         }
         List<string> lstHandle = new List<string>();
         for (int i = 0; i < layer.GetAllFeatures().Length; i++)
         {
             GSOFeature f = layer.GetAt(i);
             for (int j = 0; j < listFieldType_Text.Count; j++)
             {
                 string fieldName = listFieldType_Text[j];
                 if (fields_types.ContainsKey(fieldName))
                 {
                     if (f.GetValue(fieldName).ToString().Trim().Length > 8000)
                     {
                         txtMessage.Text += "ID为" + f.ID + "的要素的字段" + fieldName + "的长度大于8000 !\r\n";
                     }
                 }
             }
             if (f.GetFieldAsFloat("Diameter") <= 0)
             {
                 txtMessage.Text += "ID为" + f.ID + "\"Diameter\"字段中的值必须大于0 \r\n";
             }
             if (!lstHandle.Contains(f.GetFieldAsString("Handle")))
             {
                 lstHandle.Add(f.GetFieldAsString("Handle"));
             }
             else
             {
                 txtMessage.Text += "ID为" + f.ID + "的\"Handle\"字段中的值重复\r\n";
             }
         }
     }
 }
예제 #56
0
 public FrmPolygonToWater(GSOGlobeControl globeControl,GSOLayer layer)
 {
     mGlobeControl = globeControl;
     mLayer = layer;
     InitializeComponent();
 }
예제 #57
0
 public FrmUpdateLayoutColor(GSOGlobeControl globeControl,GSOLayer layer)
 {
     InitializeComponent();
     mGlobeControl = globeControl;
     mlayer = layer;
 }
예제 #58
0
        private void btnEnter_Click(object sender, EventArgs e)
        {
            int n = 0;
            layer = globeControl1.Globe.Layers.GetLayerByCaption(cmbPipeShow.Text.Trim());
            GSOFeatureLayer flayer = layer as GSOFeatureLayer;
            if(flayer == null)
            {
                return ;
            }
            GSOFeatureDataset fdataset = flayer.Dataset as GSOFeatureDataset;
            if (fdataset == null || fdataset.DataSource == null)
            {
                return;
            }
            connectParams = Utility.getConnectParamsByDatasourceName(globeControl1, fdataset.DataSource.Name);
            if (connectParams == null)
            {
                return;
            }
            GSOFeatures feats = flayer.GetAllFeatures();
            string type = layer.Caption.Substring(0, 2);
            string sql = "select * " + " from " + layer.Caption + "  where";
            for (int i = 0; i < feats.Length; i++)
            {
                GSOFeature f = feats[i];
                if (f.Geometry.Type == EnumGeometryType.GeoPolyline3D)
                {
                    GSOGeoPolyline3D line = f.Geometry as GSOGeoPolyline3D;
                    GSOPipeLineStyle3D style = line.Style as GSOPipeLineStyle3D;
                    if (style != null)
                    {
                        GSOPoint3ds pnts = getAllPointInPipeline(line);
                        for (int j = 0; j < pnts.Count; j++)
                        {
                            GSOPoint3d pt = pnts[j];
                            if (Math.Abs(pt.Z) < style.Radius)
                            {
                                n++;
                                sql += "  编号='" + f.Name + "' or ";
                                break;
                            }
                        }
                    }
                }
            }
            if (n > 0)
            {
                sql = sql.Substring(0, sql.Length - 3);
                DataTable dt = new DataTable();
                dt = OledbHelper.QueryTable(sql, connectParams);

                if (dt == null)
                {
                    MessageBox.Show("没有地上管线!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    if (dt.Columns.Count > 3)
                    {
                        dt.Columns.RemoveAt(0);
                        dt.Columns.RemoveAt(0);
                        dt.Columns.RemoveAt(0);
                    }
                    dataGridView1.ReadOnly = !layer.Editable;
                    dataGridView1.DataSource = dt;
                    if (statusStrip1.Items.Count > 0)
                    {
                        statusStrip1.Items[0].Text = " 共有 " + dt.Rows.Count + " 条记录";
                    }
                    globeControl1.Globe.Refresh();
                }
            }
            else
            {
                MessageBox.Show("没有地上管线!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                dataGridView1.DataSource = null;
                if (statusStrip1.Items.Count > 0)
                {
                    statusStrip1.Items[0].Text = " 共有 " + 0 + " 条记录";
                }
            }
        }
예제 #59
0
파일: MainFrm.cs 프로젝트: StarU/qkKL6Dgf12
 private void AddKmlLayer(GSOLayer layer)
 {
     if (layer != null)
     {
         TreeNode node = new TreeNode();
         node.Tag = layer;
         node.Text = layer.Caption;
         node.ImageIndex = 0;
         node.SelectedImageIndex = 0;
         node.Checked = layer.Visible;
         layerManagerNode.Nodes.Insert(0, node);
         VisitFeature3Ds(layer.GetAllFeatures(), node);
     }
 }
예제 #60
0
 public FrmEditLayerAttributes(GSOLayer layer, GSOGlobeControl globeControl)
 {
     InitializeComponent();
     geoLayer = layer;
     m_globeControl = globeControl;
 }