MS RFC 14:内联特性的相对坐标

日期

2006/04/10

作者

史蒂夫·莱姆

联系

明尼苏达州第纳尔的史蒂夫·莱姆

状态

完成

版本

MAPServer 4.10

描述:当前可以使用像素坐标绘制特征,并通过在图层定义中设置“转换为假”来绘制这些特征。但是,坐标是相对于图像(0,0)的左上角的,这使得如果图像大小可以改变(例如,通过WMS),则无法将版权声明等内容锚定到图像的其他角。

所提出的解决方案扩展了图层转换参数的行为,该参数将告诉MapServer使用图像的ul角的替代原点。

C结构变化

一个也没有。将使用现有结构、成员和常量。可能应该给位置枚举一个不同的起始值,以避免与ms_true和ms_false等变量发生冲突。

映射文件更改

这个功能实际上是面向内联特性的。但是,我希望保持门户打开,以支持来自任何数据源的功能。建议的更改将扩展层转换参数的使用。当前它采用值true或false(默认值为true)。我建议扩展到也采用任何标准的显式位置值。因此,对于典型的内联特性,您将看到一个类似以下的层:

LAYER
  NAME 'copyright'
  TYPE POINT
  TRANSFORM LL
  FEATURE
    POINTS 10 -10 END
    TEXT 'Copyright © MNDNR'
  END
  CLASS
    ...
  END
END

在mapscript中,语法也同样简单:

$layer->{transform} = $mapscript::MS_LL;
... draw as normal ...

受影响的文件

  • map.h=>更改位置枚举的起始值

  • mapfile.c=>添加对附加转换值的检测

  • mapprimitive.c=>添加一个新的偏移形状函数,该函数将以map hight、width和shapeobj作为输入。

  • mapdraw.c=>更新形状绘图代码以使用新函数(基本上是所有if(layer->transform)检查的一个else条件)。

测试

  • python套件:不需要

  • MSAutoTest套件:将开发一个测试所有9个位置的映射文件

向后兼容性问题

不适用,新功能。“假”转换的值表示ul…应该注意的是,通过更改位置枚举的起始值,可能会破坏用整数引用位置的脚本(编程实践不佳)。我希望这是一个遥远的可能性,值得冒险。

臭虫识别码

1547

投票历史

通过