Пример #1
0
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataTable    table = MapDBClass.GetPropertyDefine((comboBox1.SelectedIndex + 1).ToString());
            DataGridView view  = dataGridView1;

            view.Rows.Clear();
            for (int i = 0; i < table.Rows.Count; i++)
            {
                int row = view.Rows.Add();
                view.Rows[row].Cells[0].Value         = table.Rows[i]["PropertyName"];
                view.Rows[row].Cells["oldname"].Value = table.Rows[i]["PropertyName"];
                view.Rows[row].Cells[1].Value         = table.Rows[i]["DataType"];
                view.Rows[row].Cells[2].Value         = "";
                view.Rows[row].Cells[3].Value         = "";
                if (table.Rows[i]["DataType"].ToString() == "列表")
                {
                    view.Rows[row].Cells[2].Value = table.Rows[i]["AllowUnSelect"].ToString() == "1" ? "允许" : "不允许";
                    view.Rows[row].Cells[3].Value = table.Rows[i]["AllowInput"].ToString() == "1" ? "允许" : "不允许";
                }
                view.Rows[row].Cells[6].Value          = table.Rows[i]["AllowVisible"].ToString() == "1" ? "允许" : "不允许";
                view.Rows[row].Cells[4].Value          = table.Rows[i]["List"];
                view.Rows[row].Cells["isnewrow"].Value = "0";
            }
            btnOk.Enabled   = true;
            button4.Enabled = true;
        }
Пример #2
0
        public SetTypeForm(decimal mapid)
        {
            InitializeComponent();

            //DataTable roottable = MapDBClass.GetLayerInformation(mapid);
            //查询影像图结构
            //PhotoList = MapDBClass.GetPhotoList();
            ParentChildTable = MapDBClass.GetLayerInformation(mapid);
            treeView1.Nodes.Clear();
            //if (roottable != null && roottable.Rows.Count == 1)
            //{
            TreeNode rootnode = new TreeNode("基础图层")
            {
                Tag = "0"
            };

            treeView1.Nodes.Add(rootnode);
            AddNode(rootnode);
            treeView1.SelectedNode = rootnode;

            TreeNode rootnode1 = new TreeNode("数据图层")
            {
                Tag = "4"
            };

            treeView1.Nodes.Add(rootnode1);
            AddNode(rootnode1);
            init();//gridview绑定值
        }
Пример #3
0
        /// <summary>
        /// 删除元素
        /// </summary>
        /// <param name="map"></param>
        /// <param name="tree"></param>
        /// <param name="cmd"></param>
        private void DeleteObject(MapImage map, MyTree tree, string[] cmd)
        {
            if (cmd.Length != 4)
            {
                return;
            }
            decimal  layerid    = GetId(cmd[2]);
            decimal  objectid   = GetId(cmd[3]);
            TreeNode layernode  = FindLayer(tree.Nodes[0], layerid);
            TreeNode objectnode = FindObject(layernode, layerid, objectid);

            if (objectnode == null)
            {
                return;
            }
            //取得当前图层
            VectorLayer layer = layernode.Tag as VectorLayer;

            //如果有当前选择区域,则从图层中删除
            if (map.NeedSave && layer.NeedSave)
            {
                MapDBClass.DeleteObject(map.Map.MapId, layerid, objectid, layer.Type);
            }
            ((GeometryProvider)layer.DataSource).Geometries.Remove(objectnode.Tag as Geometry);
            tree.Nodes.Remove(objectnode);
        }
Пример #4
0
 /// <summary>
 /// 保存按钮
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void button2_Click(object sender, EventArgs e)
 {
     if (DateList.Text == "")
     {
         MessageBox.Show("请设置日期。");
         DateList.Focus();
         return;
     }
     for (int index = 0; index < tabControl1.TabPages.Count; index++)
     {
         if (tabControl1.TabPages[index].Tag != null)
         {
             MemoryStream stream = new MemoryStream();
             PictureBox   pic    = tabControl1.TabPages[index].Controls[1] as PictureBox;
             TextBox      box    = tabControl1.TabPages[index].Controls[0] as TextBox;
             pic.Image.Save(stream, ImageFormat.Jpeg);
             stream.Flush();
             MapDBClass.SavePicture(_MapId, _LayerId, _ObjectId, DateList.Text, index + 1, stream.GetBuffer(), box.Text);
             stream.Close();
             stream.Dispose();
             stream = null;
             tabControl1.TabPages[index].Tag = null;
         }
         else
         {
             TextBox box = tabControl1.TabPages[index].Controls[0] as TextBox;
             MapDBClass.UpdatePictureComment(_MapId, _LayerId, _ObjectId, DateList.Text, index + 1, box.Text);
         }
     }
 }
Пример #5
0
        private void Save()
        {
            List <Hashtable> list = new List <Hashtable>();

            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                if (GetValue(dataGridView1, i, 0).Trim() == "")
                {
                    MessageBox.Show("有属性名称没有设定,请重新设定属性名称。");
                    return;
                }
                Hashtable data = new Hashtable();
                data.Add("fieldname", GetValue(dataGridView1, i, 0));
                data.Add("oldfieldname", GetValue(dataGridView1, i, "oldname"));
                data.Add("fieldtype", (comboBox1.SelectedIndex + 1).ToString());
                data.Add("datatype", GetValue(dataGridView1, i, 1));
                data.Add("allowunselect", GetValue(dataGridView1, i, 2) == "允许" ? "1" : "0");
                data.Add("allowinput", GetValue(dataGridView1, i, 3) == "允许" ? "1" : "0");
                data.Add("allowvisible", GetValue(dataGridView1, i, 6) == "允许" ? "1" : "0");
                data.Add("inputlist", GetValue(dataGridView1, i, 4));
                list.Add(data);
            }
            MapDBClass.InsertPropertyDefine(list, (comboBox1.SelectedIndex + 1).ToString(), comboBox1.SelectedItem.ToString());

            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                dataGridView1.Rows[i].Cells["isnewrow"].Value = "0";
                dataGridView1.Rows[i].Cells["oldname"].Value  = dataGridView1.Rows[i].Cells["fieldname"].Value;
            }
        }
Пример #6
0
        private void GetObjectInformation()
        {
            DataTable table = MapDBClass.GetObjectById(MapId, LayerId, ObjectId);

            if (table != null && table.Rows.Count > 0)
            {
                byte[]   data     = (byte[])table.Rows[0]["ObjectData"];
                Geometry geometry = (Geometry)Common.DeserializeObject(data);
                Caption = ObjectName;// geometry.Text;
                if (Caption == null)
                {
                    Caption = "";
                }
                Message = geometry.Message;
                if (Message == null)
                {
                    Message = "";
                }
                tabControl1.TabPages.Clear();
                List <Image> images = MapDBClass.GetPicures(MapId, LayerId, ObjectId);
                _Images = images;
                for (int i = 0; i < images.Count; i++)
                {
                    int index = i + 1;
                    tabControl1.TabPages.Add(index.ToString(), index.ToString());
                    PictureBox pic = new PictureBox();
                    pic.Image    = images[i];
                    pic.SizeMode = PictureBoxSizeMode.Zoom;
                    pic.Click   += new EventHandler(pic_Click);
                    pic.Cursor   = Cursors.Hand;
                    tabControl1.TabPages[i].Controls.Add(pic);
                    pic.Dock = DockStyle.Fill;
                }
                if (images == null || images.Count <= 0)
                {
                    tabControl1.Visible = false;
                }
                else
                {
                    tabControl1.Visible = true;
                    //tabControl1.Location = new System.Drawing.Point(10, this.Height-100);
                }
            }
            try
            {
                List <SqlParameter> param = new List <SqlParameter>();
                param.Add(new SqlParameter("MapId", MapId));
                param.Add(new SqlParameter("LayerId", LayerId));
                param.Add(new SqlParameter("ObjectId", ObjectId));
                table = SqlHelper.Select(SqlHelper.GetSql("SelectProjectByObject"), param);
                btnProjectArea.Visible      = table != null && table.Rows.Count > 0;
                btnProjectAreaPrice.Visible = btnProjectArea.Visible;
            }
            catch (Exception ex)
            {
                Common.ShowError(ex);
            }
        }
