Ejemplo n.º 1
0
        private void Button1_Click(object sender, EventArgs e)
        {
            double    x         = Convert.ToDouble(textBox1.Text);
            double    y         = Convert.ToDouble(textBox2.Text);
            GISVertex onevertex = new GISVertex(x, y);
            GISPoint  onepoint  = new GISPoint(onevertex);


            //获取属性信息
            string       attribute    = textBox3.Text;
            GISAttribute oneattribute = new GISAttribute();

            oneattribute.AddValue(attribute);

            //新建一个GISFeature 并添加到features数组中
            GISFeature onefeature = new GISFeature(onepoint, oneattribute);

            features.Add(onefeature);

            //画出这个GISFeature
            Graphics graphics = this.CreateGraphics();

            onefeature.draw(graphics, true, 0);
            //参数分别是画笔 是否绘制属性 属性列表values的索引
        }
Ejemplo n.º 2
0
        private void button1_Click(object sender, EventArgs e)
        {
            double   x         = Convert.ToDouble(textBox1.Text);
            double   y         = Convert.ToDouble(textBox2.Text);
            string   attribute = textBox3.Text;
            GISPoint onepoint  = new GISPoint(new GISVertex(x, y));

            GISAttribute attributeset = new GISAttribute();

            attributeset.AddValue(attribute);

            GISFeature onefeasure = new GISFeature(onepoint, attributeset);

            features.Add(onefeasure);

            Graphics graphics = CreateGraphics();

            onefeasure.draw(graphics, view, true, 0);
        }
Ejemplo n.º 3
0
 private List <GISFeature> GetRandomFeature(Random randobj, List <GISFeature> randgisfeature, int number)
 {
     //根据指定数量创造随机gisfeature对象
     for (int i = 0; i < number; i++)
     {
         double    lon       = 360 * randobj.NextDouble() - 180;
         double    lat       = 170 * randobj.NextDouble() - 85;
         GISVertex onevertex = new GISVertex(lon, lat);
         GISPoint  onepoint  = new GISPoint(onevertex);
         //获取属性信息
         string       attribute1   = lon.ToString() + "," + lat.ToString();
         string       attribute2   = "地理坐标为:" + onevertex.mercatorx.ToString() + "," + onevertex.mercatory.ToString();
         GISAttribute oneattribute = new GISAttribute();
         oneattribute.AddValue(attribute1);
         oneattribute.AddValue(attribute2);
         //新建一个GISFeature 并添加到features数组中
         GISFeature onefeature = new GISFeature(onepoint, oneattribute);
         randgisfeature.Add(onefeature);
     }
     return(randgisfeature);
 }
