信息化 频道

你是这样的招聘者吗?


【IT168技术文档】

  ArcGIS Engine二次开发一般需要通过桌面产品来制作这些符号,然后通过专门的转换工具转换以后供AE使用。电力GIS应用当中,电力设备种类繁多,设备状态比较复杂,需要用不同的符号来表现电力设备的不通状态,此外电力技术的更新速度很快,新设备种类也不断推陈出新,用户往往要求提供符号定义工具以满足这些需求。本文以配电变压器为例,介绍一种使用ArcGIS Engine + C#二次开发模式下,可以让用户自己定义设备符号的一种方法。
  一、符号定义
  配电变压器符号如下图所示:

  可以将这个符号分解成四个图元,两段线段,两个圆(圆弧)。用以下结构来描述图元:
public struct MetaData { public int Typ; // 图形类型 3:圆弧,0:线段 public double Scale; // 缩放 public int OffsX ; // 偏移(x) public int OffsY; // 偏移(y) public double Angle; // 旋转 public int x1; // 图元的第一点位置(x) public int y1; // 图元的第一点位置(y) public int x2; // 图元的第二点位置(x) public int y2; // 图元的第二点位置(y) public int x3; // 图元的第三点位置(x) public int y3; // 图元的第三点位置(y) public int x4; // 图元的第四点位置(x) public int y4; // 图元的第四点位置(y) } // 线段:第一点:起点坐标, 第二点:终点坐标, 第三点, 第四点为空 // 圆弧:第一点:圆弧所在圆所属矩形的左上角, 第二点:圆弧所在圆所属矩形的左右下角,第三点:圆弧起点;第四点:圆弧终点 // 圆弧方向为逆时针,对于圆x3,y3,x4,y4重合
  可以编写一个绘制简单图元的绘图工具,方便用户绘制这些图元,绘制好的图元存成以上格式,存入到数据库中,以方便系统读入。

  一、自定义、实现符号类MyMarkerSymbol:
  1.类的定义:
  自定义符号需要实现以下四个接口:
  IMarkerSymbol
  ISymbol
  IClone
  IpersistVariant

  MyMarkerSymbol类定义为:
public class MyMarkerSymbol :IMarkerSymbol,ISymbol,IClone,IPersistVariant { public MyMarkerSymbol() { //base.New(); Class_Initialize_Renamed(); } } 构造函数,需将符号的角度传入。 public MyMarkerSymbol(double ange) { //base.New(); Class_Initialize_Renamed(); m_Angle = ange; } //成员变量 private int m_lPen; private int m_lOldPen; private int m_lHDC; private double m_Angle; private int m_SymbolIndex; private ESRI.ArcGIS.Display.IDisplayTransformation m_pDispTrans; private int m_lSize;
0
相关文章