Пример #7
0
        /// <summary>
        /// 取得元素上传图片日期列表
        /// </summary>
        /// <returns></returns>
        private List <string> GetDateList()
        {
            List <string> list  = new List <string>();
            DataTable     table = MapDBClass.GetPictureDate(_MapId, _LayerId, _ObjectId);

            for (int i = 0; i < table.Rows.Count; i++)
            {
                list.Add(table.Rows[i][0].ToString());
            }
            return(list);
        }
 /// <summary>
 /// 日期变更时,重新查询
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
     _datatable = MapDBClass.GetProperty(_MapId, _LayerId, _Object.ID, comboBox1.Text.Trim());
     if (_datatable == null)
     {
         return;
     }
     if (_datatable.Rows.Count > 0)
     {
         _UpdateDate = _datatable.Rows[0]["UpdateDate"].ToString();
     }
     else
     {
         _UpdateDate = "";
     }
     if (_datatable.Rows.Count == 0 && checkBox1.Checked)
     {
         if (_Selected)
         {
             return;
         }
         if (!_Selected && comboBox1.Items.Count > 0)
         {
             _datatable = MapDBClass.GetProperty(_MapId, _LayerId, _Object.ID, comboBox1.Items[comboBox1.Items.Count - 1].ToString());
         }
     }
     dataGridView1.Rows.Clear();
     dataGridView1.Columns[0].ReadOnly = true;
     for (int i = 4; i < _datatable.Columns.Count; i++)
     {
         string colname = _datatable.Columns[i].ColumnName;
         if (colname.ToLower() == "createdate" || colname.ToLower() == "updatedate")
         {
             continue;
         }
         int row = dataGridView1.Rows.Add();
         dataGridView1.Rows[row].Cells[0].Value = colname;
         if (_datatable.Rows.Count > 0)
         {
             _Selected = true;
             dataGridView1.Rows[row].Cells[1].Value = _datatable.Rows[0][i];
         }
         int findrow = FindDefineRow(colname);
         if (findrow >= 0)
         {
             dataGridView1.Rows[row].Cells[2].Value = _table.Rows[findrow]["DataType"];
             dataGridView1.Rows[row].Cells[3].Value = _table.Rows[findrow]["AllowUnSelect"];
             dataGridView1.Rows[row].Cells[4].Value = _table.Rows[findrow]["AllowInput"];
             dataGridView1.Rows[row].Cells[5].Value = _table.Rows[findrow]["List"];
             dataGridView1.Rows[row].Visible        = _table.Rows[findrow]["AllowVisible"] != null && _table.Rows[findrow]["AllowVisible"].ToString() == "1";
         }
     }
 }
Пример #9
0
        /// <summary>
        /// 图片删除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDelete_Click(object sender, EventArgs e)
        {
            int index = tabControl1.SelectedIndex + 1;

            MapDBClass.DeletePicture(_MapId, _LayerId, _ObjectId, DateList.Text, index);
            tabControl1.TabPages.RemoveAt(tabControl1.SelectedIndex);
            index = 1;
            foreach (TabPage page in tabControl1.TabPages)
            {
                page.Text = index.ToString();
                index++;
            }
        }
Пример #10
0
        /// <summary>
        /// 保存处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOk_Click(object sender, EventArgs e)
        {
            List <Hashtable> data = new List <Hashtable>();
            int  index            = 0;
            bool change           = _datatable.Rows.Count != dataGridView1.RowCount - 1;

            if (!change)
            {
                for (int i = 0; i < dataGridView1.RowCount - 1; i++)
                {
                    for (int j = 0; j < 3; j++)
                    {
                        if (GetValue(dataGridView1, i, j) != _datatable.Rows[i][j].ToString())
                        {
                            change = true;
                            break;
                        }
                    }
                }
            }
            if (!change)
            {
                return;
            }
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                if (dataGridView1.Rows[i].Cells["SaleDate"].Value != null)
                {
                    string    sdate      = dataGridView1.Rows[i].Cells["SaleDate"].Value.ToString();
                    string    saleprice  = dataGridView1.Rows[i].Cells["SalePrice"].Value.ToString();
                    string    price      = dataGridView1.Rows[i].Cells["Price"].Value.ToString();
                    string    updatedate = dataGridView1.Rows[i].Cells["updatedate"].Value.ToString();
                    Hashtable table      = new Hashtable();
                    table.Add("SaleDate", sdate);
                    table.Add("SalePrice", saleprice);
                    table.Add("Price", price);
                    table.Add("No", index);
                    table.Add("Updatedate", updatedate);
                    data.Add(table);
                    index++;
                }
            }
            //保存价格数据
            MapDBClass.UpdateSalePrice(_MapId, _LayerId, _ObjectId, data);
            Initial(_MapId, _LayerId, _ObjectId);
        }
