MapObject shape数据操作 一

来源:互联网 发布:电视网络播放器价格 编辑:程序博客网 时间:2024/06/06 17:01

  利用MO 的GeoDataset  、DataConnection  Recordset 进行数据操作

 在MO中。使用GeoDataset对象和DataConnection 对象来连接和读取地理数据。

   GeoDataset: 是表达一个图层的地利数据的对象

 DatasetConnection对象指定一个和地理数据文件的连接,用Database 属性表示数据文件的地址。

Recordset 是Geodataset的记录集合或者查询后的数据集合

下面给一段 他们的使用  主要用于加载shp数据集并通过遍历获取线的每个节点

 

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using MapObjects2;namespace mo{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        public MapObjects2.MapLayer AddShape(string basepath, string fileName, bool mHasMeasure)        {            DataConnection dCon = new DataConnection();            GeoDataset gSet;            mHasMeasure = false;            dCon.Database = basepath;            if (dCon.Connect())            {                gSet = dCon.FindGeoDataset(fileName);                if (gSet == null)                {                    MessageBox.Show("打开shape文件异常");                    return null;                }                else                {                    MapLayer newLayer = new MapLayer();                    newLayer.GeoDataset = gSet;                    mHasMeasure = gSet.HasMeasure;                    dCon = null;                    gSet = null;                    MessageBox.Show(newLayer.Records.Count.ToString());                    return newLayer;                }            }            else            {                dCon = null;                gSet = null;                return null;            }        }        private void Form1_Load(object sender, EventArgs e)        {                              }        //  h获取 图层中的每个节点         public void getLine(string mPath, string Name,bool fea)        {            Application.DoEvents();            string txt = null;            MapObjects2.MapLayer mLay;            MapObjects2.Recordset mrec;            Line mline = new Line();            MapObjects2.Point mpt = new MapObjects2.Point(); ;            mLay = AddShape(mPath, Name, false);            mrec = mLay.Records;            do            {                //从第一条数据开始处理                //MessageBox.Show(mrec.Fields.Item("shape").);                mline = mrec.Fields.Item("shape").Value ;                MessageBox.Show(mline.Parts.Count.ToString());                               String mlxdm = mrec.Fields.Item("roadcode").Value.ToString();                MessageBox.Show(mlxdm);                if (mline.Parts.Count < 1)                {                    MessageBox.Show("line is nothing");                    break;                }                for (int i = 0; i < mline.Parts.Count; i++)                {                    MapObjects2.Points   pt=   mline.Parts.Item(i) as MapObjects2.Points;                    for (int j = 0; j < pt.Count;j++ )                    {                        richTextBox1.Text =  "x=" + pt.Item(j).X.ToString() + " y=" + pt.Item(j).Y.ToString() + " z=" + pt.Item(j).Z.ToString() + "\n" +richTextBox1.Text ;                        //MessageBox.Show("x=" + pt.Item(i).X.ToString() + " y=" + pt.Item(i).Y.ToString() + " z=" + pt.Item(i).Z.ToString());                        // MessageBox.Show( pt.ToString());                    }                                                                      }                mrec.MoveNext();            } while (!mrec.EOF);        }        private void button1_Click(object sender, EventArgs e)        {            getLine(Application.StartupPath + "\\layerdata", "nmg_route", true);        }    }}


 

原创粉丝点击