ArcGIS 工作经历【IFeatureBuffer】【CAD转SHP】

本文探讨了在ArcGIS中实现CAD数据转换为shp文件的方法,提出两种方案:一是通过直接保存shp文件并利用MXD文件设置样式;二是通过编程方式将CAD数据插入到已设置好的图层中,但遇到坐标系统匹配问题。

由于工作需要,需要基于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文件的源:

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

 

转载于:https://www.cnblogs.com/wangrui1995/p/9342896.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值