Пример #1
0
        private void HighlightSelectedLines(DataGridView activeDataGridView, MapImage activeMap)
        {
            List <Geometry> geomsToHighlight = new List <Geometry>();

            // Create the new "ToHighlight" vector layer and remove the old one from the map.
            VectorLayer toHighlight  = new VectorLayer("HighlightedLines");
            int         iRemoveIndex = activeMap.Map.Layers.FindIndex(delegate(SharpMap.Layers.ILayer layer) { return(layer.LayerName == "HighlightedLines"); });

            if (iRemoveIndex > -1)
            {
                activeMap.Map.Layers.RemoveAt(iRemoveIndex);
            }

            // Loop through the selected values only and add them to the geom collection to highlight.
            // Then add that layer to the map.
            foreach (DataGridViewRow linestringToHighlight in activeDataGridView.SelectedRows)
            {
                if (linestringToHighlight.Cells["LINESTRING"].Value != null && linestringToHighlight.Cells["LINESTRING"].Value.ToString() != "")
                {
                    Geometry geomToHighlight = Geometry.GeomFromText(linestringToHighlight.Cells["LINESTRING"].Value.ToString());
                    geomToHighlight.Color  = Color.Cyan;
                    geomToHighlight.Width_ = 5;
                    geomsToHighlight.Add(geomToHighlight);
                }
            }
            toHighlight.DataSource = new GeometryProvider(geomsToHighlight);
            activeMap.Map.Layers.Insert(0, toHighlight);
            activeMap.Refresh();
            activeMap.Map.ZoomToExtents();
        }
Пример #2
0
        protected override void OnClick()
        {
            var bufZonesLayer = new BufZonesLayer {
                IsAVR = m_MapImage.Parent is AvrMapControl
            };

            if (bufZonesLayer.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    var eidssUserBufZoneLayer = UserDbLayersManager.CreateBufZoneLayer(bufZonesLayer.ZoneLayerName,
                                                                                       bufZonesLayer.Description,
                                                                                       bufZonesLayer.PivotalLayer);
                    //MapImage.Map.Layers.Add(eidssUserBufZoneLayer);

                    if (OnCreateBufZone != null)
                    {
                        OnCreateBufZone(new KeyValuePair <Guid, string>(eidssUserBufZoneLayer.LayerDbGuid,
                                                                        eidssUserBufZoneLayer.LayerName));
                    }
                    //MapControl.RefreshContent();
                    MapImage.Refresh();
                    //ZoneLayerStorage.UpdateZoneLayerDict(); //not need more
                }
                catch (Exception ex)
                {
                    ErrorForm.ShowError(ex);
                }
            }
        }
Пример #3
0
 public void ZoomExtents()
 {
     if (HasLayers())
     {
         _mapImage.Map.ZoomToExtents();
         _mapImage.Refresh();
     }
 }
Пример #4
0
        void MapImage_MouseDown(Point worldPos, MouseEventArgs e)
        {
            string strName;

            var geom = GetArealGeom(worldPos, out strName);

            if (geom == null)
            {
                return;
            }
            //show form
            PolygonBufZone frm = new PolygonBufZone {
                ZoneName = strName
            };

            if (frm.ShowDialog() == DialogResult.OK)
            {
                if (m_PivotalProvider == null)
                {
                    return;
                }

                if (m_TargetLayerGuid == Guid.Empty)
                {
                    return;
                }

                var eidssUserBufZoneLayer = (EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid);

                if (eidssUserBufZoneLayer == null)
                {
                    return;
                }

                var userBufZone = new EidssUserBufZoneLayer.UserBufZone
                {
                    Geometry    = geom,
                    Description = frm.Description,
                    Name        = frm.ZoneName,
                    Center      = new Point(0, 0)
                };

                eidssUserBufZoneLayer.AddNewZone(userBufZone);

                MapImage.Refresh();

                //UserDbFeature userDbFeature = new UserDbFeature(frm.Name, frm.Description, geom);
                //DataProvider.AddUserFeature(userDbFeature);
                //MapImage.Refresh();
            }
        }
