Пример #1
0
 public void DrawCirle(Point3D bd_point3D)
 {
     try
     {
         GeoCircle3D m_circle3d = new GeoCircle3D(bd_point3D, 20);
         GeoModel3D  m_model    = m_circle3d.ConvertToGeoModel3D(true);
         m_rec = m_model.Bounds;
         //设置数据集容量,避免空间查询出现过多对象
         mUseData.OutWaterNetWork.Tolerance.NodeSnap    = 0.0001;
         mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001;
         GeoStyle3D style = new GeoStyle3D();
         style.FillForeColor = Color.FromArgb(100, 255, 128, 64);
         style.AltitudeMode  = AltitudeMode.RelativeToGround;
         style.FillMode      = FillMode3D.Fill;
         m_model.Style3D     = style;
         TrackingLayer3D trackinglayer = mSceneControl.Scene.TrackingLayer;
         trackinglayer.IsEditable = true;
         trackinglayer.IsVisible  = true;
         trackinglayer.Add(m_model, "圆");
         CircleID = trackinglayer.IndexOf("圆");
     }
     catch (System.Exception ex)
     {
         Trace.WriteLine(ex.Message);
     }
 }
Пример #2
0
        private void TrackedSectionEvent(object sender, Tracked3DEventArgs e)
        {
            try
            {
                //绘制量算线对象
                GeoLine3D geoLine3D = e.Geometry.Clone() as GeoLine3D;
                mRec2D = geoLine3D.Bounds;
                //设置数据集容量,避免空间查询出现过多对象
                mUseData.OutWaterNetWork.Tolerance.NodeSnap    = 0.0001;
                mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001;
                mUseData.ElectricNetWork.Tolerance.NodeSnap    = 0.0001;

                GeoStyle3D mGeoStyle3D = new GeoStyle3D();
                // mGeoStyle3D.MarkerColor = Color.FromArgb(255, 0, 255);
                mGeoStyle3D.LineColor          = Color.FromArgb(0x00, 0x99, 0x00);
                mGeoStyle3D.LineWidth          = 3;
                geoLine3D.Style3D              = mGeoStyle3D.Clone();
                geoLine3D.Style3D.AltitudeMode = AltitudeMode.Absolute;
                TrackingLayer3D trackinglayer = mSceneControl.Scene.TrackingLayer;
                trackinglayer.IsEditable = true;
                trackinglayer.IsVisible  = true;
                trackinglayer.Add(geoLine3D, "GeoLine3D");
                mSceneControl.Action = Action3D.Pan2;

                CrossSecLine();
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }
        }
