2.2.9 电子海图系统解析及开发 海图显示 - 矢量符号描述语言

如题所述

第1个回答  2022-07-08

不同用途的灯标、锚地边界、岸上建筑物等物标在海图都有不同的符号,

符号所在画布大小为32767个单位(每一单位代表0.01毫米)。

S-52标准中,是用 矢量符号描述语言 (Vector Symbol Description Language)来定义这些符号形状的。这些符号被广泛用于电子海图中定义点、复杂的线型及填充复杂的图案。

矢量符号描述语言使用一支虚构的“笔”,上绘画,然后记录画笔移动的位置,最终形式电子海图所需的矢量符号。与屏幕坐标一样,画布坐标的原点(位置0,0)在图形的左上角,x坐标向右延伸,y坐标向下延伸。矢量符号描述语言画笔的颜色、大小、移动等都是通过指令实现的,其中:

画笔颜色'A',宽度为1个单位,移动到(1000, 1000),绘制垂直线段到(1000, 2000)。

画笔颜色'B',宽度为2个单位,移动到(1000, 1000),绘制线段到(1000, 2000),接着一直绘制到(2000, 2000),(2000, 1000),(1000, 1000),最终形成一个矩形。

进入多边形模式(PM0),绘制上个示例中的矩形(多边形最后自动首尾相连),最后退出多边形模式(PM2),用画笔颜色'B',50%的透明度,填充多边形。

以(100, 100)为圆心,150为半径构造一个圆。然后设置画笔颜色‘E',透明度为0%,填充该圆。重新设置画笔颜色'A',为圆描边。

从(100, 100)开始,画一条水平线到(200, 100);接着以(200, 100)为起点,以(200, 150)为圆心,顺序针画一个90度的圆弧,画笔移到圆弧的终点(将会是(250, 150));最后画一条直线到(250, 200)。

移动画笔从(500, 500)到(1000, 1000),方位为135度,沿该方向画一个符号(sample99),符号的转心位于(1000, 1000)处;接着从(1000, 1000),用颜色'C',宽度为3个单位的画笔画一条直线到(1000, 500)。

新建一个静态的工具类 S52Tools ,其中方法 DrawSymbol 实现上述指令:

调用过程及绘制结果如下:

相似回答
大家正在搜