Пример #11
0
 private void btnDelete_Click(object sender, EventArgs e)
 {
     if (dataGridView1.RowCount <= 0 || dataGridView1.SelectedRows.Count <= 0)
     {
         return;
     }
     if (!OpenTempMap)
     {
         if (MessageBox.Show("确定要删除选定的地图吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
         {
             decimal mapid = (decimal)dataGridView1.SelectedRows[0].Cells["mapid"].Value;
             MapDBClass.DeleteMap(mapid);
             dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
         }
     }
     button1.Enabled = dataGridView1.RowCount > 0;
 }
        /// <summary>
        /// 初始化日期下拉列表
        /// </summary>
        private void SetDateList()
        {
            comboBox1.Items.Clear();
            DataTable table = MapDBClass.GetPropertyDateList(_MapId, _LayerId, _Object.ID);

            for (int i = 0; i < table.Rows.Count; i++)
            {
                comboBox1.Items.Add(table.Rows[i][0].ToString());
            }
            if (comboBox1.Items.Count > 0)
            {
                comboBox1.SelectedIndex = comboBox1.Items.Count - 1;
            }
            else
            {
                comboBox1_SelectedIndexChanged(null, null);
            }
        }
Пример #13
0
        public MapListForm(bool opentempmap)
        {
            InitializeComponent();
            DialogResult = DialogResult.Cancel;
            OpenTempMap  = opentempmap;
            DataTable table;

            if (opentempmap)
            {
                this.Text = "选择要恢复的地图";
                table     = MapDBClass.GetTempMapList();
            }
            else
            {
                table = MapDBClass.GetMapList();
            }
            dataGridView1.DataSource = table;
            btnDelete.Enabled        = table.Rows.Count > 0;
            button1.Enabled          = table.Rows.Count > 0;
        }
        public SetParentChildForm(decimal mapid)
        {
            InitializeComponent();

            DataTable roottable = MapDBClass.GetTifInformation(mapid);

            //查询影像图结构
            PhotoList        = MapDBClass.GetPhotoList();
            ParentChildTable = MapDBClass.GetChildList();
            treeView1.Nodes.Clear();
            if (roottable != null && roottable.Rows.Count == 1)
            {
                TreeNode rootnode = new TreeNode(roottable.Rows[0]["Name"].ToString())
                {
                    Tag = roottable.Rows[0]["PhotoId"]
                };
                treeView1.Nodes.Add(rootnode);
                AddNode(rootnode);
                treeView1.SelectedNode = rootnode;
            }
        }
Пример #15
0
        /// <summary>
        /// 添加元素
        /// </summary>
        /// <param name="map"></param>
        /// <param name="tree"></param>
        /// <param name="cmd"></param>
        private void AddObject(MapImage map, MyTree tree, string[] cmd)
        {
            if (cmd.Length != 4)
            {
                return;
            }
            decimal  mapid     = GetId(cmd[1]);
            decimal  layerid   = GetId(cmd[2]);
            decimal  objectid  = GetId(cmd[3]);
            TreeNode layerNode = FindLayer(tree.Nodes[0], layerid);

            if (layerNode == null)
            {
                return;
            }
            if (!(layerNode.Tag is VectorLayer))
            {
                return;
            }
            VectorLayer layer = layerNode.Tag as VectorLayer;

            if (!(layer.DataSource is GeometryProvider))
            {
                return;
            }
            GeometryProvider      provider   = layer.DataSource as GeometryProvider;
            Collection <Geometry> geometries = provider.Geometries as Collection <Geometry>;
            //取得元素信息
            DataTable objecttable = MapDBClass.GetObjectById(mapid, layerid, objectid);

            for (int j = 0; j < objecttable.Rows.Count; j++)
            {
                byte[]   data     = (byte[])objecttable.Rows[j]["ObjectData"];
                Geometry geometry = (Geometry)Common.DeserializeObject(data);
                geometry.ID     = objectid;
                geometry.Select = false;
                geometries.Add(geometry);
                AddGeometryToTree(layerNode, geometry, geometry.Text);
            }
        }
Пример #16
0
        /// <summary>
        /// 根据选择的日期索引,从数据库中取得图片
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        private void GetImage(string date)
        {
            List <string> comment = new List <string>();
            List <Image>  imgs    = MapDBClass.GetPicure(_MapId, _LayerId, _ObjectId, date, comment);

            tabControl1.TabPages.Clear();
            int index = 0;

            foreach (Image img in imgs)
            {
                index++;
                TextBox box = new TextBox();
                box.Text       = comment[index - 1];
                box.Multiline  = true;
                box.WordWrap   = false;
                box.ScrollBars = ScrollBars.Both;
                box.Anchor     = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right;
                PictureBox pic = new PictureBox();
                pic.Anchor   = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom;
                pic.Image    = img;
                pic.SizeMode = PictureBoxSizeMode.Zoom;
                TabPage page = new TabPage(index.ToString());
                tabControl1.TabPages.Add(page);
                page.Controls.Add(box);
                page.Controls.Add(pic);
                box.Left   = 0;
                box.Top    = 0;
                box.Width  = page.Width;
                box.Height = 50;
                pic.Left   = 0;
                pic.Top    = 55;
                pic.Width  = page.Width;
                pic.Height = page.Height - pic.Top;
                pic.Refresh();
            }
            btnDelete.Enabled = tabControl1.TabPages.Count > 0 && EditLayer == GetCurrentLayer();
            button4.Enabled   = GetCurrentLayer() == _EditLayer;
            button2.Enabled   = button4.Enabled;
        }
Пример #17
0
        /// <summary>
        /// 保存元素到数据库
        /// </summary>
        /// <param name="geometry"></param>
        public static void AddObjectIntoDB(decimal mapid, decimal layerid, Geometry geometry)
        {
            decimal id = MapDBClass.GetObjectId(mapid, layerid);

            if (geometry is Polygon)
            {
                ((Polygon)geometry).ID = id;
            }
            else if (geometry is EasyMap.Geometries.Point)
            {
                ((EasyMap.Geometries.Point)geometry).ID = id;
            }
            else if (geometry is MultiPolygon)
            {
                ((MultiPolygon)geometry).ID = id;
            }
            else if (geometry is MultiPoint)
            {
                ((MultiPoint)geometry).ID = id;
            }
            else if (geometry is MultiLineString)
            {
                ((MultiLineString)geometry).ID = id;
            }
            else if (geometry is LineString)
            {
                ((LineString)geometry).ID = id;
            }
            else if (geometry is LinearRing)
            {
                ((LinearRing)geometry).ID = id;
            }
            else
            {
                return;
            }
            MapDBClass.InsertObject(mapid, layerid, geometry);
        }
Пример #18
0
        /// <summary>
        /// 删除图层
        /// </summary>
        /// <param name="map"></param>
        /// <param name="tree"></param>
        /// <param name="cmd"></param>
        private void DeleteLayer(MapImage map, MyTree tree, string[] cmd)
        {
            if (cmd.Length != 3)
            {
                return;
            }
            decimal  layerid   = GetId(cmd[2]);
            TreeNode layernode = FindLayer(tree.Nodes[0], layerid);

            if (layernode == null)
            {
                return;
            }
            //取得当前图层
            VectorLayer layer = layernode.Tag as VectorLayer;

            if (map.NeedSave && layer.NeedSave)
            {
                MapDBClass.DeleteLayer(map.Map.MapId, layer.ID);
            }
            //删除选择的图层
            map.Map.Layers.Remove(layer);
            TreeNode parentnode = layernode.Parent;

            //删除选择的节点
            tree.Nodes.Remove(layernode);
            if (parentnode.Nodes.Count <= 0)
            {
                parentnode.Remove();
            }
            foreach (TreeNode node in tree.Nodes[0].Nodes)
            {
                if (node.Nodes.Count <= 0)
                {
                    node.Remove();
                }
            }
        }
Пример #19
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Trim() == "")
            {
                MessageBox.Show("请输入地图名称。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            DataTable table = MapDBClass.GetMapList();

            for (int i = 0; i < table.Rows.Count; i++)
            {
                if (table.Rows[i]["MapName"].ToString() == textBox1.Text.Trim())
                {
                    MessageBox.Show("地图名称重复,请重新输入。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    textBox1.SelectAll();
                    textBox1.Focus();
                    return;
                }
            }
            MapName    = textBox1.Text;
            MapComment = textBox2.Text;
            Result     = DialogResult.OK;
            Close();
        }
Пример #20
0
 public void set(string txt)
 {
     try
     {
         List <SqlParameter> param = new List <SqlParameter>();
         string tableName          = "t_" + _Map.MapId + "_" + _Map.Layers["土地宗地图层"].ID;
         string sql = "select t1.ObjectData from t_object t1 left join " + tableName + " t2 on t1.ObjectId = t2.ObjectId and t1.LayerId = t2.LayerId and t1.MapId = t2.MapId where t2.flag =@flag";
         //param.Add(new SqlParameter("table1", tableName));
         param.Add(new SqlParameter("flag", txt));
         DataTable      table = SqlHelper.Select(sql, param);
         LayerStyleForm form  = new LayerStyleForm();
         if (form.ShowDialog() == DialogResult.OK)
         {
             foreach (DataRow row in table.Rows)
             {
                 byte[]   data = (byte[])row["ObjectData"];
                 Geometry geom = (Geometry)Common.DeserializeObject(data);
                 geom.Fill          = form.FillBrush.Color.ToArgb();
                 geom.Outline       = form.OutLinePen.Color.ToArgb();
                 geom.OutlineWidth  = (int)form.OutLinePen.Width;
                 geom.TextColor     = form.TextColor;
                 geom.TextFont      = form.TextFont;
                 geom.EnableOutline = form.EnableOutline;
                 geom.HatchStyle    = form.HatchStyle;
                 geom.Line          = form.LinePen.Color.ToArgb();
                 geom.DashStyle     = (int)form.LinePen.DashStyle;
                 geom.StyleType     = 1;
                 geom.Penstyle      = form.Penstyle;
                 MapDBClass.UpdateObject(_Map.MapId, geom);
             }
         }
     }
     catch (Exception ex) {
         MessageBox.Show(ex.ToString());
     }
 }
Пример #21
0
 /// <summary>
 /// 初始化
 /// </summary>
 /// <param name="mapid"></param>
 /// <param name="layerid"></param>
 /// <param name="objectid"></param>
 public void Initial(decimal mapid, decimal layerid, decimal objectid)
 {
     _MapId     = mapid;
     _LayerId   = layerid;
     _ObjectId  = objectid;
     _datatable = MapDBClass.GetSalePrice(mapid, layerid, objectid);
     for (int i = _datatable.Columns.Count - 1; i >= 0; i--)
     {
         bool find = false;
         for (int j = 0; j < dataGridView1.ColumnCount; j++)
         {
             if (dataGridView1.Columns[j].DataPropertyName == _datatable.Columns[i].ColumnName)
             {
                 find = true;
                 break;
             }
         }
         if (!find)
         {
             _datatable.Columns.RemoveAt(i);
         }
     }
     SetData(_datatable);
 }
        /// <summary>
        /// 保存处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOk_Click(object sender, EventArgs e)
        {
            if (_Object.Text != textBox1.Text.Trim() || _Object.Message != txtMessage.Text.Trim())
            {
                _Object.Text    = textBox1.Text.Trim();
                _Object.Message = txtMessage.Text.Trim();
                if (AfterSave != null)
                {
                    AfterSave(_Object);
                }
            }
            if (comboBox1.Text == "")
            {
                MessageBox.Show("请设置日期。");
                comboBox1.Focus();
                return;
            }
            //保存属性列表
            List <PropertyData> properties = new List <PropertyData>();
            DataGridView        view       = dataGridView1;
            bool change = false;

            if (_datatable.Rows.Count > 0)
            {
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    string colname = dataGridView1.Rows[i].Cells[0].Value.ToString();
                    if (_datatable.Rows[0][colname].ToString() != GetValue(view, i, 1))
                    {
                        change = true;
                        break;
                    }
                }
            }
            else
            {
                change = true;
            }
            if (!change)
            {
                return;
            }
            if (change)
            {
                string type = "0";
                //如果是保存交易信息
                //循环设置保存属性列表
                for (int i = 0; i < view.Rows.Count; i++)
                {
                    if (view.Rows[i].Cells[0].Value != null)
                    {
                        PropertyData data = new PropertyData();
                        if (view.Rows[i].Cells[1].Value != null)
                        {
                            data.Data = view.Rows[i].Cells[1].Value.ToString();
                        }
                        data.PropertyName = view.Rows[i].Cells[0].Value.ToString();
                        properties.Add(data);
                    }
                }
                //保存属性
                MapDBClass.SaveProperty(_MapId, _LayerId, _Object.ID, comboBox1.Text.Trim(), properties, _UpdateDate);
            }
            bool find = false;

            for (int i = 0; i < comboBox1.Items.Count; i++)
            {
                if (comboBox1.Items[i].ToString() == comboBox1.Text.Trim())
                {
                    find = true;
                    break;
                }
            }
            if (!find)
            {
                comboBox1.Items.Add(comboBox1.Text.Trim());
            }
            comboBox1_SelectedIndexChanged(null, null);
        }
Пример #23
0
        /// <summary>
        /// 添加图层
        /// </summary>
        /// <param name="map"></param>
        /// <param name="tree"></param>
        /// <param name="cmd"></param>
        private void AddLayer(MapImage map, MyTree tree, string[] cmd)
        {
            if (cmd.Length != 3)
            {
                return;
            }
            decimal mapid   = GetId(cmd[1]);
            decimal layerid = GetId(cmd[2]);
            //取得图层信息
            DataTable layertable = MapDBClass.GetLayerinfo(mapid, layerid);

            if (layertable == null || layertable.Rows.Count <= 0)
            {
                return;
            }
            string layername = layertable.Rows[0]["LayerName"].ToString();
            int    type      = 0;

            Int32.TryParse(layertable.Rows[0]["LayerType"].ToString(), out type);
            VectorLayer layer = new VectorLayer(layername, (VectorLayer.LayerType)type);

            layer.ID = layerid;
            layer.Style.EnableOutline = layertable.Rows[0]["EnableOutline"].ToString() == "1" ? true : false;
            layer.Style.Fill          = new SolidBrush(Color.FromArgb((int)layertable.Rows[0]["Fill"]));
            layer.Style.Line          = new Pen(Color.FromArgb((int)layertable.Rows[0]["Line"]), (int)layertable.Rows[0]["LineWidth"]);
            layer.Style.Outline       = new Pen(Color.FromArgb((int)layertable.Rows[0]["Outline"]), (int)layertable.Rows[0]["OutlineWidth"]);
            Collection <Geometry> geometries = new Collection <Geometry>();
            GeometryProvider      provider   = new GeometryProvider(geometries);

            layer.DataSource = provider;
            TreeNode node = new TreeNode(layername);

            node.Tag     = layer;
            node.Checked = true;
            if (SetLayerStyle != null)
            {
                SetLayerStyle(layer, layer.Style.Fill, layer.Style.Line, layer.Style.Outline, layer.Style.EnableOutline, node);
            }
            string layertext = "";

            switch (layer.Type)
            {
            case VectorLayer.LayerType.BaseLayer:
                layertext = Resources.BaseLayer;
                break;

            case VectorLayer.LayerType.PhotoLayer:
                layertext = Resources.PhotoLayer;
                break;

            case VectorLayer.LayerType.ReportLayer:
                layertext = Resources.ReportLayer;
                break;

            case VectorLayer.LayerType.MotionLayer:
                layertext = Resources.MotionPointLayer;
                break;

            case VectorLayer.LayerType.SaleLayer:
                layertext = Resources.SaleLayer;
                break;

            case VectorLayer.LayerType.AreaInformation:
                layertext = Resources.AreaInfoLayer;
                break;

            case VectorLayer.LayerType.Pricelayer:
                layertext = Resources.PriceLayer;
                break;

            case VectorLayer.LayerType.HireLayer:
                layertext = Resources.RentLayer;
                break;

            case VectorLayer.LayerType.OtherLayer:
                layertext = Resources.OtherLayer;
                break;
            }
            TreeNode mainnode = new TreeNode(layertext);

            mainnode.Checked = true;
            TreeNode findnode = FindNode(tree, layertext);

            if (findnode != null)
            {
                mainnode = findnode;
            }
            else if (layertext == Resources.BaseLayer)
            {
                if (tree.Nodes[0].Nodes.Count > 0)
                {
                    if (tree.Nodes[0].Nodes[0].Text == Resources.PhotoLayer)
                    {
                        tree.Nodes[0].Nodes.Insert(1, mainnode);
                    }
                    else
                    {
                        tree.Nodes[0].Nodes.Insert(0, mainnode);
                    }
                }
                else
                {
                    tree.Nodes[0].Nodes.Add(mainnode);
                }
            }
            else
            {
                findnode = FindNode(tree, Resources.DataLayer);
                if (findnode == null)
                {
                    findnode = new TreeNode(Resources.DataLayer);
                    tree.Nodes[0].Nodes.Add(findnode);
                }
                findnode.Nodes.Add(mainnode);
            }


            mainnode.Nodes.Add(node);
            map.Map.AddLayer(layer);
            //取得元素信息
            DataTable objecttable = MapDBClass.GetObject(mapid, layerid);

            for (int j = 0; j < objecttable.Rows.Count; j++)
            {
                decimal  objectid = (decimal)objecttable.Rows[j]["ObjectId"];
                byte[]   data     = (byte[])objecttable.Rows[j]["ObjectData"];
                Geometry geometry = (Geometry)Common.DeserializeObject(data);
                geometry.ID     = objectid;
                geometry.Select = false;
                geometries.Add(geometry);
                AddGeometryToTree(node, geometry, geometry.Text);
            }
        }
Пример #24
0
        private void btnSelect_Click(object sender, EventArgs e)
        {
            dataGridView2.Rows.Clear();
            btnSelect.Checked                  = true;
            btnAll.Checked                     = false;
            全部显示ToolStripMenuItem.Checked      = false;
            仅显示选中元素数据ToolStripMenuItem.Checked = true;
            ILayer layer = GetCurrentLayer();

            if (layer is VectorLayer)
            {
                VectorLayer      vlayer     = layer as VectorLayer;
                GeometryProvider datasource = vlayer.DataSource as GeometryProvider;
                string           id         = "";
                foreach (Geometry geom in _SelectObjects)
                {
                    if (datasource.Geometries.Contains(geom))
                    {
                        id += geom.ID + ",";
                    }
                }

                //dataGridView1.Rows.Clear();
                dataGridView1.Columns.Clear();
                _PropertyType.Clear();
                _PropertyName.Clear();
                DataGridViewComboBoxColumn col = dataGridView2.Columns[0] as DataGridViewComboBoxColumn;
                col.Items.Clear();
                decimal layerid = GetCurrentLayerId();
                if (layerid < 0)
                {
                    dataGridView1_CurrentCellChanged(null, null);
                    return;
                }
                //取得真实属性表字段
                string    sql   = "select * from " + MapDBClass.GetPropertyTableName(MapId, layerid) + " where 1<>1";
                DataTable table = SqlHelper.Select(sql, null);
                for (int i = 4; i < table.Columns.Count; i++)
                {
                    string colname = table.Columns[i].ColumnName.ToLower();
                    string stype   = table.Columns[i].DataType.Name;
                    colname = table.Columns[i].ColumnName;
                    col.Items.Add(colname);
                    _PropertyType.Add(colname, stype);
                    _PropertyName.Add(colname);
                }
                col.Items.Add("日期");
                _PropertyType.Add("日期", "日期");
                dataGridView2.Rows.Clear();

                //取得条件
                string where = CreateWhere();
                //取得检索字段
                string select = CreateSelect(0);
                //取得表名
                string tablename = GetTableName();
                sql = select + "\r\n from \r\n" + tablename + where;
                if (id != "")
                {
                    sql += " and ObjectId in (" + id.Substring(0, id.Length - 1) + ")";
                }
                //查询
                table = SqlHelper.Select(sql, null);
                dataGridView1.DataSource = table;
            }
            dataGridView1_CurrentCellChanged(sender, e);
        }
Пример #25
0
        private DataTable Search()
        {
            //dataGridView1.Rows.Clear();
            dataGridView1.Columns.Clear();
            _PropertyType.Clear();
            _PropertyName.Clear();
            //dataGridView1.DataSource = null;
            DataGridViewComboBoxColumn col = dataGridView2.Columns[0] as DataGridViewComboBoxColumn;
            decimal layerid = GetCurrentLayerId();

            if (layerid < 0)
            {
                dataGridView1_CurrentCellChanged(null, null);
                return(null);
            }
            List <List <string> > list = new List <List <string> >();

            for (int i = 0; i < dataGridView2.RowCount; i++)
            {
                bool flag = true;
                for (int j = 0; j < 3; j++)
                {
                    if (dataGridView2.GetGridValue(i, j).ToString().Trim() == "")
                    {
                        flag = false;
                        break;
                    }
                }
                if (flag)
                {
                    List <string> templist = new List <string>();
                    for (int j = 0; j < 4; j++)
                    {
                        templist.Add(dataGridView2.GetGridValue(i, j).ToString().Trim());
                    }
                    list.Add(templist);
                }
            }
            dataGridView2.Rows.Clear();
            col.Items.Clear();
            //取得真实属性表字段
            string    sql   = "select * from " + MapDBClass.GetPropertyTableName(MapId, layerid) + " where 1<>1";
            DataTable table = SqlHelper.Select(sql, null);

            for (int i = 4; i < table.Columns.Count; i++)
            {
                string colname = table.Columns[i].ColumnName.ToLower();
                string stype   = table.Columns[i].DataType.Name;
                colname = table.Columns[i].ColumnName;
                col.Items.Add(colname);
                _PropertyType.Add(colname, stype);
                _PropertyName.Add(colname);
            }
            col.Items.Add("日期");
            _PropertyType.Add("日期", "日期");
            foreach (List <string> templist in list)
            {
                int row = dataGridView2.Rows.Add();
                for (int j = 0; j < 4; j++)
                {
                    dataGridView2.Rows[row].Cells[j].Value = templist[j];
                }
            }

            //取得条件
            string where = CreateWhere();
            //取得检索字段
            string select = CreateSelect(0);
            //取得表名
            string tablename = GetTableName();

            sql = select + "\r\n from \r\n" + tablename + where;
            //查询
            table = SqlHelper.Select(sql, null);
            return(table);
        }
Пример #26
0
 /// <summary>
 /// 根据图层类型,取得该查询哪一个表的表名
 /// </summary>
 /// <returns></returns>
 private string GetTableName()
 {
     return(MapDBClass.GetPropertyTableName(MapId, GetCurrentLayerId()));
 }
Пример #27
0
        /// <summary>
        /// 影像图树初始化
        /// </summary>
        public static void Initial()
        {
            //查询影像图结构
            DataTable table = MapDBClass.GetPhotoParentChildList();

            //循环向树中添加节点
            for (int i = 0; table != null && i < table.Rows.Count; i++)
            {
                //取得父区域名称
                string parentName = (string)table.Rows[i]["ParentName"];
                //取得子区域名称
                string childName = (string)table.Rows[i]["ChildName"];
                //查询父节点
                TreeNode node = FindNode(_PhotoRoot, parentName);
                //如果父区域不存在,则增加父节点
                if (node == null)
                {
                    node = new TreeNode(parentName);
                    for (int j = 0; j < table.Rows.Count; j++)
                    {
                        //取得父区域名称
                        string parentName1 = (string)table.Rows[j]["ParentName"];
                        if (parentName == parentName1)
                        {
                            //取得子区域名称
                            string   childName1 = (string)table.Rows[j]["ChildName"];
                            TreeNode subnode1   = FindNode(_PhotoRoot, childName1);
                            if (subnode1 != null)
                            {
                                subnode1.Parent.Nodes.Remove(subnode1);
                                node.Nodes.Add(subnode1);
                            }
                        }
                    }
                    _PhotoRoot.Nodes.Add(node);
                    continue;
                }
                //增加子节点
                TreeNode subnode = new TreeNode(childName);
                node.Nodes.Add(subnode);
            }
            //取得区域范围数据
            table = MapDBClass.GetPhotoList();
            //循环更新区域范围数据到影像图树中
            for (int i = 0; table != null && i < table.Rows.Count; i++)
            {
                PhotoData data = new PhotoData();
                data.PhotoId    = (int)table.Rows[i]["PhotoId"];
                data.Name       = (string)table.Rows[i]["Name"];
                data.FileName   = (string)table.Rows[i]["FileName"];
                data.MinX       = (double)table.Rows[i]["MinX"];
                data.MinY       = (double)table.Rows[i]["MinY"];
                data.MaxX       = (double)table.Rows[i]["MaxX"];
                data.MaxY       = (double)table.Rows[i]["MaxY"];
                data.Transform1 = (double)table.Rows[i]["Transform1"];
                data.Transform2 = (double)table.Rows[i]["Transform2"];
                data.Transform3 = (double)table.Rows[i]["Transform3"];
                data.Transform4 = (double)table.Rows[i]["Transform4"];
                data.Transform5 = (double)table.Rows[i]["Transform5"];
                data.Transform6 = (double)table.Rows[i]["Transform6"];
                data.Width      = (int)table.Rows[i]["Width"];
                data.Height     = (int)table.Rows[i]["Height"];
                TreeNode node = FindNode(_PhotoRoot, data.Name);
                if (node == null)
                {
                    continue;
                }
                node.Tag = data;
                SetParentData(node);
            }
            SetTreeNodeBoundingBox(_PhotoRoot);
        }
Пример #28
0
        public static BoundingBox GetCenterPhotoData(int currentlevel, int level)
        {
            EasyMap.Geometries.Point center = Map.Center;
            int       rootlevel             = level / 4 + 1;
            TreeNode  node  = _PhotoRoot;
            DataTable table = MapDBClass.GetCenterTifInformation(center.X, center.Y);
            bool      find  = false;
            PhotoData data  = new PhotoData();

            for (int i = 0; i < table.Rows.Count; i++)
            {
                string name = table.Rows[i]["Name"] as string;
                node = FindNode(_PhotoRoot, name);
                PhotoData tempdata = null;
                if (node != null)
                {
                    if (node.Parent != null)
                    {
                        tempdata = node.Parent.Tag as PhotoData;
                    }
                }
                if (node != null && (node.Level == rootlevel || (tempdata != null && (tempdata.FileName == "" || tempdata.FileName == null) && node.Level - 1 == rootlevel)))
                {
                    data.PhotoId    = (int)table.Rows[i]["PhotoId"];
                    data.Name       = (string)table.Rows[i]["Name"];
                    data.FileName   = (string)table.Rows[i]["FileName"];
                    data.MinX       = (double)table.Rows[i]["MinX"];
                    data.MinY       = (double)table.Rows[i]["MinY"];
                    data.MaxX       = (double)table.Rows[i]["MaxX"];
                    data.MaxY       = (double)table.Rows[i]["MaxY"];
                    data.Transform1 = (double)table.Rows[i]["Transform1"];
                    data.Transform2 = (double)table.Rows[i]["Transform2"];
                    data.Transform3 = (double)table.Rows[i]["Transform3"];
                    data.Transform4 = (double)table.Rows[i]["Transform4"];
                    data.Transform5 = (double)table.Rows[i]["Transform5"];
                    data.Transform6 = (double)table.Rows[i]["Transform6"];
                    data.Width      = (int)table.Rows[i]["Width"];
                    data.Height     = (int)table.Rows[i]["Height"];
                    find            = true;
                    break;
                }
            }
            if (!find)
            {
                return(Map.Envelope);
            }
            int step = -100;

            if (currentlevel < level)
            {
                step = -100;
            }
            int overviewlevel = 0;
            int overviewzoom  = 0;

            find = false;
            BoundingBox box = Map.Envelope;

            box = new BoundingBox(box.Min.X, box.Min.Y, box.Max.X, box.Max.Y);

            if (currentlevel < level)
            {
                while (overviewlevel != (4 - level % 4) && box.Min.X < box.Max.X && box.Min.Y < box.Max.Y)
                {
                    box.Min.X -= step;
                    box.Min.Y -= step;
                    box.Max.X += step;
                    box.Max.Y += step;

                    find = SetOverView(data, out overviewlevel, out overviewzoom);
                }
            }
            else
            {
                BoundingBox maxbox = Map.GetExtents();
                while (overviewlevel != (4 - level % 4) && box.Min.X > maxbox.Min.X && box.Min.Y > maxbox.Min.Y && box.Max.X < maxbox.Max.X && box.Max.Y < maxbox.Max.Y)
                {
                    box.Min.X -= step;
                    box.Min.Y -= step;
                    box.Max.X += step;
                    box.Max.Y += step;

                    find = SetOverView(data, out overviewlevel, out overviewzoom);
                }
            }
            return(box);
        }
Пример #29
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            if (e.Button == MouseButtons.Right)
            {
                if (!_DrawEnd)
                {
                    if (MainMapImage.ActiveTool == MapImage.Tools.MeasureArea ||
                        MainMapImage.ActiveTool == MapImage.Tools.DefineArea ||
                        MainMapImage.ActiveTool == MapImage.Tools.SelectPoint ||
                        MainMapImage.ActiveTool == MapImage.Tools.ZoomArea)
                    {
                        if (MainMapImage.ActiveTool == MapImage.Tools.ZoomArea)
                        {
                            this.Visible = false;
                            if (AfterDefineArea != null)
                            {
                                AfterDefineArea(SelectionType, null, _R);
                            }
                            return;
                        }
                        if (marea.ExteriorRing.Vertices.Count > 0)
                        {
                            marea.ExteriorRing.Vertices.RemoveAt(marea.ExteriorRing.Vertices.Count - 1);
                        }
                        else
                        {
                            this.Visible = false;
                            if (AfterDefineArea != null)
                            {
                                AfterDefineArea(SelectionType, null, _R);
                            }
                            return;
                        }
                        if (MainMapImage.ActiveTool == MapImage.Tools.MeasureArea)
                        {
                            if (SetArea != null)
                            {
                                SetArea(marea.Area);
                            }
                        }
                        else if (MainMapImage.ActiveTool == MapImage.Tools.DefineArea ||
                                 MainMapImage.ActiveTool == MapImage.Tools.SelectPoint)
                        {
                            Refresh();

                            Polygon newArea = null;
                            string  text    = null;
                            if (MainMapImage.ActiveTool == MapImage.Tools.DefineArea)
                            {
                                InputStringForm form = new InputStringForm("请输入区域名称:", "");

                                if (form.ShowDialog() == DialogResult.OK)
                                {
                                    //text = form.InputContext;
                                    marea.Text = form.InputContext;
                                }
                                else
                                {
                                    this.Visible = false;
                                    if (AfterDefineArea != null)
                                    {
                                        AfterDefineArea(SelectionType, null, _R);
                                    }
                                    return;
                                }
                                //取得当前图层
                                VectorLayer layer = (VectorLayer)MainMapImage.Map.CurrentLayer;
                                //取得图层数据源
                                GeometryProvider provider = (GeometryProvider)layer.DataSource;
                                //添加当前定义的多边形
                                newArea      = marea.Clone();
                                newArea.Text = marea.Text;
                                newArea.ID   = marea.ID;
                                provider.Geometries.Add(newArea);
                                //强制地图刷新
                                MainMapImage.Refresh();
                            }
                            if (AfterDefineArea != null)
                            {
                                AfterDefineArea(SelectionType, marea, _R);
                            }
                            if (newArea != null)
                            {
                                newArea.ID = marea.ID;
                            }
                            //重新初始化多边形
                            marea        = new Polygon();
                            this.Visible = false;
                        }
                    }

                    else if (MainMapImage.ActiveTool == MapImage.Tools.MeasureLength)
                    {
                        mline.Vertices.RemoveAt(mline.Vertices.Count - 1);
                        //设置测量窗口的信息
                        if (SetLength != null)
                        {
                            SetLength(mline.Length, mline.Length - oldlength);
                        }
                    }
                    Refresh();
                    _DrawEnd = true;
                }
            }
            if (e.Button == MouseButtons.Left)
            {
                if (_DrawEnd)
                {
                    Initial(SelectionType);
                }
                _DrawEnd = false;
                //将图像坐标转化为地图坐标
                EasyMap.Geometries.Point WorldPos = MainMapImage.Map.ImageToWorld(new System.Drawing.Point(e.X, e.Y));
                //保存上一次的长度,以便计算出最后一段直线的长度
                oldlength = mline.Length;
                if (SelectionType == SELECTION_TYPE.CIRCLETEMP)
                {
                    //添加救援点
                    //double radius = 10;
                    //double deltaDegrees = 2;
                    //double deltaRadians = (Math.PI / 180) * deltaDegrees;
                    EasyMap.Geometries.Point marea = new Geometries.Point();
                    marea = new EasyMap.Geometries.Point(WorldPos.X, WorldPos.Y);
                    EasyMap.Geometries.Point newArea = new Geometries.Point();
                    //string text = null;
                    if (MainMapImage.ActiveTool == MapImage.Tools.DefineArea)
                    {
                        InputStringForm form = new InputStringForm("请输入救援力量名称:", "");

                        if (form.ShowDialog() == DialogResult.OK)
                        {
                            //text = form.InputContext;
                            marea.Text = form.InputContext;
                        }
                        else
                        {
                            this.Visible = false;
                            if (AfterDefineArea1 != null)
                            {
                                AfterDefineArea1(SelectionType, null, _R);
                            }
                            return;
                        }
                        //取得当前图层
                        VectorLayer layer = (VectorLayer)MainMapImage.Map.CurrentLayer;
                        //取得图层数据源
                        GeometryProvider provider = (GeometryProvider)layer.DataSource;
                        //添加当前定义的多边形
                        marea.ID     = MapDBClass.GetObjectId(MainMapImage.Map.MapId, layer.ID);
                        newArea      = marea.Clone();
                        newArea.Text = marea.Text;
                        newArea.ID   = marea.ID;
                        provider.Geometries.Add(newArea);

                        //强制地图刷新
                        MainMapImage.Refresh();
                    }

                    if (AfterDefineArea1 != null)
                    {
                        AfterDefineArea1(SelectionType, marea, _R);
                    }
                    //强制地图刷新
                    MainMapImage.Refresh(); newArea.ID = marea.ID;
                    //重新初始化多边形
                    //marea = new Polygon();
                    marea        = new Geometries.Point();
                    this.Visible = false;
                    ////强制地图刷新
                    MainMapImage.Refresh();
                }
                else if (SelectionType == SELECTION_TYPE.PROBLEMPOINT)
                {
                    EasyMap.Geometries.Point marea = new Geometries.Point();
                    marea = new EasyMap.Geometries.Point(WorldPos.X, WorldPos.Y);
                    EasyMap.Geometries.Point newArea = new Geometries.Point();
                    if (MainMapImage.ActiveTool == MapImage.Tools.DefineArea)
                    {
                        InputStringForm form = new InputStringForm("请输入遇难点名称:", "");

                        if (form.ShowDialog() == DialogResult.OK)
                        {
                            //text = form.InputContext;
                            marea.Text = form.InputContext;
                        }
                        else
                        {
                            this.Visible = false;
                            if (AfterDefineArea1 != null)
                            {
                                AfterDefineArea1(SelectionType, null, _R);
                            }
                            return;
                        }
                        //取得当前图层
                        VectorLayer layer = (VectorLayer)MainMapImage.Map.CurrentLayer;
                        //取得图层数据源
                        GeometryProvider provider = (GeometryProvider)layer.DataSource;
                        marea.ID = MapDBClass.GetObjectId(MainMapImage.Map.MapId, layer.ID);
                        //添加当前定义的多边形
                        newArea      = marea.Clone();
                        newArea.Text = marea.Text;
                        newArea.ID   = marea.ID;
                        provider.Geometries.Add(newArea);

                        //强制地图刷新
                        MainMapImage.Refresh();
                    }

                    if (AfterDefineArea1 != null)
                    {
                        AfterDefineArea1(SelectionType, marea, _R);
                    }
                    //强制地图刷新
                    MainMapImage.Refresh();
                    newArea.ID   = marea.ID;
                    marea        = new Geometries.Point();
                    this.Visible = false;
                    ////强制地图刷新
                    MainMapImage.Refresh();
                }
                else if (SelectionType == SELECTION_TYPE.RECTANGLE ||
                         SelectionType == SELECTION_TYPE.CIRCLE)
                {
                    marea.ExteriorRing.Vertices.Add(WorldPos);
                    marea.ExteriorRing.Vertices.Add(new EasyMap.Geometries.Point(WorldPos.X, WorldPos.Y));
                    if (marea.ExteriorRing.Vertices.Count > 2)
                    {
                        _DrawEnd     = true;
                        this.Visible = false;
                        if (SelectionType == SELECTION_TYPE.RECTANGLE)
                        {
                            double x1 = marea.ExteriorRing.Vertices[0].X;
                            double y1 = marea.ExteriorRing.Vertices[0].Y;
                            double x3 = marea.ExteriorRing.Vertices[1].X;
                            double y3 = marea.ExteriorRing.Vertices[1].Y;
                            double x2 = x1;
                            double y2 = y3;
                            double x4 = x3;
                            double y4 = y1;
                            marea.ExteriorRing.Vertices.Clear();
                            marea.ExteriorRing.Vertices.Add(new EasyMap.Geometries.Point(x1, y1));
                            marea.ExteriorRing.Vertices.Add(new EasyMap.Geometries.Point(x2, y2));
                            marea.ExteriorRing.Vertices.Add(new EasyMap.Geometries.Point(x3, y3));
                            marea.ExteriorRing.Vertices.Add(new EasyMap.Geometries.Point(x4, y4));
                        }
                        if (AfterDefineArea != null)
                        {
                            AfterDefineArea(SelectionType, marea, _R);
                        }
                        //Polygon newArea = null;
                        //if (SelectionType == SELECTION_TYPE.CIRCLE)
                        //{
                        //    InputStringForm form = new InputStringForm("请输入区域名称:", "");

                        //    if (form.ShowDialog() == DialogResult.OK)
                        //    {
                        //        //text = form.InputContext;
                        //        marea.Text = form.InputContext;
                        //    }
                        //    else
                        //    {
                        //        this.Visible = false;
                        //        if (AfterDefineArea != null)
                        //        {
                        //            AfterDefineArea(SelectionType, null, _R);
                        //        }
                        //        return;
                        //    }
                        //    //取得当前图层
                        //    VectorLayer layer = (VectorLayer)MainMapImage.Map.CurrentLayer;
                        //    //取得图层数据源
                        //    GeometryProvider provider = (GeometryProvider)layer.DataSource;
                        //    //添加当前定义的多边形
                        //    newArea = marea.Clone();
                        //    newArea.Text = "";
                        //    newArea.ID = marea.ID;
                        //    provider.Geometries.Add(newArea);
                        //    //强制地图刷新
                        //    MainMapImage.Refresh();
                        //}
                        return;
                    }
                }
                else if (SelectionType == SELECTION_TYPE.CIRCLE_RADIO)
                {
                    marea.ExteriorRing.Vertices.Add(WorldPos);
                    XYInputForm form = new XYInputForm();
                    form.txtX.Enabled = false;
                    form.txtY.Enabled = false;
                    form.XX           = marea.ExteriorRing.Vertices[0].X;
                    form.YY           = marea.ExteriorRing.Vertices[0].Y;
                    if (form.ShowDialog() == DialogResult.OK)
                    {
                        marea.ExteriorRing.Vertices.Add(WorldPos);
                        marea.ExteriorRing.Vertices.Add(WorldPos);
                        _R = (float)form.R;
                        if (AfterDefineArea != null)
                        {
                            AfterDefineArea(SelectionType, marea, _R);
                        }
                    }
                    _DrawEnd     = true;
                    this.Visible = false;
                    return;
                }
                //如果是测量长度
                else if (MainMapImage.ActiveTool == MapImage.Tools.MeasureLength)
                {
                    //添加地图坐标
                    mline.Vertices.Add(WorldPos);
                    //如果是第一次添加,那么需要追加一个点,以便在鼠标移动的时候更改这个点
                    if (mline.Vertices.Count < 2)
                    {
                        mline.Vertices.Add(new EasyMap.Geometries.Point(WorldPos.X, WorldPos.Y));
                    }
                }
                //如果是测量面积
                else if (MainMapImage.ActiveTool == MapImage.Tools.MeasureArea ||
                         MainMapImage.ActiveTool == MapImage.Tools.DefineArea ||
                         MainMapImage.ActiveTool == MapImage.Tools.SelectPoint ||
                         MainMapImage.ActiveTool == MapImage.Tools.ZoomArea ||
                         SelectionType == SELECTION_TYPE.POLYGON)
                {
                    if (MainMapImage.ActiveTool == MapImage.Tools.ZoomArea &&
                        marea.ExteriorRing.Vertices.Count == 2)
                    {
                        this.Visible = false;
                        if (AfterDefineArea != null)
                        {
                            AfterDefineArea(SelectionType, marea, _R);
                        }
                        return;
                    }
                    //添加地图坐标
                    marea.ExteriorRing.Vertices.Add(WorldPos);
                    //如果是第一次添加,那么需要追加一个点,以便在鼠标移动的时候更改这个点
                    if (marea.ExteriorRing.Vertices.Count < 2)
                    {
                        marea.ExteriorRing.Vertices.Add(new EasyMap.Geometries.Point(WorldPos.X, WorldPos.Y));
                    }
                }
            }
        }
        private void Search()
        {
            bool allowedit = GetCurrentLayer() != null && GetCurrentLayer() == _EditLayer;

            dataGridView1.ReadOnly = !allowedit;
            btnOk.Enabled          = allowedit;
            txtMessage.ReadOnly    = !allowedit;
            textBox1.ReadOnly      = !allowedit;
            paste.Enabled          = allowedit;

            dataGridView1.Rows.Clear();
            comboBox1.Items.Clear();
            textBox1.Text   = "";
            textBox2.Text   = "";
            textBox3.Text   = "";
            txtMessage.Text = "";
            _LayerId        = GetCurrentLayer().ID;
            _Object         = GetSelectObject();
            _type           = GetCurrentLayerType();
            _Selected       = false;
            comboBox1.Items.Clear();
            comboBox1.Text  = "";
            textBox1.Text   = _Object.Text;
            txtMessage.Text = _Object.Message;
            _table          = MapDBClass.GetPropertyDefine(_type.ToString());
            string    sql       = "select * from " + MapDBClass.GetPropertyTableName(_MapId, _LayerId) + " where 1<>1";
            DataTable temptable = SqlHelper.Select(sql, null);

            for (int i = 4; i < temptable.Columns.Count; i++)
            {
                bool find = false;
                for (int j = 0; j < _table.Rows.Count; j++)
                {
                    if (temptable.Columns[i].ColumnName.ToLower() == _table.Rows[j]["PropertyName"].ToString().ToLower())
                    {
                        find = true;
                        break;
                    }
                }
                if (find)
                {
                    continue;
                }
                _table.Rows.Add(new object[] { i, _type.ToString(), temptable.Columns[i].ColumnName, temptable.Columns[i].DataType.Name, "0", "0", "", "1" });
            }
            SetDateList();
            textBox2.Text = "";
            textBox3.Text = "";
            Geometry selobject = _Object;

            if (selobject is Polygon)
            {
                Polygon polygon = selobject as Polygon;
                textBox2.Text = String.Format("{0:N5}", polygon.Area);
                textBox3.Text = String.Format("{0:N5}", polygon.ExteriorRing.Length);
            }
            else if (selobject is MultiPolygon)
            {
                MultiPolygon multiPolygon = selobject as MultiPolygon;
                textBox2.Text = String.Format("{0:N5}", multiPolygon.Area);
                textBox3.Text = String.Format("{0:N5}", multiPolygon.Length);
            }
            else if (selobject is LinearRing)
            {
                LinearRing line = selobject as LinearRing;
                textBox3.Text = String.Format("{0:N5}", line.Length);
            }
            else if (selobject is LineString)
            {
                LineString line = selobject as LineString;
                textBox3.Text = String.Format("{0:N5}", line.Length);
            }
            else if (selobject is MultiLineString)
            {
                MultiLineString line = selobject as MultiLineString;
                textBox3.Text = String.Format("{0:N5}", line.Length);
            }
        }