Пример #3
0
        //鼠标移动事件
        void m_sceneControl_Tracking(object sender, Tracking3DEventArgs e)
        {
            if (m_sceneControl.Action == Action3D.CreatePolygon)
            {
                m_sceneControl.Scene.TrackingLayer.Clear();

                Geometry3D geometry = e.Geometry as Geometry3D;

                if (geometry is GeoLine3D)
                {
                    m_sceneControl.Scene.TrackingLayer.Add(geometry, "line");
                    return;
                }
                else if (geometry is GeoRegion3D)
                {
                    GeoRegion3D geoRegion3D = geometry as GeoRegion3D;

                    if (geoRegion3D[0].Count < 3)
                    {
                        return;
                    }
                    GeoStyle3D style3D = new GeoStyle3D();
                    style3D.LineColor    = Color.Yellow;
                    style3D.AltitudeMode = AltitudeMode.Absolute;
                    geoRegion3D.Style3D  = style3D;
                    m_sceneControl.Scene.TrackingLayer.Add(geoRegion3D, "region");
                }
            }
        }
        /// <summary>
        /// 在三维场景中显示终止点
        /// </summary>
        public void DisplayEndPoint()
        {
            try
            {
                GeoStyle3D pointStyle = new GeoStyle3D();
                pointStyle.MarkerColor  = Color.FromArgb(255, 51, 255, 0);
                pointStyle.MarkerSize   = 10.0;
                pointStyle.AltitudeMode = AltitudeMode.Absolute;

                mEndPoint.Style3D = pointStyle;

                mEndPointTag = "endPoint";
                mSceneControl.Scene.TrackingLayer.Add(mEndPoint, mEndPointTag);

                mMarkEnd = "PlaceMarkEnd";
                GeoPlacemark markEnd = new GeoPlacemark("终止点", mEndPoint);
                markEnd.NameStyle.ForeColor = Color.FromArgb(255, 51, 255, 0);
                if (System.Environment.Is64BitProcess)
                {
                    markEnd.Style3D.MarkerFile = @"..\..\..\Resource\redpin";
                }
                else
                {
                    markEnd.Style3D.MarkerFile = @"..\..\Resource\redpin";
                }
                mSceneControl.Scene.TrackingLayer.Add(markEnd, mMarkEnd);

                mSceneControl.Scene.Refresh();
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }
        }
        /// <summary>
        /// 初始化
        /// </summary>
        private void Initialize()
        {
            try
            {
                mSceneControl.Action = Action3D.Pan;

                //注册事件
                mSceneControl.Tracking += new Tracking3DEventHandler(TrackingHandler);
                mSceneControl.Tracked  += new Tracked3DEventHandler(TrackedHandler);
                mSceneControl.MouseUp  += SceneControlMouseUp;


                mPoint3Ds   = new Point3Ds();
                mGeoStyle3D = new GeoStyle3D();

                mGeoStyle3D.MarkerColor   = Color.FromArgb(255, 0, 255);
                mGeoStyle3D.LineColor     = Color.FromArgb(255, 255, 0);
                mGeoStyle3D.LineWidth     = 2;
                mGeoStyle3D.FillForeColor = Color.FromArgb(180, Color.Violet);
                mGeoStyle3D.AltitudeMode  = AltitudeMode.RelativeToUnderground;

                //临时样式
                mGeoStyle3DTemp               = new GeoStyle3D();
                mGeoStyle3DTemp.MarkerColor   = Color.FromArgb(255, 0, 0);
                mGeoStyle3DTemp.LineColor     = Color.FromArgb(0, 255, 0);
                mGeoStyle3DTemp.LineWidth     = 2;
                mGeoStyle3DTemp.FillForeColor = Color.FromArgb(180, Color.Violet);
                mGeoStyle3DTemp.AltitudeMode  = AltitudeMode.RelativeToUnderground;
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }
        }
        /// <summary>
        /// 在三维场景中显示起始点
        /// </summary>
        public void DisplayRemovePoint()
        {
            try
            {
                GeoStyle3D pointStyle = new GeoStyle3D();
                pointStyle.MarkerColor  = Color.FromArgb(255, 51, 255, 0);
                pointStyle.MarkerSize   = 10.0;
                pointStyle.AltitudeMode = AltitudeMode.Absolute;

                mRemovePoint3D.Style3D = pointStyle;

                mRemovePointTag = "startPoint";
                mSceneControl.Scene.TrackingLayer.Add(mRemovePoint3D, mRemovePointTag);

                mMarkRemove = "PlaceMarkStart";
                GeoPlacemark markStart = new GeoPlacemark("拆迁点", mRemovePoint3D);
                markStart.NameStyle.ForeColor = Color.FromArgb(255, 51, 255, 0);
                markStart.Style3D.MarkerFile  = @"..\..\Resource\blupin.png";
                mSceneControl.Scene.TrackingLayer.Add(markStart, mMarkRemove);

                mSceneControl.Scene.Refresh();
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }
        }
        /// <summary>
        ///设置三维样式
        /// </summary>
        /// <param name="geometry"></param>
        private void SetGeometry3DStyle(Geometry3D geometry)
        {
            try
            {
                GeoStyle3D style = new GeoStyle3D();

                if (mSceneControl.Action == Action3D.MeasureAltitude ||
                    mSceneControl.Action == Action3D.MeasureDistance ||
                    mSceneControl.Action == Action3D.MeasureHorizontalDistance)
                {
                    style.AltitudeMode = AltitudeMode.RelativeToUnderground;
                }
                else
                {
                    style.AltitudeMode = AltitudeMode.ClampToGround;
                }

                style.MarkerSize  = 4;
                style.MarkerColor = Color.FromArgb(255, 0, 255);

                //设置线样式
                style.LineColor     = Color.Yellow;
                style.LineWidth     = 2;
                style.FillMode      = FillMode3D.LineAndFill;
                style.FillForeColor = Color.LightSeaGreen;

                geometry.Style3D = style;
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }
        }
 private void DrawCirle(Point3D mPoint3D)
 {
     try
     {
         GeoCircle3D m_circle3d = new GeoCircle3D(mPoint3D, mRemoveRadius);
         GeoModel3D  m_model    = m_circle3d.ConvertToGeoModel3D(true);
         mRec = m_model.Bounds;
         //设置数据集容量,避免空间查询出现过多对象
         mUseData.OutWaterNetWork.Tolerance.NodeSnap    = 0.0001;
         mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001;
         GeoStyle3D style = new GeoStyle3D();
         style.FillForeColor = Color.FromArgb(150, 153, 207, 25);
         style.AltitudeMode  = AltitudeMode.RelativeToGround;
         style.FillMode      = FillMode3D.Fill;
         m_model.Style3D     = style;
         mSceneControl.Scene.TrackingLayer.IsEditable = true;
         mSceneControl.Scene.TrackingLayer.IsVisible  = true;
         mSceneControl.Scene.TrackingLayer.Add(m_model, "圆");
         CloseMethod();
     }
     catch (System.Exception ex)
     {
         Trace.WriteLine(ex.Message);
     }
 }
