Пример #1
0
        private void DotDensity(IFeatureLayer pFeatLyr, string sFieldName, int intRendererDensity)
        {
            IGeoFeatureLayer    pGeoFeatureLayer    = pFeatLyr as IGeoFeatureLayer;
            IDotDensityRenderer pDotDensityRenderer = new DotDensityRendererClass();
            IRendererFields     pRendererFields     = pDotDensityRenderer as IRendererFields;

            //设置渲染字段
            pRendererFields.AddField(sFieldName);
            //设置填充背景色
            IDotDensityFillSymbol pDotDensityFillSymbol = new DotDensityFillSymbolClass();

            pDotDensityFillSymbol.DotSize         = 3;
            pDotDensityFillSymbol.BackgroundColor = GetRgbColor(0, 255, 0);
            //设置渲染符号
            ISymbolArray        pSymbolArray        = pDotDensityFillSymbol as ISymbolArray;
            ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();

            pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;
            pSimpleMarkerSymbol.Color = GetRgbColor(0, 0, 255);
            pSymbolArray.AddSymbol(pSimpleMarkerSymbol as ISymbol);
            pDotDensityRenderer.DotDensitySymbol = pDotDensityFillSymbol;
            //设置渲染密度,即每个点符号所代表的数值大小
            pDotDensityRenderer.DotValue = intRendererDensity;
            //创建图例
            pDotDensityRenderer.CreateLegend();
            pGeoFeatureLayer.Renderer = pDotDensityRenderer as IFeatureRenderer;
            axMapControl1.Refresh();
            axMapControl1.Update();
            Close();
        }
Пример #2
0
 private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
 {
     rasterRen.Raster = m_rasterLayer.Raster;
     rasterRen.Update();
     rasterRGBRen.RedBandIndex   = comboBox2.SelectedIndex;
     rasterRGBRen.GreenBandIndex = comboBox3.SelectedIndex;
     rasterRGBRen.BlueBandIndex  = comboBox4.SelectedIndex;
     rasterRen.Update();
     m_rasterLayer.Renderer = (IRasterRenderer)rasterRGBRen;
     m_mapControl.Extent    = m_rasterLayer.AreaOfInterest;
     m_mapControl.ActiveView.Refresh();
     m_mapControl.Refresh();
     m_mapControl.Update();
 }
Пример #3
0
        //闪烁目标
        public static void FlashFeature(AxMapControl mapControl, IFeature iFeature, IMap iMap)
        {
            IActiveView iActiveView = iMap as IActiveView;

            //mapControl.SuspendLayout();
            //update很重要。先让前面的缩放操作更新好了,再闪烁。
            mapControl.Update();
            if (iActiveView != null)
            {
                iActiveView.ScreenDisplay.StartDrawing(0, (short)esriScreenCache.esriNoScreenCache);

                //根据几何类型调用不同的过程
                switch (iFeature.Shape.GeometryType)
                {
                case esriGeometryType.esriGeometryPolyline:
                    FlashLine(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);
                    break;

                case esriGeometryType.esriGeometryPolygon:
                    FlashPolygon(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);
                    break;

                case esriGeometryType.esriGeometryPoint:
                    FlashPoint(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);
                    break;

                default:
                    break;
                }
                iActiveView.ScreenDisplay.FinishDrawing();
            }
        }
