实验三 矢量文件创建与编辑

一、实验目的

1.了解文本文件的读取
2.掌握shapefile文件的创建
3.掌握矢量要素的添加;
4.掌握字段的添加及属性编辑

二、实验仪器与设备

计算机、visual studio 软件、ArcGIS engine 开发包

三、实验内容与步骤

  1. 文本数据的打开与点坐标读取
        /// <summary>/// 从txt文件读取点坐标/// </summary>/// <param name="filename"></param>/// <param name="pts"></param>/// <returns></returns>public bool readpointsfromtxtfile(string filename, ref List<mpoints> pts){try{//创建一个队列,用来储存点序列List<mpoints> mpts = new List<mpoints>();//创建文件读取该对象StreamReader sr = new StreamReader(filename);//读取第一行string str = sr.ReadLine();//循环读取所有行while (str != null){if (str != ""){//对读取的一行字符串按照“,”进行分割string[] strarray = str.Split(',');//使用X,Y坐标创建点mpoints pt = new mpoints();pt.X = double.Parse(strarray[1]);pt.Y = double.Parse(strarray[2]);pt.NAME = strarray[3];pt.TYPE = strarray[4];//将得到的点添加到队列中mpts.Add(pt);}//读取下一行str = sr.ReadLine();}sr.Close();pts = mpts;return true;}catch (Exception ex){System.Windows.Forms.MessageBox.Show(ex.ToString());return false;}}}

2.Shapfile文件的创建

    /// <summary>/// 创建一个新的shapefile文件/// </summary>/// <param name="filepath"></param>/// <param name="filename"></param>/// <param name="datatype"></param>/// <param name="pfeaturelayer"></param>/// <returns></returns>public bool createnewshapefile(string filepath, string filename, int datatype, ref IFeatureLayer pfeaturelayer){try{   //判断你要创建的shp文件是否存在,若存在返回falseif (System.IO.File.Exists(filepath + "\\" + filename + ".shp")){System.Windows.Forms.MessageBox.Show("该文件已经存在,请重新选择工程路径!");return false;}//打开工作空间IWorkspaceFactory pwoekspacefactory = new ShapefileWorkspaceFactory();IFeatureWorkspace pfeatureworkspace = pwoekspacefactory.OpenFromFile(filepath, 0) as IFeatureWorkspace;//编辑属性字段IFields pfields = new Fields();IFieldsEdit pfieldsedit = pfields as IFieldsEdit;//单个字段IField pfield = new Field();IFieldEdit pfieldedit = pfield as IFieldEdit;pfieldedit.Name_2 = "Shape";pfieldedit.Type_2 = esriFieldType.esriFieldTypeGeometry;//设置要素、图层类型、投影IGeometryDef pgeometrydef = new GeometryDef();IGeometryDefEdit pgeometrydefedit = pgeometrydef as IGeometryDefEdit;switch (datatype){case 0:pgeometrydefedit.GeometryType_2 = esriGeometryType.esriGeometryPoint;break;case 1:pgeometrydefedit.GeometryType_2 = esriGeometryType.esriGeometryPolyline;break;case 2:pgeometrydefedit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;break;}//投影ISpatialReferenceFactory pfactory = new SpatialReferenceEnvironment();ISpatialReference pspaticalreference=pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984) as ISpatialReference;pgeometrydefedit.SpatialReference_2=pspaticalreference as ISpatialReference;pfieldedit.GeometryDef_2 = pgeometrydefedit;pfieldsedit.AddField(pfield);IField pfield2 = new Field();IFieldEdit pfieldedit2 = pfield2 as IFieldEdit;pfieldedit2.Name_2 = "NAME";pfieldedit2.Type_2 = esriFieldType.esriFieldTypeString;pfieldsedit.AddField(pfield2);IField pfield3= new Field();IFieldEdit pfieldedit3 = pfield3 as IFieldEdit;pfieldedit3.Name_2 = "TYPE";pfieldedit3.Type_2 = esriFieldType.esriFieldTypeString;pfieldsedit.AddField(pfield3);//创建要素类(创建fraturelayer)IFeatureClass featureclass;featureclass=pfeatureworkspace.CreateFeatureClass(filename,pfields,null,null,esriFeatureType.esriFTSimple,"Shape","");IFeatureLayer featurelayer = new FeatureLayer();featurelayer.FeatureClass = featureclass;featurelayer.Name = featureclass.AliasName;pfeaturelayer = featurelayer;return true;}catch (Exception ex){System.Windows.Forms.MessageBox.Show(ex.ToString());return false;}}

