小生 原文 arcgis Engine创建shp图层

以创建点图层为例。首先要得到保存文件的地址。

  1. SaveFileDialog saveFileDialog = new SaveFileDialog();
  2. saveFileDialog.Filter = "Shape文件(*.shp)|*.shp";
  3. saveFileDialog.Title = "新建点形shp文件";
  4. saveFileDialog.CheckFileExists = false;
  5. DialogResult dialogResult = saveFileDialog.ShowDialog();
  6. IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
  7. int index;
  8. string fileName;
  9. string filePath;
  10. if (dialogResult == DialogResult.OK)
  11. {
  12. fileFullPath = saveFileDialog.FileName;
  13. index = fileFullPath.LastIndexOf("\");
  14. fileName = fileFullPath.Substring(index + 1);
  15. filePath = fileFullPath.Substring(0, index);
  16. if (System.IO.File.Exists(saveFileDialog.FileName))//检查文件是否存在
  17. {
  18. if (MessageBox.Show("该文件夹下已经有同名文件,替换原文件?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
  19. {
  20. IFeatureWorkspace FWS = pWorkspaceFactory.OpenFromFile(filePath, 0) as IFeatureWorkspace;
  21. IFeatureClass pFeatureClass = FWS.OpenFeatureClass(fileName);
  22. IDataset pDataset = pFeatureClass as IDataset;
  23. pDataset.Delete();
  24. }
  25. //System.IO.File.Delete(saveFileDialog.FileName);
  26. else
  27. return;
  28. }
  29.  
  30. }
  31. else
  32. {
  33. fileFullPath = null;
  34. return;
  35. }

然后,要为该SHP建立新的字段:

  1. IFields pFields = new FieldsClass();
  2. IFieldsEdit pFieldsEdit = pFields as IFieldsEdit;
  3. IField pField = new FieldClass();
  4. IFieldEdit pFieldEdit = pField as IFieldEdit;
  5.  
  6. pFieldEdit.Name_2 = "Shape";
  7. pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
  8.  
  9. IGeometryDef pGeometryDef = new GeometryDef();
  10. IGeometryDefEdit pGeometryDefEdit = pGeometryDef as IGeometryDefEdit;
  11. pGeometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;//点、线、面什么的
  12. pGeometryDefEdit.SpatialReference_2 = axMapControl1.SpatialReference;
  13.  
  14. ISpatialReferenceFactory2 ipSpaRefFa = new SpatialReferenceEnvironmentClass();
  15. IGeographicCoordinateSystem ipGeoCorSys = new GeographicCoordinateSystemClass();
  16.  
  17. ipGeoCorSys = ipSpaRefFa.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
  18. ISpatialReference ipSpaRef = ipGeoCorSys;
  19. //IControlPrecision2 contrPrecision = ipSpaRef as IControlPrecision2;
  20.  
  21. pGeometryDefEdit.SpatialReference_2 = ipSpaRef;
  22.  
  23. pFieldEdit.GeometryDef_2 = pGeometryDef;
  24.  
  25. pFieldsEdit.AddField(pField);
  26.  
  27. pField = new FieldClass();//新建字段
  28. pFieldEdit = pField as IFieldEdit;
  29. pFieldEdit.Length_2 = 100;
  30. pFieldEdit.Name_2 = "editorName";
  31. pFieldEdit.AliasName_2 = "editorName";
  32. pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
  33.  
  34. pFieldsEdit.AddField(pField);
  35. //继续增加其它字段

 最后,创建图层

  1. IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(filePath, 0) as IFeatureWorkspace;
  2.  
  3. int i = fileName.IndexOf(".shp");
  4. if(i == -1 )
  5. pFeatureWorkspace.CreateFeatureClass(fileName + ".shp", pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
  6. else
  7. pFeatureWorkspace.CreateFeatureClass(fileName, pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
  8.  
  9. axMapControl1.AddShapeFile(filePath, fileName + ".shp");

[转] arcgis Engine创建shp图层的更多相关文章

  1. ArcGIS Engine 创建索引(属性索引)——提高查询效率

    转自原文 ArcGIS Engine 创建索引(属性索引)——提高查询效率 众所周知,建立索引可以提高查询的效率,当对FeatureClass中的某一列频繁的查找,且数据量比较大时,建立索引是非常有必 ...

  2. arcEngine开发之根据点坐标创建Shp图层

    思路 根据点坐标创建Shapefile文件大致思路是这样的: (1)创建表的工作空间,通过 IField.IFieldsEdit.IField 等接口创建属性字段,添加到要素集中. (2)根据获取点的 ...

  3. Arcgis engine 指定图层对要素进行创建、删除等操作

    Arcgis engine 指定图层创建点要素 在指定的图层上创建一个点要素,点要素的位置是通过X,Y坐标指定的,下面是具体的注释 .其中 和IFeatureClassWrite接口有关的代码不要好像 ...

  4. 《ArcGIS Engine+C#实例开发教程》第七讲 图层符号选择器的实现2

    原文:<ArcGIS Engine+C#实例开发教程>第七讲 图层符号选择器的实现2 摘要:在第七讲 图层符号选择器的实现的第一阶段中,我们完成了符号选择器窗体的创建与调用.在第二阶段中, ...

  5. ArcGIS Engine环境下创建自定义的ArcToolbox Geoprocessing工具

    在上一篇日志中介绍了自己通过几何的方法合并断开的线要素的ArcGIS插件式的应用程序.但是后来考虑到插件式的程序的配置和使用比较繁琐,也没有比较好的错误处理机制,于是我就把之前的程序封装成一个类似于A ...

  6. shp图层创建

    IField,IFieldEdit,IFields,IFieldsEdit,IGeometryDef,IGeometryDefEdit接口  (2013-05-06 20:40:27) 转载▼ 标签: ...

  7. 开一个帖子,等有时间了写写如何用shapelib创建点线面等shp图层

    开一个帖子,等有时间了写写如何用shapelib创建点线面等shp图层  C#操作shapelib的实例 http://files.cnblogs.com/yuxuetaoxp/Shapelib--D ...

  8. arcgis api for js入门开发系列十叠加SHP图层

    上一篇实现了demo的热力图,本篇新增叠加SHP图层,截图如下: 叠加SHP图层效果实现的思路如下:利用封装的js文件,直接读取shp图层,然后转换geojson,最后通过arcgis api来解析转 ...

  9. arcgis api 3.x for js 地图加载多个 SHP 图层压缩以及 json 文件展示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

随机推荐

  1. 核稀疏表示分类(KSRC)

    参考:<Kernel SparseRepresention-Based Classifier> 原文地址:http://www.cnblogs.com/Rosanna/p/3372153. ...

  2. lintcode:First Missing Positive 丢失的第一个正整数

    题目 丢失的第一个正整数 给出一个无序的整数数组,找出其中没有出现的最小正整数. 样例 如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2 挑战 只允许时 ...

  3. 如何配置svn服务器

    如果你已经安装好了VisualServer服务器,现在让我们一起来配置svn服务器吧. 工具/原料 VisualServer 配置VisualServer 找到VisualServer Manager ...

  4. UML建模之活动图介绍(Activity Diagram)

    一.活动图的组成元素 Activity Diagram Element 1.活动状态图(Activity) 2.动作状态(Actions) 3.动作状态约束(Action Constraints) 4 ...

  5. SQLServer中服务器角色和数据库角色权限详解

    角色 当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户. 数 ...

  6. linux系统快速查看进程pid的方法

    一个很简单的命令,pgrep,可以迅速定位包含某个关键字的进程的pid:使用这个命令,再也不用ps aux 以后去对哪个进程的pid了 一个很简单的命令,pgrep,可以迅速定位包含某个关键字的进程的 ...

  7. Ext2.0之Tabpanel AJAX远程加载多标签页面模式开发技巧

    目前开发的方式是采用远程load页面来实现多页面效果,类似于126邮箱多标签页效果.但是比126邮箱的方式更好,因为页面打开后是load到本地的,126似乎还会重新请求.在近期项目该开发方式已经基本成 ...

  8. Codeforces 672

    题目链接:http://codeforces.com/contest/672/problem A. Summer Camp(打表) 题意:123456789...一串字符串,问第n个是什么数字. 塞一 ...

  9. int string相互转换

    一.itoa()和atoi() 注意:这两个函数并不是标准的C函数,而是windows环境下特有的函数. 1.itoa #include<iostream> #include<str ...

  10. TCSRM 591 div2(1000)(dp)

    挺好的dp 因为有一点限制 必须任意去除一个数 总和就会小于另一个总和 换句话来说就是去除最小的满足 那么就都满足 所以是限制最小值的背包 刚开始从小到大定住最小值来背 TLE了一组数据 后来发现如果 ...