• MapObject shape数据操作


      利用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() + "
    " +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);
            }
        }
    }
    


     

  • 相关阅读:
    SSM:Spring整合SpringMVC框架
    SSM:搭建整合环境
    SpringMVC:常用注解
    SpringMVC的入门案例
    base64
    windows设置exe开机自启动
    Python-wmi模块
    Base64String转为图片并保存
    java给图片添加水印图片
    uni-app中封装axios请求
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3178045.html
Copyright © 2020-2023  润新知