Пример #9
0
        //鼠标在场景中停留两秒中显示坡度坡向信息
        private void timer_tick(Object sender, EventArgs e)
        {
            if (m_slope != null)
            {
                if (m_lastPoint3D != m_point3D)
                {
                    this.m_sceneControl.Scene.TrackingLayer.Clear();
                    double slopeValue     = m_slope.GetSlopeValue(m_point3D);
                    double slopeDirection = m_slope.GetSlopeDirectionValue(m_point3D);

                    TextStyle textstyle = new TextStyle();
                    textstyle.IsSizeFixed = true;
                    textstyle.FontName    = "微软雅黑";
                    textstyle.ForeColor   = Color.Black;
                    textstyle.FontScale   = 2;
                    textstyle.FontHeight  = 3;

                    TextPart3D textPart3D = new TextPart3D();
                    textPart3D.Text        = String.Format("Longitude: {0}\nLatitude:{1}\nAltitude: {2}\nSlopeValue: {3}\nSlopeDirection: {4}", m_point3D.X, m_point3D.Y, m_point3D.Z, slopeValue, slopeDirection);
                    textPart3D.AnchorPoint = m_point3D;
                    GeoText3D geoText3D = new GeoText3D(textPart3D);
                    geoText3D.TextStyle = textstyle;
                    GeoStyle3D style3D = new GeoStyle3D();
                    style3D.AltitudeMode   = AltitudeMode.Absolute;
                    style3D.BottomAltitude = 10;
                    geoText3D.Style3D      = style3D;
                    this.m_sceneControl.Scene.TrackingLayer.Add(geoText3D, "Text");


                    m_lastPoint3D = m_point3D;
                }
            }
        }
        public void coordLabel()
        {
            try
            {
                double x_label = mPoint3D.X;
                double y_label = mPoint3D.Y;
                double z_label = mPoint3D.Z;
                String coord   = "X: " + x_label + "\n\n" + "Y: " + y_label + "\n\n" + "Z: " + z_label;

                TextPart3D mText1 = new TextPart3D();
                mText1.Text        = coord;
                mText1.AnchorPoint = mPoint3D;
                TextStyle mTextStyle1 = new TextStyle();
                mTextStyle1.FontName    = "微软雅黑";
                mTextStyle1.ForeColor   = Color.Red;
                mTextStyle1.FontHeight  = 7;
                mTextStyle1.IsSizeFixed = false;
                mTextStyle1.Alignment   = TextAlignment.MiddleCenter;
                GeoText3D  geoText_1  = new GeoText3D(mText1, mTextStyle1);
                GeoStyle3D geostyle_1 = new GeoStyle3D();
                geostyle_1.AltitudeMode = AltitudeMode.RelativeToGround;
                geoText_1.Style3D       = geostyle_1;
                TrackingLayer3D trackinglayer = mSceneControl.Scene.TrackingLayer;
                trackinglayer.IsEditable = true;
                trackinglayer.IsVisible  = true;
                trackinglayer.Add(geoText_1, "Coord");
                mSceneControl.Scene.Refresh();
            }
            catch (Exception)
            {
            }
        }
Пример #11
0
 public void Output(SuperMap.UI.Tracked3DEventArgs e1)
 {
     try
     {
         //绘制量算面对象
         GeoRegion3D geoRegion3D = e1.Geometry as GeoRegion3D;
         //得到面对象的外接矩形,作为查询区域
         m_rec = geoRegion3D.Bounds;
         //设置数据集容量,避免空间查询出现过多对象
         mUseData.OutWaterNetWork.Tolerance.NodeSnap    = 0.0001;
         mUseData.SupplyWaterNetWork.Tolerance.NodeSnap = 0.0001;
         mGeoStyle3D               = new GeoStyle3D();
         mGeoStyle3D.MarkerColor   = Color.FromArgb(255, 0, 255);
         mGeoStyle3D.LineColor     = Color.FromArgb(255, 255, 0);
         mGeoStyle3D.LineWidth     = 1;
         mGeoStyle3D.FillForeColor = Color.FromArgb(100, 250, 250, 50);
         // mGeoStyle3D.AltitudeMode = AltitudeMode.ClampToGround;
         geoRegion3D.Style3D = mGeoStyle3D.Clone();
         geoRegion3D.Style3D.AltitudeMode  = AltitudeMode.Absolute;
         geoRegion3D.Style3D.FillForeColor = Color.FromArgb(50, 255, 128, 64);
         TrackingLayer3D trackinglayer = mSceneControl.Scene.TrackingLayer;
         trackinglayer.IsEditable = true;
         trackinglayer.IsVisible  = true;
         trackinglayer.Add(geoRegion3D, "geoRegion3D");
         RegionID             = trackinglayer.IndexOf("geoRegion3D");
         mSceneControl.Action = Action3D.Pan2;
     }
     catch (System.Exception ex)
     {
         Trace.WriteLine(ex.Message);
     }
 }