Пример #5
0
        void m_MapImage_MouseUp(SharpMap.Geometries.Point worldPos, MouseEventArgs imagePos)
        {
            if (m_IsShifting && m_IsMoveMode && imagePos.Button == MouseButtons.Left)
            {
                //stop shifting
                m_IsShifting = false;
                //save last shift-position into buffer zone

                var zone = m_BufZoneLayer.FeatureRowToStruct(m_SelectedFeature);

                var deltaX = worldPos.X - m_ShiftBeginPnt.X;
                var deltaY = worldPos.Y - m_ShiftBeginPnt.Y;

                if (zone.Radius > 0)
                {
                    //circle
                    zone.Center.X = zone.Center.X + deltaX;
                    zone.Center.Y = zone.Center.Y + deltaY;

                    zone.Geometry = GIS_V4.Utils.GeometryUtils.CreateBuffer(zone.Center, zone.Radius);

                    m_BufZoneLayer.UpdateZone(zone);

                    m_SelectedFeature.Geometry      = zone.Geometry;
                    m_SelectedFeature["dblCenterX"] = zone.Center.X;
                    m_SelectedFeature["dblCenterY"] = zone.Center.Y;
                }
                else
                {
                    //polygon
                    if (m_SelectedFeature.Geometry is Polygon)
                    {
                        var geom = (Polygon)m_SelectedFeature.Geometry;

                        //foreach (var vertex in geom.ExteriorRing.Vertices)
                        //{
                        //    vertex.X = vertex.X + deltaX;
                        //    vertex.Y = vertex.Y + deltaY;
                        //}
                        zone.Geometry = new Polygon(geom.ExteriorRing);

                        m_SelectedFeature.Geometry = zone.Geometry;
                        m_BufZoneLayer.UpdateZone(zone);
                    }
                }

                MapImage.Refresh();
            }
        }
Пример #6
0
        void MapImage_MouseDown(Point worldPos, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                var circleBufZone = new CircleBufZone();
                if (circleBufZone.ShowDialog() == DialogResult.OK)
                {
                    if (m_TargetLayerGuid == Guid.Empty)
                    {
                        return;
                    }

                    var projectedCenter  = worldPos;
                    var projectedBufGeom = GIS_V4.Utils.GeometryUtils.CreateBuffer(projectedCenter, circleBufZone.Radius);
                    //var geom = GeometryTransform.TransformGeometry(projectedBufGeom, CoordinateSystems.SphericalMercatorCS,
                    //                                               CoordinateSystems.WGS84);
                    //var center = GeometryTransform.TransformGeometry(projectedCenter, CoordinateSystems.SphericalMercatorCS,
                    //                                               CoordinateSystems.WGS84);
                    if (m_TargetLayerGuid == Guid.Empty)
                    {
                        return;
                    }

                    var eidssUserBufZoneLayer = (EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid);

                    if (eidssUserBufZoneLayer == null)
                    {
                        return;
                    }

                    var userBufZone = new EidssUserBufZoneLayer.UserBufZone
                    {
                        Geometry    = projectedBufGeom, //geom,
                        Description = circleBufZone.Description,
                        Name        = circleBufZone.ZoneName,
                        Center      = projectedCenter, //center,
                        Radius      = circleBufZone.Radius
                    };

                    eidssUserBufZoneLayer.AddNewZone(userBufZone);

                    MapImage.Refresh();
                }
                circleBufZone.Dispose();
            }
        }
