VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之ArcGIS 工作经历【IFeatureBuffer】【CAD转SH

由于工作需要,需要基于ArcGIS进行二次开发,软件的开发过程当中有一个非常重要的功能,就是需要把CAD的数据转换为shp文件保存,方便后面的使用编辑,存储。

先说一下功能的前提,需要将CAD转换为shp文件存储,并且需要与ArcGIS文件挂接上,好设置图层的样式,通过MXD设置肯定比用代码去设置样式方便的多,而且后期的修改也会比较方便。

根据这个功能,我有了两个想法:

1、首先设置好一个MXD与图层,根据图层名称设置好图层样式,然后删除shp文件,只保留MXD文件,然后直接打开CAD文件,根据注记、点、线、面等图层保存为shp文件,存到mxd文件的相对路径上,打开mxd,就可以打开图层,并且图层的样式就会设置好,不用在配置。这种方法先不说,我认为比较简单。

2、首先设置好一个MXD与空的图层,设置好图层样式,然后打开cad,通过IFeatureBuffer将其插入对应的图层当中去,但是就是插入的过程,出现了很多莫名的Bug。

主要说第二种方式:

插入的过程代码很简单的:如下

复制代码
IFeatureCursor feaCursor = feaClass.Insert(true);

IFeatureBuffer feaBuffer = feaClass.CreateFeatureBuffer();

feaBuffer.Shape = IGeometry;

//(这里的IGeometry可以是IPolygon,IPolyline,IPoint)

int fieldindex = feaBuffer.Fields.FindField("字段名");

if (fieldindex >= 0)

{          

        feaBuffer.set_Value(fieldindex, "字段值" );

}

feaCursor.InsertFeature(feaBuffer);
复制代码

 这种方法会出现一些问题,如下错误

The coordinates or measures are out of bounds.【坐标系统或图层显示范围不正确】

需要设置ShpFile文件的源:

如果把左或下都改为复数的话,全世界的坐标数据都可以导入,不会出错。

 


相关教程