CAD圆弧转GIS

  1. 文件类型区别:

CAD为DWG文件。算法

GIS分为SHP、GDB、MDB以及ArcSde。spa

  1. 实体类型区别:

CAD经常使用的类型:直线、多段线、圆弧、圆、椭圆、面域、块、属性块、单行文字、多行文字。3d

GIS经常使用的类型:点(Point)、多点(Multipoint)、线段(Line)、圆弧(CircularArc)、椭圆弧(EllipticArc)、多段线(Polyline)、多边形(Polygon)component

CAD图元和ArcGIS图元对应关系orm

CAD图元htm

AutoCADblog

ArcGIS图元ip

ArcGISci

开发

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

 

  1. 图层区别:

CAD同一个图层中能够存在多种类型实体。

GIS同一个图层中仅可存在一种类型的实体。经常使用的为点(point)、多段线(Polyline)、多边形(Polygon)。

CAD和ArcGIS转换关系对应表

CAD元素

ArcGIS元素

图层

CADLayer

颜色

CADColor

线型

CADLineStyle

线宽

CADLineWidth

块名

CADBlockName

文字内容

TextContent

旋转角度

Rotation

文字类型

TextStyle

块比例

BlockScale

填充图层

HatchLayer

填充颜色

HatchColor

填充图案

HatchPattern

 

  1. 对圆弧、椭圆算法不一样

CAD和GIS两个平台对圆弧的算法不一样,可能会致使面积、长度的偏差。

  • GIS内部的区别
  1. 初始化方式区别

GDB文件的初始化方式CLSID_FileGDBWorkspaceFactory

MDB文件的初始化方式CLSID_AccessWorkspaceFactory

SHP文件的初始化方式CLSID_ShapefileWorkspaceFactory

SDE文件的初始化方式CLSID_SdeWorkspaceFactory

 

  1. 数据解析方式不一样

采用Ae开发时,SHP数据和GDB/MDB/SDE数据有区别。

添加SHP数据时,数据的长度、面积不能自动填写,而且SHP文件的面积、长度字段不能被赋值。必须经过ArcGis软件自动获取。

对于Polygon类型数据,SHP将Polygon转为线段(Line)返回,而其余数据返回线段(Line)、圆弧(CircularArc)、椭圆弧(EllipticArc)的集合。

  • 线实体转换
  1. CAD圆弧构造方法:

AcDbArc(const AcGePoint3d& center,//圆心

 double radius,//半径

 double startAngle, //起始角度

double endAngle);//终止角度

  1. ArcGIS构造圆弧方式:

 (iPointStart,//起始点

iPointEnd,//终止点

VARIANT_TRUE,//是否逆时针

dArcAngle);//圆心角

 

  1. CAD多段线构建方式

addVertexAt     (unsigned int index, //点序号

const AcGePoint2d& pt, //点坐标

double bulge = 0., //凸度

double startWidth = -1.,

  double endWidth = -1.,

 Adesk::Int32 vertexIdentifier = 0);

直线的凸度为:0.0,圆弧的凸度:tan(中心角/4)

  1. GIS多段线构造方式

GIS多段线可由ISegmentCollection组成,Isegment可有Line、CircularArc组成。Isegment的建立参照圆弧。

  1. CAD椭圆弧的构造方式

    AcDbEllipse(const AcGePoint3dcenter,//圆心

   const AcGeVector3d& unitNormal,

  const AcGeVector3d& majorAxis, //长轴向量

   double     radiusRatio,//长半轴比值

   double     startAngle,//起始角度

   double   endAngle);//终止角度

  1. ArcGis构造椭圆弧方法

  IPoint FromPoint,//起始点

  IPoint ToPoint,//终止点

  IEnvelope suggestedEnvelope,//外包轮廓

  esriArcOrientation orientation

 

  • 面实体转换
  1. CAD圆构造方法

圆心、半径

  1. GIS圆构造方法

圆心、半径

  1. CAD闭合多段线构造方法

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();

  1. ArcGIS面构造方法

GIS多段线可由ISegmentCollection组成,Isegment可有Line、CircularArc组成。Isegment的建立参照圆弧。

  1. CAD椭圆弧的构造方式

    AcDbEllipse(const AcGePoint3dcenter,//圆心

   const AcGeVector3d& unitNormal,

  const AcGeVector3d& majorAxis, //长轴向量

   double     radiusRatio);//长半轴比值

  1. ArcGis构造椭圆弧方法

  IEnvelope suggestedEnvelope,//外包轮廓

 

  • 点实体入库
  1. 类型对应

CAD中有单行文字、多行文字、属性块、块、点转入GIS后均变为Point类型数据,所以GIS数据转入CAD后,要进行符号化。

 

  • CAD转MultPart类型

将单个CAD转为Geometry后,将数据转为IGeometryCollection

 

 

  • 数据入库效果

入库及读取数据,面积和长度没有偏差。

圆弧入库

 

岛状数据入库

 

 

Multipart入库

 

椭圆数据入库

 

  • 数据读取效果

圆弧数据读取

 

岛状数据读取

 

 

  椭圆数据读取

 

 

 

在线CAD转GIS