CAD为DWG文件。
GIS分为SHP、GDB、MDB以及ArcSde。
CAD常用的类型:直线、多段线、圆弧、圆、椭圆、面域、块、属性块、单行文字、多行文字。
GIS常用的类型:点(Point)、多点(Multipoint)、线段(Line)、圆弧(CircularArc)、椭圆弧(EllipticArc)、多段线(Polyline)、多边形(Polygon)
CAD图元和ArcGIS图元对应关系 |
|||
CAD图元 |
AutoCAD类 |
ArcGIS图元 |
ArcGIS类 |
块 |
AcDbBlockReference |
点 |
Point |
属性块 |
AcDbBlockReference |
点 |
Point |
单行文字 |
AcDbText |
点 |
Point |
多行文字 |
AcDbMText |
点 |
Point |
点 |
AcDbPoint |
点 |
Point |
直线 |
AcDbLine |
线 |
Line |
圆弧 |
AcDbArc |
线 |
CircularArc |
椭圆弧 |
AcDbEllipse |
线 |
EllipticArc |
非闭合多段线 |
AcDbPolyline |
线 |
Polyline |
闭合多段线 |
AcDbPolyline |
面 |
Polygon |
圆 |
AcDbCircle |
面 |
CircularArc |
椭圆 |
AcDbEllipse |
面 |
EllipticArc |
面域 |
AcDbRegion |
面 |
Polygon |
CAD同一个图层中可以存在多种类型实体。
GIS同一个图层中仅可存在一种类型的实体。常用的为点(point)、多段线(Polyline)、多边形(Polygon)。
CAD和ArcGIS转换关系对应表 |
|
CAD元素 |
ArcGIS元素 |
图层 |
CADLayer |
颜色 |
CADColor |
线型 |
CADLineStyle |
线宽 |
CADLineWidth |
块名 |
CADBlockName |
文字内容 |
TextContent |
旋转角度 |
Rotation |
文字类型 |
TextStyle |
块比例 |
BlockScale |
填充图层 |
HatchLayer |
填充颜色 |
HatchColor |
填充图案 |
HatchPattern |
CAD和GIS两个平台对圆弧的算法不同,可能会导致面积、长度的误差。
GDB文件的初始化方式CLSID_FileGDBWorkspaceFactory
MDB文件的初始化方式CLSID_AccessWorkspaceFactory
SHP文件的初始化方式CLSID_ShapefileWorkspaceFactory
SDE文件的初始化方式CLSID_SdeWorkspaceFactory
采用Ae开发时,SHP数据和GDB/MDB/SDE数据有区别。
添加SHP数据时,数据的长度、面积不能自动填写,并且SHP文件的面积、长度字段不能被赋值。必须通过ArcGis软件自动获取。
对于Polygon类型数据,SHP将Polygon转为线段(Line)返回,而其他数据返回线段(Line)、圆弧(CircularArc)、椭圆弧(EllipticArc)的集合。
AcDbArc(const AcGePoint3d& center,//圆心
double radius,//半径
double startAngle, //起始角度
double endAngle);//终止角度
(iPointStart,//起始点
iPointEnd,//终止点
VARIANT_TRUE,//是否逆时针
dArcAngle);//圆心角
addVertexAt (unsigned int index, //点序号
const AcGePoint2d& pt, //点坐标
double bulge = 0., //凸度
double startWidth = -1.,
double endWidth = -1.,
Adesk::Int32 vertexIdentifier = 0);
直线的凸度为:0.0,圆弧的凸度:tan(中心角/4)
GIS多段线可由ISegmentCollection组成,Isegment可有Line、CircularArc组成。Isegment的创建参照圆弧。
AcDbEllipse(const AcGePoint3d& center,//圆心
const AcGeVector3d& unitNormal,
const AcGeVector3d& majorAxis, //长轴向量
double radiusRatio,//长半轴比值
double startAngle,//起始角度
double endAngle);//终止角度
IPoint FromPoint,//起始点
IPoint ToPoint,//终止点
IEnvelope suggestedEnvelope,//外包轮廓
esriArcOrientation orientation
圆心、半径
圆心、半径
addVertexAt (unsigned int index, //点序号
const AcGePoint2d& pt, //点坐标
double bulge = 0., //凸度
double startWidth = -1.,
double endWidth = -1.,
Adesk::Int32 vertexIdentifier = 0);
直线的凸度为:0.0,圆弧的凸度:tan(中心角/4)
设置坐标点后,SetClosed();
GIS多段线可由ISegmentCollection组成,Isegment可有Line、CircularArc组成。Isegment的创建参照圆弧。
AcDbEllipse(const AcGePoint3d& center,//圆心
const AcGeVector3d& unitNormal,
const AcGeVector3d& majorAxis, //长轴向量
double radiusRatio);//长半轴比值
IEnvelope suggestedEnvelope,//外包轮廓
CAD中有单行文字、多行文字、属性块、块、点转入GIS后均变为Point类型数据,因此GIS数据转入CAD后,要进行符号化。
将单个CAD转为Geometry后,将数据转为IGeometryCollection
入库及读取数据,面积和长度没有误差。
在线CAD转GIS