Пример #12
0
 /// <summary>
 /// 设置量算结果文本的风格
 /// </summary>
 /// <param name="text"></param>
 private void SetResultTextStyle(GeoText3D text)
 {
     try
     {
         TextStyle textStyle = new TextStyle();
         textStyle.ForeColor = Color.White;
         textStyle.Outline = true;
         textStyle.BackColor = Color.Black;
         textStyle.FontHeight = 10;
         text.TextStyle = textStyle;
         GeoStyle3D style = new GeoStyle3D();
         if (m_sceneControl.Action == Action3D.MeasureAltitude)
         {
             style.AltitudeMode = AltitudeMode.Absolute;
         }
         else
         {
             style.AltitudeMode = AltitudeMode.ClampToGround;
         }
         text.Style3D = style;
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Пример #13
0
        //将数据集添加到场景中
        private void AddToSceneToolStripMenuItem_Click(object sender, EventArgs e)
        {
            WorkspaceTreeNodeBase node = this.workspaceControl.WorkspaceTree.SelectedNode as WorkspaceTreeNodeBase;
            Dataset      dataset       = node.GetData() as Dataset;
            Layer3D      layer3D       = null;
            TerrainLayer terrainLayer  = null;
            String       layerName     = dataset.Name + "@" + dataset.Datasource.Alias;

            switch (node.NodeType)
            {
            case WorkspaceTreeNodeDataType.DatasetVector:
            {
                Random random = new Random(Guid.NewGuid().GetHashCode());

                DatasetVector        datasetVector = dataset as DatasetVector;
                Layer3DSettingVector settingVector = new Layer3DSettingVector();
                GeoStyle3D           style         = new GeoStyle3D();
                style.FillMode      = FillMode3D.LineAndFill;
                style.MarkerColor   = Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255));    //Color.Red;
                style.LineColor     = Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255));    //Color.SaddleBrown;
                style.FillForeColor = Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255));    //Color.SkyBlue;
                if (datasetVector.Type == DatasetType.Line3D)
                {
                    style.AltitudeMode = AltitudeMode.Absolute;
                    style.LineWidth    = 4;
                }
                settingVector.Style = style;
                layer3D             = this.m_sceneControl.Scene.Layers.Add(datasetVector, settingVector, true, layerName);
                break;
            }

            case WorkspaceTreeNodeDataType.DatasetGrid:
            {
                DatasetGrid datasetGrid = dataset as DatasetGrid;
                terrainLayer = this.m_sceneControl.Scene.TerrainLayers.Add(datasetGrid, true);
                break;
            }

            case WorkspaceTreeNodeDataType.DatasetImage:
            {
                DatasetImage        datasetImage = dataset as DatasetImage;
                Layer3DSettingImage settingImage = new Layer3DSettingImage();
                layer3D = this.m_sceneControl.Scene.Layers.Add(datasetImage, settingImage, true, layerName);
                break;
            }
            }
            //if (layer3D != null)
            //{
            //    this.m_sceneControl.Scene.EnsureVisible(layer3D.Bounds);
            //}
            //if (terrainLayer != null)
            //{
            //    this.m_sceneControl.Scene.EnsureVisible(terrainLayer.Bounds);
            //}
            this.m_sceneControl.Scene.Refresh();
        }
        public void BufferQuery()
        {
            try
            {
                Datasource    datasource      = mUseData.DataSource;
                DatasetVector mRegionDatasets = datasource.Datasets["New_Model"] as DatasetVector;
                mRegionDatasets.PrjCoordSys = datasource.Datasets[0].PrjCoordSys;
                String bufferName = "bufferModel";
                if (datasource.Datasets.Contains(bufferName))
                {
                    datasource.Datasets.Delete(bufferName);
                }
                mBufferDataset = (DatasetVector)datasource.Datasets.CreateFromTemplate(bufferName, mRegionDatasets);


                #region 设置矢量面初始样式

                GeoStyle3D style3D = new GeoStyle3D();

                style3D.AltitudeMode  = AltitudeMode.ClampToGround;
                style3D.FillForeColor = Color.White;
                style3D.FillMode      = FillMode3D.LineAndFill;

                Layer3DSettingVector layer3DSetting = new Layer3DSettingVector();
                layer3DSetting.Style = style3D;
                Layer3DDataset m_layerRegion = mSceneControl.Scene.Layers.Add(mRegionDatasets, layer3DSetting, true);
                #endregion



                QueryParameter para = new QueryParameter();
                para.SpatialQueryMode   = SpatialQueryMode.Intersect;
                para.SpatialQueryObject = mBufferDataset;

                Recordset recordset = mRegionDatasets.Query(para);

                List <Int32> ids = new List <int>(recordset.RecordCount);

                while (!recordset.IsEOF)
                {
                    ids.Add(recordset.GetID());
                    recordset.MoveNext();
                }
                m_layerRegion.Selection.AddRange(ids.ToArray());
                m_layerRegion.Selection.UpdateData();

                m_layerRegion.Selection.Style.FillForeColor = Color.FromArgb(180, 100, 100, 255);
                mSceneControl.Scene.Refresh();

                recordset.Dispose();
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }
        }
Пример #15
0
        //窗体关闭事件
        private void DlgSkyline_FormClosing(object sender, FormClosingEventArgs e)
        {
            m_sceneControl.Action = Action3D.Pan;

            this.clearSkylineAnalysis();

            this.RegisterEventsForHeightLimit(false);
            this.m_sceneControl.Scene.TrackingLayer.Clear();
            m_style3D = null;
        }
Пример #16
0
        private GeoStyle3D SelectPointGeoStyle3D(Double z)
        {
            GeoStyle3D geoStyle3D = new GeoStyle3D();

            geoStyle3D.AltitudeMode   = AltitudeMode.Absolute;
            geoStyle3D.MarkerColor    = System.Drawing.Color.FromArgb(255, 255, 0, 0);
            geoStyle3D.MarkerSize     = 5;
            geoStyle3D.ExtendedHeight = z;

            return(geoStyle3D);
        }
