MapObjects shape数据操作 二
来源:互联网 发布:天谕豪男捏脸数据 编辑:程序博客网 时间:2024/06/06 20:19
我一个项目中要实现一个功能是把shp导入到三维平台,进行编辑后在导出到原始的shp数据中,并且在三维中能查询所有的线属性。
在第一篇中主要是介绍怎么获取shp 数据中的所有的点集合,有了点集合,我们就可以做到不同平台数据的导入操作等。
在这篇中主要是 通过点集合来反过来修改原始的shp数据 ,实现数据的导出,删除,修改等操作 。
1、数据修改 这用线介绍正个操作的思路
public void EditSHP() { //1、获取点 Points lobj_pts = new Points(); //gobj_line.GetPoint 这是我三维平台中的方法 主要是获取线中节点,把一条线的点都起出来 for (int i = 0; i < gobj_line.PointCount; i++) { MapObjects2.Point pt = new MapObjects2.Point(); pt.X = gobj_line.GetPoint(i, SECoordinateUnit.Degree).X; pt.Y = gobj_line.GetPoint(i, SECoordinateUnit.Degree).Y; pt.Z = gobj_line.GetPoint(i, SECoordinateUnit.Degree).Z; lobj_pts.Add(pt); } //2根据点集合 创建线 //moCreateLine(gobj_pts); //3、修改mo中线数据集合 moLayer(moCreateLine(lobj_pts), gs_guid); } //把取出来的点集转成线 private Line moCreateLine(Points pts) { MessageBox.Show(pts.Count.ToString()); Line lobj_line=new Line(); lobj_line.Parts.Add(pts); return lobj_line; } /// <summary> /// mo 数据集中添加线集合 /// </summary> private void moLayer(Line lob_line,string ID) { //从原始数据中查找到该线数据 并把shape 替换成现在修改后的线 这样就实现了修改 删除就更简单 只要根据guid 直接删就ok了 Recordset rt = gob_laye.SearchExpression("GUID='" + ID + "'"); if (!rt.EOF) { bool bl = gob_laye.Records.Updatable; rt.Edit(); rt.Fields.Item("shape").Value = lob_line; rt.Update(); rt.StopEditing(); } else { MessageBox.Show( ID + " 保存异常"); return; } }
2、属性数据显示
主要思路是用一个dataGridView 来显示数据 线把数据写入一个datatable 中让后 dataGridView 绑定该datatable就可以显示
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 DevComponents.DotNetBar;using MapObjects2;namespace roadEditTool{ public partial class AttributeFrom : Office2007Form { MapLayer gobj_layer; public AttributeFrom(MapObjects2.MapLayer dt) { InitializeComponent(); this.Dock = System.Windows.Forms.DockStyle.Fill; gobj_layer = dt; } private DataTable getDataSource() { DataTable dt = new DataTable(); // 1、获取字段并添加 for (int i = 0; i < gobj_layer.Records.TableDesc.FieldCount;i++ ) { // // DataColumn dt.Columns.Add(gobj_layer.Records.TableDesc.get_FieldName(Convert.ToInt16(i))); } // // 2、获取字段值 do { DataRow dr= dt.NewRow(); for(int i=0; i< dr.ItemArray.Length;i++) { dr.ItemArray[i] = gobj_layer.Records.Fields.Item(gobj_layer.Records.TableDesc.get_FieldName(Convert.ToInt16(i))).Value.ToString(); // } dt.Rows.Add(dr); }while(gobj_layer.Records.EOF); return dt; } private void AttributeFrom_Load(object sender, EventArgs e) { if (gobj_layer.Valid) { this.dgv_LineAttribute.DataSource = getDataSource(); } } }}
- MapObjects shape数据操作 二
- MapObject shape数据操作 一
- mapobject shape数据操作三
- Python对数据shape的常见操作总结
- 数据基本操作(二)
- hive 数据操作(二)
- shape(二)
- Hive知识点二(数据操作)
- android shape标签详解(二)
- MapObjects二次开发之介绍
- MapObjects开发技术 (VC++)
- MapObjects打包问题
- 使用MapObjects绘制缓冲区
- ArcGIS Runtime加载本地Shape数据和编辑Shape数据
- ArcGIS Runtime加载本地shape数据和编辑shape数据
- ArcGIS Runtime加载本地Shape数据和编辑Shape数据
- ArcGIS Runtime加载本地Shape数据和编辑Shape数据
- ArcGIS Runtime加载本地Shape数据和编辑Shape数据
- poj 1655 Balancing Act
- andengine-3:用手画线并且sprite随画的线条移动
- poj 1679 The Unique MST
- 《C Plus Primer》第七章编程题
- 学习C++ Windows 编程(你的第一个Windows程序)
- MapObjects shape数据操作 二
- Cracking the coding interview--Q5
- openstack 源码分析之swift proxy 服务启动 2
- Ubuntu 12.04 如何修改背景色
- java基础一些简易算法题
- android 重新打包
- poj 2417 离散对数模方程+哈希
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程
- 转:谷歌内幕:详解互联网巨头的做事逻辑