基于C#的点实体数据存储

矢量数据结构
在地理信息系统原理中大家都学习过可以用矢量数据模型和栅格数据模型来定义,存储和展示空间对象,这里先看下矢量数据模型

矢量数据模型定义了点、线和面三种不同的类型在二维空间表达现实世界的对象,例如,在下图中,使用它们来表示同一个区域的三个数据集:(1) 以点形式表示的检修孔盖、(2) 下水道管线、(3) 宗地面和 。为了正确的表达出这三种对象,在计算机世界中又是如何存储和管理这些数据的呢?分别看下。

点的存储

如果将地图的右上角记为坐标原点,可以通过保存点距右上角的水平距离和垂直距离来实现点的位置存储,并通过读取该坐标对实现点在地图中的重新绘制

点的坐标数据

建筑物143
建筑物252
建筑物395

实现代码

  private void button1_Click(object sender, EventArgs e)
        {
            
            string str_oleConn = $@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={path()};Extended Properties=dBASE IV;";
            OleDbConnection myconnn = new OleDbConnection(str_oleConn);
            myconnn.Open();
            string mysql_0 = "Create Table Points(X double,Y double)";
            string mysql_1 = "Insert Into Points values(4,3)";
            string mysql_2 = "Insert Into Points  values(5,2)";
            string mysql_3 = "Insert Into Points values(9,5)";
            OleDbCommand mycmd_0 = new OleDbCommand(mysql_0,myconnn);
            OleDbCommand mycmd_1 = new OleDbCommand(mysql_1, myconnn);
            OleDbCommand mycmd_2 = new OleDbCommand(mysql_2, myconnn);
            OleDbCommand mycmd_3 = new OleDbCommand(mysql_3, myconnn);
            mycmd_0.ExecuteNonQuery();
            mycmd_1.ExecuteNonQuery();
            mycmd_2.ExecuteNonQuery();
            mycmd_3.ExecuteNonQuery();

        }

        private void button2_Click(object sender, EventArgs e)
        {
            string str_oleConn = $@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={path()};Extended Properties=dBASE IV;";
            OleDbConnection myconn = new OleDbConnection(str_oleConn);
            myconn.Open();
            string sql_0 = "select * from Points";
            OleDbDataAdapter mycmd = new OleDbDataAdapter(sql_0, myconn);
            DataTable dt = new DataTable();
            mycmd.Fill(dt);
            Graphics g = this.CreateGraphics();
            g.Clear(Color.White);
            Brush a = new SolidBrush(Color.Red);
            for(int i = 0; i < dt.Rows.Count; i++)
            {
                g.FillRectangle(a, Convert.ToInt32(dt.Rows[i][0])*10, Convert.ToInt32(dt.Rows[i][1])*10, 5, 5);
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值