Пример #17
0
        public void AddModel_Click(Point3D Point3D, int ModelIndex, string strID, string strNOID)
        {
            AddPointToDatasets(Point3D, ModelIndex, strID, strNOID);

            Datasource    datasource   = m_workspace.Datasources[0];
            DatasetVector pointDataset = datasource.Datasets["Point3D"] as DatasetVector;
            Recordset     recordset    = pointDataset.GetRecordset(false, CursorType.Dynamic);

            GeoPoint3D geopoint3D = new GeoPoint3D(Point3D);
            GeoStyle3D geoStyle   = new GeoStyle3D();

            geoStyle.MarkerSymbolID    = UserHelper.Marker3DSymbolID[ModelIndex];
            geoStyle.IsMarkerSizeFixed = false;
            geoStyle.MarkerSize        = 1;
            geoStyle.Marker3DScaleX    = 0.03;
            geoStyle.Marker3DScaleY    = 0.03;
            geoStyle.Marker3DScaleZ    = 0.08;
            geoStyle.IsMarker3D        = true;
            geoStyle.AltitudeMode      = AltitudeMode.RelativeToGround;
            geopoint3D.Style3D         = geoStyle;

            recordset.MoveLast();
            recordset.AddNew(geopoint3D);
            recordset.SetFieldValue(m_filedName, strID);
            recordset.Update();
            recordset.Dispose();

            m_layer3DPoint.IsSelectable = false;
            m_layer3DPoint.UpdateData();
            m_SceneControl.Scene.Refresh();

            //AddKmlLayer();

            //GeoPlacemark geoPlacemark = new GeoPlacemark();
            //m_geoModel = new GeoModel();
            //m_geoModel.FromFile(UserHelper.sModelName[ModelIndex]);
            ////人物模型朝向前进方向,如果原始方向一致则不需要旋转。
            //m_geoModel.Style3D = m_style3D;
            //m_geoModel.RotationZ = 180;
            //m_geoModel.ScaleX = 0.3;
            //m_geoModel.ScaleY = 0.3;
            //m_geoModel.ScaleZ = 0.3;
            //m_geoModel.Position = new Point3D(Point3D.X, Point3D.Y, Point3D.Z);
            //geoPlacemark.Geometry = m_geoModel;
            //Feature3Ds feture3Ds = m_LayerKML.Features;
            //Feature3D feature = new Feature3D();
            //feature.Geometry = geoPlacemark;
            //feature.Description = strID;
            //feature.Name = feature.Description;
            //feture3Ds.Add(feature);
            //feture3Ds.ToKMLFile(m_LayerKML.DataName);
            //m_LayerKML.UpdateData();
        }
Пример #18
0
        private void DlgSkyline_Load(object sender, EventArgs e)
        {
            this.cb_TextureQuality.SelectedIndex = 1;
            this.colorButton.Color            = m_skylineColor;
            this.gb_HeightLimit.Enabled       = false;
            this.btn_ClearResult.Enabled      = false;
            this.cb_DisplayMode.SelectedIndex = 0;
            this.btn_FlyToViewer.Enabled      = false;

            m_style3D = new GeoStyle3D();
            this.RegisterEventsForHeightLimit(false);
        }
Пример #19
0
        private void DlgSightLine_Load(object sender, EventArgs e)
        {
            this.btn_Analyst.Enabled          = true;
            this.btn_Clear.Enabled            = false;
            this.btn_StopAnalysis.Enabled     = false;
            this.cb_ColorScheme.SelectedIndex = 0;

            this.cb_TargetPtsIndex.Items.Clear();
            this.RegisterEvents(false);

            m_style3D = new GeoStyle3D();
        }
Пример #20
0
        public void Initialize(Layer3DKML layerKML, SceneControl sceneControl, LayersControl layersControl)
        {
            m_layerKML            = layerKML;
            m_sceneControl        = sceneControl;
            m_layersControl       = layersControl;
            m_style3D             = new GeoStyle3D();
            this.tb_LayerKml.Text = Path.GetFileName(m_layerKML.DataName);

            this.InitCombox(m_layerKML);

            m_sceneControl.Tracked -= new Tracked3DEventHandler(m_sceneControl_Tracked);
            m_sceneControl.Tracked += new Tracked3DEventHandler(m_sceneControl_Tracked);
        }
Пример #21
0
        /// <summary>
        /// 获取3D要素风格
        /// </summary>
        /// <param name="geometry"></param>
        private void SetGeometry3DStyle(Geometry3D geometry)
        {
            GeoStyle3D style = new GeoStyle3D();

            style.MarkerSize   = 4;
            style.MarkerColor  = Color.FromArgb(255, 0, 255);
            style.AltitudeMode = AltitudeMode.RelativeToUnderground;
            //设置线样式
            style.LineColor     = Color.Yellow;
            style.LineWidth     = 3;
            style.FillMode      = FillMode3D.LineAndFill;
            style.FillForeColor = Color.LightSeaGreen;
            geometry.Style3D    = style;
        }
Пример #22
0
        //关闭对话框
        private void DlgNodeAnimation_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.cb_Model.Items.Clear();
            this.m_sceneControl.Scene.TrackingLayer.Clear();
            m_nodeAnimation.TimePositionChanged -= new TimePositionChangedEventHandler(m_nodeAnimationTimePositionChanged);
            m_sceneControl.Tracked   -= new Tracked3DEventHandler(m_sceneControl_Tracked);
            m_nodeAnimation.IsEnabled = false;

            m_geoLine3D               = null;
            m_style3D                 = null;
            m_nodeAnimation           = null;
            m_geoModel                = null;
            this.btn_AddToKML.Enabled = false;
        }
