[转] arcgis Engine创建shp图层
小生 原文 arcgis Engine创建shp图层
以创建点图层为例。首先要得到保存文件的地址。
- SaveFileDialog saveFileDialog = new SaveFileDialog();
- saveFileDialog.Filter = "Shape文件(*.shp)|*.shp";
- saveFileDialog.Title = "新建点形shp文件";
- saveFileDialog.CheckFileExists = false;
- DialogResult dialogResult = saveFileDialog.ShowDialog();
- IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
- int index;
- string fileName;
- string filePath;
- if (dialogResult == DialogResult.OK)
- {
- fileFullPath = saveFileDialog.FileName;
- index = fileFullPath.LastIndexOf("\");
- fileName = fileFullPath.Substring(index + 1);
- filePath = fileFullPath.Substring(0, index);
- if (System.IO.File.Exists(saveFileDialog.FileName))//检查文件是否存在
- {
- if (MessageBox.Show("该文件夹下已经有同名文件,替换原文件?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
- {
- IFeatureWorkspace FWS = pWorkspaceFactory.OpenFromFile(filePath, 0) as IFeatureWorkspace;
- IFeatureClass pFeatureClass = FWS.OpenFeatureClass(fileName);
- IDataset pDataset = pFeatureClass as IDataset;
- pDataset.Delete();
- }
- //System.IO.File.Delete(saveFileDialog.FileName);
- else
- return;
- }
- }
- else
- {
- fileFullPath = null;
- return;
- }
然后,要为该SHP建立新的字段:
- IFields pFields = new FieldsClass();
- IFieldsEdit pFieldsEdit = pFields as IFieldsEdit;
- IField pField = new FieldClass();
- IFieldEdit pFieldEdit = pField as IFieldEdit;
- pFieldEdit.Name_2 = "Shape";
- pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
- IGeometryDef pGeometryDef = new GeometryDef();
- IGeometryDefEdit pGeometryDefEdit = pGeometryDef as IGeometryDefEdit;
- pGeometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;//点、线、面什么的
- pGeometryDefEdit.SpatialReference_2 = axMapControl1.SpatialReference;
- ISpatialReferenceFactory2 ipSpaRefFa = new SpatialReferenceEnvironmentClass();
- IGeographicCoordinateSystem ipGeoCorSys = new GeographicCoordinateSystemClass();
- ipGeoCorSys = ipSpaRefFa.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
- ISpatialReference ipSpaRef = ipGeoCorSys;
- //IControlPrecision2 contrPrecision = ipSpaRef as IControlPrecision2;
- pGeometryDefEdit.SpatialReference_2 = ipSpaRef;
- pFieldEdit.GeometryDef_2 = pGeometryDef;
- pFieldsEdit.AddField(pField);
- pField = new FieldClass();//新建字段
- pFieldEdit = pField as IFieldEdit;
- pFieldEdit.Length_2 = 100;
- pFieldEdit.Name_2 = "editorName";
- pFieldEdit.AliasName_2 = "editorName";
- pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
- pFieldsEdit.AddField(pField);
- //继续增加其它字段
最后,创建图层
- IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(filePath, 0) as IFeatureWorkspace;
- int i = fileName.IndexOf(".shp");
- if(i == -1 )
- pFeatureWorkspace.CreateFeatureClass(fileName + ".shp", pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
- else
- pFeatureWorkspace.CreateFeatureClass(fileName, pFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");
- axMapControl1.AddShapeFile(filePath, fileName + ".shp");
[转] arcgis Engine创建shp图层的更多相关文章
- ArcGIS Engine 创建索引(属性索引)——提高查询效率
转自原文 ArcGIS Engine 创建索引(属性索引)——提高查询效率 众所周知,建立索引可以提高查询的效率,当对FeatureClass中的某一列频繁的查找,且数据量比较大时,建立索引是非常有必 ...
- arcEngine开发之根据点坐标创建Shp图层
思路 根据点坐标创建Shapefile文件大致思路是这样的: (1)创建表的工作空间,通过 IField.IFieldsEdit.IField 等接口创建属性字段,添加到要素集中. (2)根据获取点的 ...
- Arcgis engine 指定图层对要素进行创建、删除等操作
Arcgis engine 指定图层创建点要素 在指定的图层上创建一个点要素,点要素的位置是通过X,Y坐标指定的,下面是具体的注释 .其中 和IFeatureClassWrite接口有关的代码不要好像 ...
- 《ArcGIS Engine+C#实例开发教程》第七讲 图层符号选择器的实现2
原文:<ArcGIS Engine+C#实例开发教程>第七讲 图层符号选择器的实现2 摘要:在第七讲 图层符号选择器的实现的第一阶段中,我们完成了符号选择器窗体的创建与调用.在第二阶段中, ...
- ArcGIS Engine环境下创建自定义的ArcToolbox Geoprocessing工具
在上一篇日志中介绍了自己通过几何的方法合并断开的线要素的ArcGIS插件式的应用程序.但是后来考虑到插件式的程序的配置和使用比较繁琐,也没有比较好的错误处理机制,于是我就把之前的程序封装成一个类似于A ...
- shp图层创建
IField,IFieldEdit,IFields,IFieldsEdit,IGeometryDef,IGeometryDefEdit接口 (2013-05-06 20:40:27) 转载▼ 标签: ...
- 开一个帖子,等有时间了写写如何用shapelib创建点线面等shp图层
开一个帖子,等有时间了写写如何用shapelib创建点线面等shp图层 C#操作shapelib的实例 http://files.cnblogs.com/yuxuetaoxp/Shapelib--D ...
- arcgis api for js入门开发系列十叠加SHP图层
上一篇实现了demo的热力图,本篇新增叠加SHP图层,截图如下: 叠加SHP图层效果实现的思路如下:利用封装的js文件,直接读取shp图层,然后转换geojson,最后通过arcgis api来解析转 ...
- arcgis api 3.x for js 地图加载多个 SHP 图层压缩以及 json 文件展示(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
随机推荐
- 核稀疏表示分类(KSRC)
参考:<Kernel SparseRepresention-Based Classifier> 原文地址:http://www.cnblogs.com/Rosanna/p/3372153. ...
- lintcode:First Missing Positive 丢失的第一个正整数
题目 丢失的第一个正整数 给出一个无序的整数数组,找出其中没有出现的最小正整数. 样例 如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2 挑战 只允许时 ...
- 如何配置svn服务器
如果你已经安装好了VisualServer服务器,现在让我们一起来配置svn服务器吧. 工具/原料 VisualServer 配置VisualServer 找到VisualServer Manager ...
- UML建模之活动图介绍(Activity Diagram)
一.活动图的组成元素 Activity Diagram Element 1.活动状态图(Activity) 2.动作状态(Actions) 3.动作状态约束(Action Constraints) 4 ...
- SQLServer中服务器角色和数据库角色权限详解
角色 当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户. 数 ...
- linux系统快速查看进程pid的方法
一个很简单的命令,pgrep,可以迅速定位包含某个关键字的进程的pid:使用这个命令,再也不用ps aux 以后去对哪个进程的pid了 一个很简单的命令,pgrep,可以迅速定位包含某个关键字的进程的 ...
- Ext2.0之Tabpanel AJAX远程加载多标签页面模式开发技巧
目前开发的方式是采用远程load页面来实现多页面效果,类似于126邮箱多标签页效果.但是比126邮箱的方式更好,因为页面打开后是load到本地的,126似乎还会重新请求.在近期项目该开发方式已经基本成 ...
- Codeforces 672
题目链接:http://codeforces.com/contest/672/problem A. Summer Camp(打表) 题意:123456789...一串字符串,问第n个是什么数字. 塞一 ...
- int string相互转换
一.itoa()和atoi() 注意:这两个函数并不是标准的C函数,而是windows环境下特有的函数. 1.itoa #include<iostream> #include<str ...
- TCSRM 591 div2(1000)(dp)
挺好的dp 因为有一点限制 必须任意去除一个数 总和就会小于另一个总和 换句话来说就是去除最小的满足 那么就都满足 所以是限制最小值的背包 刚开始从小到大定住最小值来背 TLE了一组数据 后来发现如果 ...