Пример #4
0
        public static void SaveMxd()
        {
            IMapDocument oMapDoc = new MapDocumentClass();

            oMapDoc.Open(AxMapControl.DocumentFilename);

            if (oMapDoc.IsReadOnly[AxMapControl.DocumentFilename])
            {
                throw new InvalidOperationException("Can not save mxd. Is read only.");
            }

            AxMapControl.Update();
            AxTocControl.Update();

            oMapDoc.ReplaceContents((IMxdContents)AxMapControl.Map);
            oMapDoc.Save(true, true);
            oMapDoc.Close();

            if (oMapDoc != null)
            {
                ComReleaser.ReleaseCOMObject(oMapDoc);
                oMapDoc = null;
            }

            if (AxMapControl.Map != null)
            {
                ComReleaser.ReleaseCOMObject(AxMapControl.Map);
                AxMapControl.Map = null;
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
Пример #5
0
        /// <summary>
        /// 初始化标牌
        /// </summary>
        private void InitLable()
        {
            IPoint point = base.Geometry as IPoint;

            mapControl = BelongLayer.MapControl as AxMapControl;
            mapControl.Update();
            mapControl.OnMouseDown += mapControl_OnMouseDown;
            int x = -1;
            int y = -1;

            mapControl.FromMapPoint(point, ref x, ref y);
            System.Drawing.Point targetPoint = new System.Drawing.Point(x, y);
            mapLabel          = new Windows.MapLabel(targetPoint);
            mapLabel.Move    += new EventHandler(mapLabel_Move);
            mapLabel.Location = mapLabel.LabelLocation;
            IPoint labelLocation = mapControl.ToMapPoint(mapLabel.Location.X, mapLabel.Location.Y);

            Dosomething((Action)(delegate
            {
                mapControl.Controls.Add(mapLabel);
            }), true);

            //画线
            MapFrame.Core.Model.Kml kml = new MapFrame.Core.Model.Kml();
            kml.Placemark.Name = "标牌线";
            MapFrame.Core.Model.KmlLineString    line      = new MapFrame.Core.Model.KmlLineString();
            List <MapFrame.Core.Model.MapLngLat> pointList = new List <MapFrame.Core.Model.MapLngLat>();

            pointList.Add(new MapFrame.Core.Model.MapLngLat(point.X, point.Y));
            pointList.Add(new MapFrame.Core.Model.MapLngLat(labelLocation.X, labelLocation.Y));
            line.PositionList = pointList;

            line.Color          = Color.Black;
            line.Width          = 2;
            kml.Placemark.Graph = line;
            BelongLayer.AddElement(kml);
        }
Пример #6
0
        private void btnuse_Click(object sender, EventArgs e)
        {
            if (m_pLayer is IFeatureLayer)
            {
                try
                {
                    m_strSQL = RtbSQL.Text;

                    m_pMapCtl.Map.ClearSelection();
                    IFeatureSelection pFS     = (IFeatureSelection)m_pLayer;
                    IQueryFilter      pFilter = new QueryFilterClass();
                    pFilter.WhereClause = m_strSQL;
                    pFS.SelectFeatures(pFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
                    pFS.SelectionChanged();

                    m_pMapCtl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, m_pLayer, null);
                    m_pMapCtl.Update();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }
Пример #7
0
 /// <summary>
 /// 刷新地图
 /// </summary>
 public void RefreshMap()
 {
     MainMapControl.Refresh();
     MainMapControl.Update();
 }
Пример #8
0
        private void bt_ok_Click(object sender, EventArgs e)
        {
            splashScreenManager1.ShowWaitForm();
            if (comboBoxSelect.SelectedItem == null)
            {
                MessageBox.Show("图层不能为空");
                return;
            }
            if (comboBoxRed.SelectedItem == null || comboBoxGreen.SelectedItem == null || comboBoxBlue.SelectedItem == null)
            {
                MessageBox.Show("波段不能为空!");
                return;
            }
            if (textBoxOutPut.Text == "")
            {
                MessageBox.Show("存储路径不能为空!");
                return;
            }
            IRasterLayer pRasterLayer = new RasterLayerClass();

            pRasterLayer.CreateFromDataset(m_pRasterDataset);
            IRasterRGBRenderer pRasterRGBRen = new RasterRGBRendererClass();
            IRasterRenderer    pRasterRen    = (IRasterRenderer)pRasterRGBRen;

            pRasterRen.Raster            = pRasterLayer.Raster;
            pRasterRGBRen.RedBandIndex   = comboBoxRed.SelectedIndex;
            pRasterRGBRen.GreenBandIndex = comboBoxGreen.SelectedIndex;
            pRasterRGBRen.BlueBandIndex  = comboBoxBlue.SelectedIndex;
            pRasterRen.Update();
            pRasterLayer.Renderer = (IRasterRenderer)pRasterRGBRen;
            IRaster pRaster = pRasterLayer.Raster;

            if (pRaster != null)
            {
                IWorkspaceFactory WF       = new RasterWorkspaceFactoryClass();
                string            filename = textBoxOutPut.Text;
                string            filepath = System.IO.Path.GetDirectoryName(filename);
                string            name     = System.IO.Path.GetFileName(filename);
                try
                {
                    IWorkspace rasterWorkspace = WF.OpenFromFile(filepath, 0);
                    ISaveAs    saveAs          = (ISaveAs)pRaster;
                    saveAs.SaveAs(name, rasterWorkspace, "");
                    if (MessageBox.Show("保存成功,是否打开图层?") == DialogResult.OK)
                    {
                        pRasterLayer.Name = name;
                        m_mapControl.AddLayer(pRasterLayer);
                        m_mapControl.Extent = pRasterLayer.AreaOfInterest;
                        m_mapControl.ActiveView.Refresh();
                        m_mapControl.Refresh();
                        m_mapControl.Update();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
            }
            splashScreenManager1.CloseWaitForm();
            this.Close();
        }