Пример #23
0
        /// <summary>
        /// 设置结果文本样式
        /// </summary>
        /// <param name="text"></param>
        private void SetResultTextStyle(GeoText3D text)
        {
            TextStyle textStyle = new TextStyle();

            textStyle.ForeColor  = Color.White;
            textStyle.Outline    = true;
            textStyle.BackColor  = Color.Black;
            textStyle.FontHeight = 10;
            text.TextStyle       = textStyle;
            GeoStyle3D style = new GeoStyle3D();

            style.AltitudeMode = AltitudeMode.RelativeToUnderground;
            text.Style3D       = style;
        }
Пример #24
0
        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="sceneControl"></param>
        /// <param name="layer3D"></param>
        /// <param name="isSelection"></param>
        public void Initialize(SceneControl sceneControl, Layer3D layer3D, bool isSelection)
        {
            m_sceneControl = sceneControl;
            m_layer3D      = layer3D;
            m_bSelection   = isSelection;

            this.cb_AltitudeMode.Items.Clear();

            //初始化高度模式列表
            if (m_bSelection)
            {
                this.cb_AltitudeMode.Items.Add("贴地");
                this.cb_AltitudeMode.Items.Add("贴对象");
            }
            else
            {
                this.cb_AltitudeMode.Items.Add("贴地");
                this.cb_AltitudeMode.Items.Add("贴对象");
                this.cb_AltitudeMode.Items.Add("相对地面");
                this.cb_AltitudeMode.Items.Add("绝对高度");
                this.cb_AltitudeMode.Items.Add("相对地下");
            }

            //初始化m_style3D
            if (m_bSelection)
            {
                m_style3D = m_layer3D.Selection.Style;
            }
            else
            {
                if (m_layer3D.Type == Layer3DType.Dataset)
                {
                    Layer3DDataset       layer3DDataset = m_layer3D as Layer3DDataset;
                    Layer3DSettingVector layerSetting   = layer3DDataset.AdditionalSetting as Layer3DSettingVector;
                    m_style3D = layerSetting.Style;
                }
                else if (m_layer3D.Type == Layer3DType.VectorFile)
                {
                    Layer3DVectorFile    layer3DFile  = m_layer3D as Layer3DVectorFile;
                    Layer3DSettingVector layerSetting = layer3DFile.AdditionalSetting as Layer3DSettingVector;
                    m_style3D = layerSetting.Style;
                }
            }

            this.UpdateData();
        }
Пример #25
0
 /// <summary>
 /// 初始化
 /// </summary>
 private void Initialize()
 {
     //设置鼠标抓手
     mSceneControl.Action = Action3D.Pan2;
     //清空跟踪图层
     mSceneControl.Scene.TrackingLayer.Clear();
     //注册鼠标点击/对象选择事件
     mSceneControl.MouseDown      += new MouseEventHandler(mSceneControl_MouseDown);
     mSceneControl.ObjectSelected += new ObjectSelectedEventHandler(mSceneControlSelected);
     //设置符号样式
     mTextPoint3Ds             = new Point3Ds();
     mGeoStyle3D               = new GeoStyle3D();
     mGeoStyle3D.MarkerColor   = Color.FromArgb(255, 0, 255);
     mGeoStyle3D.LineColor     = Color.FromArgb(255, 255, 0);
     mGeoStyle3D.LineWidth     = 2;
     mGeoStyle3D.FillForeColor = Color.FromArgb(180, Color.Violet);
     mGeoStyle3D.AltitudeMode  = AltitudeMode.RelativeToUnderground;
 }