Пример #7
0
        private void DeleteSelected()
        {
            var msg     = EidssMessages.GetForCurrentLang("gis_Message_DelZone", "Would you like to delete selected buffer zone?");
            var caption = EidssMessages.GetForCurrentLang("gis_Caption_DelZone", "Delete buffer zone");

            if (MessageForm.Show(msg, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (m_SelectedFeature != null)
                {
                    //MapImage.Cursor = Cursors.WaitCursor;
                    if (!m_IsMoveMode)
                    {
                        ((EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid)).DeleteZone(
                            (long)m_SelectedFeature["idfsGeoObject"]);
                    }
                    else
                    {
                        ((EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_LastMovedTargetLayerGuid)).DeleteZone(
                            (long)m_SelectedFeature["idfsGeoObject"]);
                    }

                    m_SelectedFeature = null;

                    if (m_IsMoveMode)
                    {
                        m_MiApplyMovement.Visible  = false;
                        m_MiCancelMovement.Visible = false;
                        m_MiMove.Visible           = true;
                    }

                    if (UserDbLayersManager.GetLayerMetadata(m_TargetLayerGuid).m_PivotalLayer != PivotLayerType.None)
                    {
                        m_MiMove.Visible = false;
                    }

                    m_IsMoveMode = false;
                    m_MapImage.CommandToolPress -= m_MapImage_CommandToolPress;

                    //MapImage.Cursor = Cursors.Default;
                    MapImage.Refresh();
                }
            }
        }
Пример #8
0
        void MapImage_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (m_ToolPhase == ToolPhase.WaitFirst)
            {
                return;
            }
            //if (DataProvider == null) NoDataProvider();

            //compleate polygon
            if (m_Vertices.Count < 3)
            {
                return;
            }

            m_Vertices.Add(m_Vertices[0]);

            var      linearRing = new LinearRing(m_Vertices);
            Geometry polygon    = new Polygon(linearRing);

            //polygon = GeometryTransform.TransformGeometry(polygon, CoordinateSystems.SphericalMercatorCS,
            //                                                      CoordinateSystems.WGS84);
            m_ToolPhase = ToolPhase.WaitFirst;

            var connectionString = ConnectionManager.DefaultInstance.ConnectionString;
            var connection       = new SqlConnection(connectionString);

            var valid = SqlExecHelper.SqlGeometryValidation(connection, polygon);

            if (!valid)
            {
                MessageForm.Show(Resources.gis_MtIndependentPolygonBufferZone_CheckValidityMsg);
            }
            else
            {
                //show form
                var frm = new PolygonBufZone();
                //frm.ZoneLayer = string.Empty;

                if (frm.ShowDialog() == DialogResult.OK)
                {
                    if (m_TargetLayerGuid == Guid.Empty)
                    {
                        return;
                    }

                    var eidssUserBufZoneLayer =
                        (EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid);

                    if (eidssUserBufZoneLayer == null)
                    {
                        return;
                    }


                    var userBufZone = new EidssUserBufZoneLayer.UserBufZone
                    {
                        Geometry    = polygon,
                        Description = frm.Description,
                        Name        = frm.ZoneName,
                        //Center = new Point(0, 0)
                    };

                    eidssUserBufZoneLayer.AddNewZone(userBufZone);
                }
            }
            MapImage.Refresh();

            m_Vertices.Clear();
            m_Points.Clear();
            m_LastMousePosition = System.Drawing.Point.Empty;
        }