3.掌握矢量要素的添加

    /// <summary>/// 使用坐标序列更新点图层/// </summary>/// <param name="pfeatureclass"></param>/// <param name="pts"></param>/// <returns></returns>public bool updatapointlayerfrompoint(ref IFeatureClass pfeatureclass, List<mpoints>pts){try{   //打开工作空间IDataset dataset = pfeatureclass as IDataset;IWorkspace workspace = dataset.Workspace;//启动编辑IWorkspaceEdit workspaceedit = (IWorkspaceEdit)workspace;workspaceedit.StartEditing(true);workspaceedit.StartEditOperation();//添加要素for (int j = 0; j < pts.Count; j++){//创建一个新的空要素IFeature pfeature = pfeatureclass.CreateFeature();//设置该要素的几何IPoint pt = new Point();pt.X = pts[j].X;pt.Y = pts[j].Y;pfeature.Shape = pt as IGeometry;//属性值设置pfeature.Value[2] = pts[j].NAME;pfeature.Value[3] = pts[j].TYPE;//要素保存pfeature.Store();}//结束编辑workspaceedit.StopEditOperation();workspaceedit.StopEditing(true);return true;}catch (Exception ex){System.Windows.Forms.MessageBox.Show(ex.ToString());return false;}}/// <summary>/// 利用读入的点文件更新shpfile文件(面要素)/// </summary>/// <param name="pfeatureclass"></param>/// <param name="pts"></param>/// <returns></returns>public bool updatapolygonlayerfrompoints(ref IFeatureClass pfeatureclass, List<IPoint> pts){try{if (pts.Count < 3){return false;}//打开工作空间IDataset dataset = pfeatureclass as IDataset;IWorkspace workspace = dataset.Workspace;//启动编辑IWorkspaceEdit workspaceedit = (IWorkspaceEdit)workspace;workspaceedit.StartEditing(true);workspaceedit.StartEditOperation();//添加要素object obj = Type.Missing;IPointCollection pt_cllection = new Polygon();for (int j = 0; j < pts.Count; j++){                  pt_cllection.AddPoint(pts[j], ref obj, ref obj);                   }IFeature pfeature = pfeatureclass.CreateFeature();IPolygon polygon = pt_cllection as IPolygon;pfeature.Shape = polygon as IGeometry;pfeature.Store();//结束编辑workspaceedit.StopEditOperation();workspaceedit.StopEditing(true);return true;}catch (Exception ex){System.Windows.Forms.MessageBox.Show(ex.ToString());return false;}}/// <summary>/// 利用点更新shapefile文件(线要素)/// </summary>/// <param name="pfeatureclass"></param>/// <param name="pts"></param>/// <returns></returns>public bool updatapolylinelayerfrompoints(ref IFeatureClass pfeatureclass, List<IPoint> pts){try{if (pts.Count < 2){return false;}//打开工作空间IDataset dataset = pfeatureclass as IDataset;IWorkspace workspace = dataset.Workspace;//启动编辑IWorkspaceEdit workspaceedit = (IWorkspaceEdit)workspace;workspaceedit.StartEditing(true);workspaceedit.StartEditOperation();//添加要素object obj = Type.Missing;IPointCollection pt_cllection = new Polyline();for (int j = 0; j < pts.Count; j++){pt_cllection.AddPoint(pts[j], ref obj, ref obj);}//创建要素IFeature pfeature = pfeatureclass.CreateFeature();//要素几何赋值IPolyline polyline = pt_cllection as IPolyline;pfeature.Shape = polyline as IGeometry;pfeature.Store();//结束编辑workspaceedit.StopEditOperation();workspaceedit.StopEditing(true);return true;}catch (Exception ex){System.Windows.Forms.MessageBox.Show(ex.ToString());return false;}}

4.掌握字段的添加及属性编辑

IField pfield2 = new Field();
IFieldEdit pfieldedit2 = pfield2 as IFieldEdit;
pfieldedit2.Name_2 = "NAME";
pfieldedit2.Type_2 = esriFieldType.esriFieldTypeString;
pfieldsedit.AddField(pfield2);IField pfield3= new Field();
IFieldEdit pfieldedit3 = pfield3 as IFieldEdit;
pfieldedit3.Name_2 = "TYPE";
pfieldedit3.Type_2 = esriFieldType.esriFieldTypeString;
pfieldsedit.AddField(pfield3);

四、实验要求

创建LayerOperatorClass 实现从文本文件中读取点坐标数据,创建点、线、面三种类型的shp文件,添加字段,根据点坐标在shp文件中添加点、线、面要素。


五、实验心得体会

1.学会了创建shape文件,使用外部txt数据读取进行点、线、面的创建。
2.学会了添加字段类型,进行编辑。