Пример #26
0
        /// <summary>
        /// 鼠标单击事件来实现画点的功能
        /// </summary>
        /// <param routestopName="sender"></param>
        /// <param routestopName="e"></param>
        private void m_sceneControl_MouseClick(object sender, MouseEventArgs e)
        {
            try
            {
                if (e.Button == MouseButtons.Left && isDraw)
                {
                    //画点
                    if (!flag)
                    {
                        Datasource    datasource   = m_workspace.Datasources[0];
                        DatasetVector pointDataset = datasource.Datasets["Point3D"] as DatasetVector;
                        Recordset     recordset    = pointDataset.GetRecordset(false, CursorType.Dynamic);

                        Point3D pt3d = new Point3D();
                        pt3d = m_sceneControl.Scene.PixelToGlobe(e.Location, PixelToGlobeMode.TerrainAndModel);
                        GeoPoint3D geopoint3D = new GeoPoint3D(pt3d);

                        GeoStyle3D geoStyle = new GeoStyle3D();
                        geoStyle.MarkerSymbolID    = m_marker3DIndex;
                        geoStyle.IsMarkerSizeFixed = false;
                        geoStyle.MarkerSize        = 1;
                        geoStyle.Marker3DScaleX    = 1;
                        geoStyle.Marker3DScaleY    = 1;
                        geoStyle.Marker3DScaleZ    = 1;
                        geoStyle.IsMarker3D        = true;
                        geoStyle.AltitudeMode      = AltitudeMode.RelativeToGround;
                        geopoint3D.Style3D         = geoStyle;

                        recordset.MoveLast();
                        recordset.AddNew(geopoint3D);
                        recordset.Update();
                        recordset.Dispose();

                        m_layer3DPoint.IsSelectable = false;
                        m_layer3DPoint.UpdateData();
                        m_sceneControl.Scene.Refresh();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Пример #27
0
        private void DlgSlopeMap_Load(object sender, EventArgs e)
        {
            this.cb_DisplayStyle.SelectedIndex = 2;
            this.tb_Opacity.Text           = Convert.ToString(this.m_opacity);
            this.tb_minVisibleSlope.Text   = Convert.ToString(m_minVisibleSlope);
            this.tb_maxVisibleSlope.Text   = Convert.ToString(m_maxVisibleSlope);
            this.cb_IsShowSlopInfo.Checked = false;
            this.cb_IsShowBorder.Checked   = m_bShowBorer;
            this.colorButton_Border.Color  = m_BorderColor;
            this.btn_Clear.Enabled         = false;
            this.btn_StopAnalysis.Enabled  = false;
            m_style3D = new GeoStyle3D();
            m_style3D.FillForeColor = Color.Red;

            m_timer         = new Timer();
            m_timer.Enabled = false;

            this.RegisterEvents(false);
        }
Пример #28
0
        public void OutputMeasureArea(SuperMap.UI.Tracking3DEventArgs e1)
        {
            try
            {
                Point location = mSceneControl.PointToClient(Cursor.Position);
                mTempPoint = new Point3D(e1.X, e1.Y, e1.Z);
                mPoint3Ds.Add(mTempPoint);
                GeoRegion3D geoRegion3D = null;

                if (mPoint3Ds.Count >= 3)
                {
                    geoRegion3D                   = new GeoRegion3D(mPoint3Ds);
                    mGeoStyle3DTemp               = new GeoStyle3D();
                    mGeoStyle3DTemp.MarkerColor   = Color.FromArgb(255, 0, 0);
                    mGeoStyle3DTemp.LineColor     = Color.FromArgb(0, 255, 0);
                    mGeoStyle3DTemp.LineWidth     = 1;
                    mGeoStyle3DTemp.FillForeColor = Color.FromArgb(180, Color.Violet);
                    mGeoStyle3DTemp.AltitudeMode  = AltitudeMode.RelativeToGround;
                    geoRegion3D.Style3D           = mGeoStyle3DTemp.Clone();

                    location.Offset(30, 30);
                    if (location.X > mSceneControl.Bounds.Width / 4 * 3)
                    {
                        location.X = mSceneControl.Bounds.Width / 4 * 3;
                    }
                    if (location.Y > mSceneControl.Bounds.Height)
                    {
                        location.Y = location.Y - 60;
                    }

                    int index = mSceneControl.Scene.TrackingLayer.IndexOf(mMessageTrackingTag);
                    if (index >= 0)
                    {
                        mSceneControl.Scene.TrackingLayer.Remove(index);
                    }
                }
            }
            catch (System.Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }
        }
Пример #29
0
        //将查询结果显示到场景中
        private Layer3D AddResultToScene(DatasetVector dataset, Color color)
        {
            Layer3Ds layer3Ds = m_sceneControl.Scene.Layers;

            //设置图层风格为依模型
            Layer3DSettingVector settingVector = new Layer3DSettingVector();
            GeoStyle3D           style3D       = new GeoStyle3D();

            style3D.AltitudeMode  = AltitudeMode.ClampToObject;
            style3D.FillForeColor = color;
            settingVector.Style   = style3D;

            //将数据添加到场景中
            Layer3DDataset layerDataset = layer3Ds.Add(dataset, settingVector, true);

            layerDataset.UpdateData();
            m_sceneControl.Scene.EnsureVisible(layerDataset);

            return(layerDataset);
        }
        /// <summary>
        /// 设置结果文本样式
        /// </summary>
        /// <param name="text"></param>
        private void SetResultTextStyle(GeoText3D text)
        {
            try
            {
                TextStyle textStyle = new TextStyle();
                textStyle.ForeColor  = Color.White;
                textStyle.Outline    = true;
                textStyle.BackColor  = Color.Black;
                textStyle.FontHeight = 10;
                text.TextStyle       = textStyle;
                GeoStyle3D style = new GeoStyle3D();

                style.AltitudeMode = AltitudeMode.RelativeToUnderground;

                text.Style3D = style;
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }
        }
Пример #31
0
 /// <summary>
 ///默认的空间查询图形风格
 /// </summary>
 /// <returns></returns>
 private GeoStyle3D GetGeoStyle3D()
 {
     GeoStyle3D geoStyle = new GeoStyle3D();
     geoStyle.AltitudeMode = AltitudeMode.ClampToGround;
     geoStyle.BottomAltitude = 20;
     //geoStyle.ExtendedHeight = 20;
     geoStyle.LineColor = System.Drawing.Color.Yellow;
     geoStyle.LineWidth = 1;
     geoStyle.FillBackColor = System.Drawing.Color.FromArgb(180, 255, 255, 0);
     geoStyle.FillForeColor = System.Drawing.Color.FromArgb(180, 255, 255, 0);
     geoStyle.MarkerColor = System.Drawing.Color.FromArgb(180, 255, 255, 0);
     geoStyle.FillMode = FillMode3D.Fill;
     geoStyle.FillGradientMode = FillGradientMode.Linear;
     geoStyle.MarkerSize = 15;
     return geoStyle;
 }
Пример #32
0
		/// <summary>
		/// 打开需要的地形文件和影像文件
		/// </summary>
		private void Initialize()
		{
			try
			{
				// 调整sceneControl的状态
				//SmObjectLocator.getInstance().GlobeObject.Action = Action3D.Pan;

				//注册事件
				//SmObjectLocator.getInstance().GlobeObject.Tracking += new Tracking3DEventHandler(TrackingHandler);
				//SmObjectLocator.getInstance().GlobeObject.Tracked += new Tracked3DEventHandler(TrackedHandler);
				//SmObjectLocator.getInstance().GlobeObject.MouseUp += m_SceneControl_MouseUp;

				m_point3Ds = new Point3Ds();

				m_style3d = new GeoStyle3D();

				m_GeoStyle3D = new GeoStyle3D();
				m_GeoStyle3D.MarkerColor = Color.FromArgb(255, 0, 255);
				m_GeoStyle3D.LineColor = Color.FromArgb(255, 255, 0);
				m_GeoStyle3D.LineWidth = 1;
				m_GeoStyle3D.FillForeColor = Color.FromArgb(180, Color.Violet);
				m_GeoStyle3D.AltitudeMode = AltitudeMode.ClampToGround;

				m_GeoStyle3DTemp = new GeoStyle3D();
				m_GeoStyle3DTemp.MarkerColor = Color.FromArgb(255, 0, 0);
				m_GeoStyle3DTemp.LineColor = Color.FromArgb(0, 255, 0);
				m_GeoStyle3DTemp.LineWidth = 1;
				m_GeoStyle3DTemp.FillForeColor = Color.FromArgb(180, Color.Violet);
				m_GeoStyle3DTemp.AltitudeMode = AltitudeMode.ClampToGround;

			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex.Message);
			}
		}
Пример #33
0
		/// <summary>
		/// 设置量算结果文本的风格
		/// </summary>
		/// <param name="text"></param>
		private void SetResultTextStyle(GeoText3D text)
		{
			try
			{
				TextStyle textStyle = new TextStyle();
				textStyle.ForeColor = Color.White;
				textStyle.Outline = true;
				textStyle.BackColor = Color.Black;
				textStyle.FontHeight = 10;
				text.TextStyle = textStyle;
				GeoStyle3D style = new GeoStyle3D();
				if (SmObjectLocator.getInstance().GlobeObject.Action == Action3D.MeasureAltitude)
				{
					style.AltitudeMode = AltitudeMode.Absolute;
					style.BottomAltitude = 200;
				}
				else
				{
					style.AltitudeMode = AltitudeMode.ClampToGround;
				}
				text.Style3D = style;
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex.Message);
			}
		}
Пример #34
0
		/// <summary>
		/// 设置添加到TrackingLayer的三维几何对象的风格
		/// </summary>
		/// <param name="geometry"></param>
		private void SetGeometry3DStyle(Geometry3D geometry)
		{
			try
			{
				GeoStyle3D style = new GeoStyle3D();

				if (SmObjectLocator.getInstance().GlobeObject.Action == Action3D.MeasureAltitude || SmObjectLocator.getInstance().GlobeObject.Action == Action3D.MeasureDistance || SmObjectLocator.getInstance().GlobeObject.Action == Action3D.MeasureHorizontalDistance)
				{
					style.AltitudeMode = AltitudeMode.Absolute;
					style.BottomAltitude = 100;
				}
				else
				{
					style.AltitudeMode = AltitudeMode.ClampToGround;
				}

				style.MarkerSize = 4;
				style.MarkerColor = Color.FromArgb(255, 0, 255);

				style.LineColor = Color.Yellow;
				style.LineWidth = 2;
				style.FillMode = FillMode3D.LineAndFill;
				style.FillForeColor = Color.LightSeaGreen;
				geometry.Style3D = style;
			}
			catch (Exception ex)
			{
				Trace.WriteLine(ex.Message);
			}
		}
Пример #35
0
		/// <summary>
		/// 初始化要素图标样式
		/// </summary>
		private void InitGeoPoint3DParams(bool isReset = false)
		{
			if (isReset)
			{
				this.lastGPot = null;
				this.lastTag = "";
				this.lastIndex = -1;
			}
			else
			{
				GeoStyle3D sty3D = new GeoStyle3D();
				sty3D.MarkerFile = "Images/point.png";
				sty3D.MarkerScale = defaultScale;
				sty3D.MarkerSize = 32;
				sty3D.AltitudeMode = AltitudeMode.ClampToGround;
				normalStyle = sty3D;

				GeoStyle3D sty3DHigh = new GeoStyle3D();
				sty3DHigh.MarkerFile = "Images/bluepot.png";
				sty3DHigh.MarkerScale = defaultScale * 1.5;
				sty3DHigh.MarkerSize = 32;
				sty3DHigh.AltitudeMode = AltitudeMode.ClampToGround;
				highLightStyle = sty3DHigh;
			}
		}