Пример #9
0
 /// <summary>
 /// 命令执行
 /// </summary>
 /// <param name="map"></param>
 /// <param name="tree"></param>
 public void Execute(MapImage map, MyTree tree)
 {
     string[] commandlist = null;
     lock (Command.CommandList)
     {
         commandlist = new string[Command.CommandList.Count];
         Command.CommandList.CopyTo(commandlist);
         Command.CommandList.Clear();
     }
     foreach (string cmd in commandlist)
     {
         string[] list = cmd.Split(',');
         if (list.Length < 2)
         {
             return;
         }
         decimal mapid = GetId(list[1]);
         if (mapid != map.Map.MapId)
         {
             continue;
         }
         if (list[0] == CommandType.OptionType.CHANGE_MAP_NAME.ToString())
         {
             ChangeMapName(map, tree, list);
         }
         else if (list[0] == CommandType.OptionType.ADD_LAYER.ToString())
         {
             AddLayer(map, tree, list);
         }
         else if (list[0] == CommandType.OptionType.CHANGE_LAYER_NAME.ToString())
         {
             ChangeLayerName(map, tree, list);
         }
         else if (list[0] == CommandType.OptionType.DELETE_LAYER.ToString())
         {
             DeleteLayer(map, tree, list);
         }
         else if (list[0] == CommandType.OptionType.ADD_OBJECT.ToString())
         {
             AddObject(map, tree, list);
         }
         else if (list[0] == CommandType.OptionType.CHANGE_OBJECT_NAME.ToString())
         {
             ChangeObjectName(map, tree, list);
         }
         else if (list[0] == CommandType.OptionType.DELETE_OBJECT.ToString())
         {
             DeleteObject(map, tree, list);
         }
         else if (list[0] == CommandType.OptionType.DRAW_PHOTO_DATA.ToString())
         {
             List <decimal> maplist = new List <decimal>();
             for (int i = 1; i < list.Length; i++)
             {
                 decimal id = 0;
                 if (decimal.TryParse(list[i], out id))
                 {
                     maplist.Add(id);
                 }
             }
         }
         else if (list[0] == CommandType.OptionType.GET_DEMO_FLAG.ToString())
         {
             SqlHelper.IsDemo = list[1] != "100";
         }
     }
     if (commandlist.Length > 0)
     {
         map.Refresh();
         if (SetToolBarStatus != null)
         {
             SetToolBarStatus();
         }
     }
 }
Пример #10
0
        void MapImage_MouseDown(Point worldPos, MouseEventArgs e)
        {
            switch (PivotalType)
            {
            case PivotLayerType.Settlements:
                m_PivotalProvider = new EidssSqlServer2008(SystemLayerNames.Settlements);
                break;

            case PivotLayerType.AvrPoints:
                if (Content.AVRLayer != null)
                {
                    m_PivotalProvider = Content.AVRLayer.DataSource;
                }
                break;

            default:
                m_PivotalProvider = null;
                break;
            }

            string strName;
            var    nearestPoint = GetNearestPoint(worldPos, out strName);

            if (nearestPoint == null)
            {
                return;
            }
            //show form
            var frm = new CircleBufZone {
                ZoneName = strName
            };

            if (frm.ShowDialog() == DialogResult.OK)
            {
                if (m_PivotalProvider == null)
                {
                    return;
                }

                var projectedCenter = nearestPoint;
                //var projectedCenter = GeometryTransform.TransformGeometry(nearestPoint, CoordinateSystems.WGS84,
                //                                                          CoordinateSystems.SphericalMercatorCS);
                var projectedBufGeom = GIS_V4.Utils.GeometryUtils.CreateBuffer(projectedCenter, frm.Radius);
                //var geom = GeometryTransform.TransformGeometry(projectedBufGeom, CoordinateSystems.SphericalMercatorCS,
                //                                               CoordinateSystems.WGS84);
                //var center = GeometryTransform.TransformGeometry(projectedCenter, CoordinateSystems.SphericalMercatorCS,
                //                                               CoordinateSystems.WGS84);
                if (m_TargetLayerGuid == Guid.Empty)
                {
                    return;
                }

                var eidssUserBufZoneLayer = (EidssUserBufZoneLayer)UserDbLayersManager.GetUserLayer(m_TargetLayerGuid);

                if (eidssUserBufZoneLayer == null)
                {
                    return;
                }

                var userBufZone = new EidssUserBufZoneLayer.UserBufZone
                {
                    Geometry    = projectedBufGeom, //geom,
                    Description = frm.Description,
                    Name        = frm.ZoneName,
                    Center      = projectedCenter, //center,
                    Radius      = frm.Radius
                };

                eidssUserBufZoneLayer.AddNewZone(userBufZone);

                MapImage.Refresh();
            }
        }