Ejemplo n.º 4
0
        private void Form2_MouseUp(object sender, MouseEventArgs e)
        {
            if (MouseOnMap)
            {
                MouseOnMap = false;
                switch (MouseCommand)
                {
                case MOUSECOMMAND.Select:
                    for (int i = 0; i < document.layers.Count; i++)
                    {
                        document.layers[i].ClearSelection();
                    }
                    if (e.X == MouseStartX && e.Y == MouseStartY)
                    {
                        for (int i = 0; i < document.layers.Count; i++)
                        {
                            GISFeature feature = document.layers[i].SelectByClick(new Point(e.X, e.Y), view);
                            if (feature != null)
                            {
                                feature.Selected = true;
                            }
                        }
                    }
                    else
                    {
                        GISExtent extent = view.RectToExtent(new Rectangle(
                                                                 Math.Min(e.X, MouseStartX),
                                                                 Math.Min(e.Y, MouseStartY),
                                                                 Math.Abs(e.X - MouseStartX),
                                                                 Math.Abs(e.Y - MouseStartY)));
                        for (int i = 0; i < document.layers.Count; i++)
                        {
                            List <GISFeature> features = document.layers[i].SelectByExtent(extent);
                            for (int j = 0; j < features.Count; j++)
                            {
                                features[j].Selected = true;
                            }
                        }
                    }
                    updateview();
                    if (layerDialog != null)
                    {
                        layerDialog.UpdateSelection();
                    }
                    break;

                case MOUSECOMMAND.ZoomIn:
                    if (e.X == MouseStartX && e.Y == MouseStartY)
                    {
                        GISVertex MouseLocation = view.ToMapVertex(new Point(e.X, e.Y));
                        double    ZoomInfactor  = 0.8;
                        double    newwidth      = view.CurrentMapExtent.Width * ZoomInfactor;
                        double    newheight     = view.CurrentMapExtent.Height * ZoomInfactor;
                        double    newminx       = MouseLocation.x - (MouseLocation.x - view.CurrentMapExtent.MinX) * ZoomInfactor;
                        double    newminy       = MouseLocation.y - (MouseLocation.y - view.CurrentMapExtent.MinY) * ZoomInfactor;
                        view.CurrentMapExtent.SetValue(new GISVertex(newminx, newminy), new GISVertex(newminx + newwidth, newminy + newheight));
                    }
                    else
                    {
                        view.CurrentMapExtent = view.RectToExtent(new Rectangle(
                                                                      Math.Min(e.X, MouseStartX),
                                                                      Math.Min(e.Y, MouseStartY),
                                                                      Math.Abs(e.X - MouseStartX),
                                                                      Math.Abs(e.Y - MouseStartY)));
                    }
                    if (delaunayToolStripMenuItem1.Checked || 泰森多边形ToolStripMenuItem.Checked)
                    {
                        updateview2();
                    }
                    else
                    {
                        updateview();
                    }
                    break;

                case MOUSECOMMAND.ZoomOut:
                    if (e.X == MouseStartX && e.Y == MouseStartY)
                    {
                        GISVertex MouseLocation = view.ToMapVertex(new Point(e.X, e.Y));
                        double    ZoomOutfactor = 0.8;
                        double    newwidth      = view.CurrentMapExtent.Width / ZoomOutfactor;
                        double    newheight     = view.CurrentMapExtent.Height / ZoomOutfactor;
                        double    newminx       = MouseLocation.x - (MouseLocation.x - view.CurrentMapExtent.MinX) / ZoomOutfactor;
                        double    newminy       = MouseLocation.y - (MouseLocation.y - view.CurrentMapExtent.MinY) / ZoomOutfactor;
                        view.CurrentMapExtent.SetValue(new GISVertex(newminx, newminy), new GISVertex(newminx + newwidth, newminy + newheight));
                    }
                    else
                    {
                        GISExtent extent = view.RectToExtent(new Rectangle(
                                                                 Math.Min(e.X, MouseStartX),
                                                                 Math.Min(e.Y, MouseStartY),
                                                                 Math.Abs(e.X - MouseStartX),
                                                                 Math.Abs(e.Y - MouseStartY)));
                        double newwidth  = view.CurrentMapExtent.Width * view.CurrentMapExtent.Width / extent.Width;
                        double newheight = view.CurrentMapExtent.Height * view.CurrentMapExtent.Height / extent.Height;
                        double newminx   = extent.MinX - (extent.MinX - view.CurrentMapExtent.MinX) * newwidth / view.CurrentMapExtent.Width;
                        double newminy   = extent.MinY - (extent.MinY - view.CurrentMapExtent.MinY) * newheight / view.CurrentMapExtent.Height;
                        view.CurrentMapExtent.SetValue(new GISVertex(newminx, newminy), new GISVertex(newminx + newwidth, newminy + newheight));
                    }
                    if (delaunayToolStripMenuItem1.Checked || 泰森多边形ToolStripMenuItem.Checked)
                    {
                        updateview2();
                    }
                    else
                    {
                        updateview();
                    }
                    break;

                case MOUSECOMMAND.Pan:
                    GISVertex C1 = view.CurrentMapExtent.MapCenter;
                    GISVertex M1 = view.ToMapVertex(new Point(MouseStartX, MouseStartY));
                    GISVertex M2 = view.ToMapVertex(new Point(e.X, e.Y));
                    GISVertex C2 = new GISVertex(C1.x - (M2.x - M1.x), C1.y - (M2.y - M1.y));
                    view.CurrentMapExtent.SetMapCenter(C2);
                    updateview();
                    if (delaunayToolStripMenuItem1.Checked && dlay.Count > 0)
                    {
                        delaunayToolStripMenuItem1.PerformClick();
                    }
                    if (泰森多边形ToolStripMenuItem.Checked && dlay.Count > 0)
                    {
                        泰森多边形ToolStripMenuItem.PerformClick();
                    }
                    break;
                }
            }
        }