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() + "\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);
}
}
}
MapObject shape数据操作的更多相关文章
- python数据结构:pandas(2)数据操作
一.Pandas的数据操作 0.DataFrame的数据结构 1.Series索引操作 (0)Series class Series(base.IndexOpsMixin, generic.NDFra ...
- pytorch 数据操作
数据操作 在深度学习中,我们通常会频繁地对数据进行操作.作为动手学深度学习的基础,本节将介绍如何对内存中的数据进行操作. 在PyTorch中,torch.Tensor是存储和变换数据的主要工具.如果你 ...
- StackExchange.Redis帮助类解决方案RedisRepository封装(字符串类型数据操作)
本文版权归博客园和作者本人共同所有,转载和爬虫请注明原文链接 http://www.cnblogs.com/tdws/tag/NoSql/ 目录 一.基础配置封装 二.String字符串类型数据操作封 ...
- hive数据操作
mdl是数据操作类的语言,包括向数据表加载文件,写查询结果等操作 hive有四种导入数据的方式 >从本地加载数据 LOAD DATA LOCAL INPATH './examples/files ...
- Dapper 数据操作框架
数据操作DapperFrom NuGet:Install-Package DapperorInstall-Package Dapper.StrongName微型ORM:PetaPoco获得PetaPo ...
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
- coreData数据操作
// 1. 建立模型文件// 2. 建立CoreDataStack// 3. 设置AppDelegate 接着 // // CoreDataStack.swift // CoreDataStackDe ...
- Entity Framework 5.0系列之数据操作
Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以将数据源返回的数据具体化为对象:跟踪对象所做的更改:并发处理:将对象更改传播到数据源等.今天我们就一起讨论如何 ...
- 数据操作语言DML与运算符
数据操作语言DML(添加,修改,删除) 1.添加数据 insert into insert into 表名 (字段列表) values (值列表),值列表要和字段列表按顺序匹配. insert int ...
随机推荐
- 要想重启后也生效LINUX防火墙配置
新配置的一台服务器,安装的是CentOS6.3系统,在安装完LNMP之后,发现nginx进程存在,且php解析正常,但是用分配的独立IP去访问的时候发现无法访问. 查了下网上的资料,发现可能是Linu ...
- gem install 出现Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://ruby.taobao.org
这几天在ubuntu14.04.1 64位上安装rails的时候,由于大天朝的原因,更换了淘宝源,然后执行 gem install rails 这个时候,总是会提示 Errno::ECONNRESET ...
- jquery中mouseout和mouseleave 事件的区别
今天用jQuery写了一个选项卡的效果,用mouseout事件控制了鼠标的移出,结果发现在移出时div会发生闪动,于是网上各种查资料觉得用mouseleave更合适一些,
- MySQL简单优化
1:对 MySQL 优化是一个综合性的技术,主要包括: a.标的设计合理(符合 3NF) b.添加适当索引(index)(普通索引.主键索引.唯一索引 unique.全文索引) ...
- python【第十三篇】可以写一个堡垒机了
前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的功能属性中的其中 ...
- css的继承、层叠和特殊性
1,继承 css的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代. 但注意有一些css样式是不具有继承性的.如border: ...
- Google将向IETF标准提交QUIC协议提案
Google近期宣布,他们将向IETF提交实验性传输层网络协议QUIC的提案.此外,Google已经给出了QUIC协议优化页面加载时间的第一手数据. 自从2013年引入QUIC以来,Google一直在 ...
- Netty高性能之道
1. 背景 1.1. 惊人的性能数据 最近一个圈内朋友告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用.相比于 ...
- poj 3667 Hotel
昨天学习了线段树的延迟标记: 发现自己还有区间合并没有学: 抓紧时间学习一下: 代码: #include<cstdio> #include<algorithm> #define ...
- Unicode(UTF-8, UTF-16)令人混淆的概念
为啥需要Unicode 我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的, ...