GIS二次开发:实验三 矢量文件创建与编辑相关推荐

  1. GIS二次开发:实验五 综合实验

    一.实验目的 1.掌握栅格数据读取与另存: 2.掌握地图制图工具的实现: 3.基于遥感影像的森林资源信息管理与更新系统的实现 二.实验仪器与设备 计算机.visual studio 软件.ArcGIS ...

  2. 基于Python的ArcGIS二次开发实验实习教程

    基于Python的ArcGIS二次开发实验实习教程. ISBN编号: 9787307221772 原价(定价): 39元, 武汉大学出版社 天猫正版链接: https://detail.tmall.c ...

  3. 《SuperMap GIS二次开发MVC实战训练---江海区慢性病防治院系统》项目研发阶段性总结

    <SuperMap GIS二次开发MVC实战训练-江海区慢性病防治院系统>项目研发阶段性总结 作者:爱怡同学 本次任务完成时间:2019年1月1日-2019年1月10日 开发工具与关键技术 ...

  4. c# AE GIS二次开发学习专题(二) 基本地图控件使用

    GIS二次开发学习专题(二) 基本地图控件使用 学习资料来自<牟乃夏 AE开发教程-基于C#.NET> 发的代码是我整理+老师布置的作业 这一部分是地图基本控件的使用与编写,包括: 一.二 ...

  5. GIS二次开发(C#+AE)

    GIS二次开发(C#+AE) 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: << ...

  6. GIS二次开发实习——鹰眼功能模块的实现(鹰眼锁定不能动,红框与主地图联动)

    GIS二次开发实习(一)--鹰眼功能实现 学期末为期2周的实习结束了,对实习要求所做 太湖水资源管理系统 的功能的实现一一做一个记录,今天先来鹰眼部分(细节部分这里就不说了看前面的文章(一)). 实现 ...

  7. [转] GIS二次开发(C#+AE)

    乘风莫邪 原文GIS二次开发(C#+AE) 此过程描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <</FONT>安装目录>/ ...

  8. GIS 二次开发概述 (整理)

    GIS 二次开发概述 地理信息系统根据其内容可分为两大基本类型:一是应用型地理信息系统,以某一专业.领域或工作为主要内容,包括专题地理信息系统和区域综合地理信息系统:二是工具型地理信息系统,也就是 G ...

  9. [arcgis插件]gis二次开发 报备工具:SHP转TXT文本、TXT转SHP插件

    [arcgis插件]gis二次开发 报备工具:SHP转TXT文本.TXT转SHP插件 [2022.09.28版本更新] 1.shp转txt文件: 选择图层:选择面图层 保存路径:设置一个文件夹路径,可 ...

最新文章

  1. java语言概念及特点相关问题
  2. JavaScript 的简单学习2
  3. 安全管家安卓_pc-cillin和腾讯电脑管家比较哪个更好
  4. 详谈调用winpcap驱动写arp多功能工具
  5. 在生产环境中调试 Angular 应用程序而不显示源映射
  6. ubuntu15.10下安装opencv2.4.9python上调用opencv库
  7. Home Assistant 安装Samba和SSH server 插件
  8. Android 广播机制以及用法详解 (转)
  9. SharePoint 2010-随机出现的页面性能问题
  10. html中如何写平方根等,平方根的符号怎么打出来 电脑打字,平方根的符号怎样打出来?...
  11. Silverlight教程第二部分:使用布局管理 (木野狐译)
  12. JVM学习-G1回收器
  13. python和java哪个好-现在Java和Python哪个前景更好?
  14. /var/lock/subsys作用
  15. win10默认系统字体更改
  16. fat32 linux 打包工具_UbuntuLinux默认安装图形化的压缩工具是File-Roller文件打包器.ppt...
  17. linux fdisk指定ext4,如何在Linux中创建新的Ext4文件系统(分区)
  18. iOS开发 - 关于微信分享后,提示“未验证应用”的解决办法,配置 Universal Link
  19. 利用watir自动化测试并截图,截图后保存
  20. 关于nomogram核心函数的time.inc函数的设定

热门文章

  1. 微服务精通之Hystrix原理解析
  2. Service的onUnbind方法不执行的问题
  3. 三大优势加身,SDN成广域网优化重要手段
  4. Weblogic历史漏洞复现
  5. 920优化大师v1.0.1.0官方版
  6. 安全之路 —— 通过映像劫持实现文件自启动
  7. win10无法打开计算机上的组策略对象,win10系统无法打开组策略编辑器的具体办法...
  8. html 页面下雪效果,HTML5超逼真下雪场景效果
  9. pygame之俄罗斯方块
  10. 易信公众平台开发从入门到精通之天气预报