forked from MapServer/MapServer-documentation
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMIGRATION_GUIDE.txt
More file actions
689 lines (495 loc) · 28.8 KB
/
MIGRATION_GUIDE.txt
File metadata and controls
689 lines (495 loc) · 28.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
.. _migration:
*****************************************************************************
MapServer迁移指南
*****************************************************************************
:Last Updated: 2011-05-04
.. contents:: Table of Contents
:depth: 2
:backlinks: top
MapServer 5.6 到 6.0 的迁移
==============================
本部分阐述了从MapServer 5.6.x版本(或更早版本)迁移到6.0版本必须要修改的一些设置,同时也会介绍一些新特性的信息。
------------------------------------
Mapfile的变化 - 语法解析
------------------------------------
6.0版本扩展了一些表达式解析能力。这既增强了其功能性,同时又引进了一些不便:
逻辑表达式
* 正则表达式现在用字符串来描述(比如使用'^a'而不是/^a/)
* 使用~来进行大小写敏感的正则表达式比较,使用~*来进行大小写不敏感的正则式比较
* 大小写不敏感的字符串比较的操作符是=*
文本分类表达式在6.0版本中可以使用了。这使得可以对数字进行更好的格式化,但同时亦表明属性数据和字符之间需要使用字符串操作符进行连接。
* Old/bad: TEXT ([area] acres)
* New (option 1)/good: TEXT ([area] + ' acres')
* New (option 2)/good: TEXT '[area] acres'
另外,您现在可以控制小数点的位置、小数点后的位数。
详情请参见 http://mapserver.org/development/rfc/ms-rfc-64.html 和 http://trac.osgeo.org/mapserver/ticket/3736 。
------------------------------
Mapfile的变化 - 标注样式
------------------------------
随着控制标注绘制风格需求的增加,很明显单纯无止境地扩展labelObj已经很不现实了。在6.0版本中,我们引进了标注样式的概念,即一个labelObj对象中的labelObj对象。样式可以用来给标注添加标志或者边框元素,形成一种类似于kinda的注记图层。这样做的一个好处是一步即好。也就是说你可以绘制复杂的路径并同时遮蔽起来。是不是很酷?并且,你可以绑定支持的属性值到styleObj对象的属性
这样导致的一个结果是,参数BACKGROUNDCOLOR、BACKGROUNDSHADOWCOLOR和BACKGROUNDSHADOWSIZE被删除了。要在6.0版本中绘制一个标注框,你需要:
::
LABEL
...
STYLE # a shadow
GEOMTRANSFORM 'labelpoly'
COLOR 222 222 222
OFFSET 2 2
END
STYLE # bbox
GEOMTRANSFORM 'labelpoly'
COLOR 255 255 255
OUTLINECOLOR 0 0 0
END
END
从长远来看,这变得更加灵活了,尽管有一点繁琐。
---------------------------------------
Mapfile的变化 - 标注的MAXOVERLAPANGLE
---------------------------------------
:ref:`RFC60` 引进了一个新的关键字MAXOVERLAPANGLE在重叠的字符标注上过滤出ANGLE
FOLLOW。该选项在6.0版本中默认启用,MAXOVERLAPANGLE的默认值为22.5度。
正如 :ref:`RFC60` 中显示的,可以通过设置MAXOVERLAPANGLE为0来回归到6.0以前版本的风格,从而使用maxoverlapangle = 0.4*MS_PI(180度的40%即为72度)。
---------------------------------
核心改变 - 渲染引擎升级
---------------------------------
MapServer 6.0的渲染后端已经经过了重构,使得用户可以使用所有渲染驱动(GD、AGG、PDF、SVG等)的特性。
* PDF的支持已经通过cairo库的支持实现,旧的对非开源的pdflib库的依赖已经被移除。
* SVG的支持已经通过cairo库的支持实现,MapServer原生的SVG库已经被移除。
* AGG的支持已经被默认编译进来(没有外部依赖关系),并且作为png和jpeg的默认输出渲染引擎。
* GD的支持仅限于PC256 imagemodes,亦即png或gif。其作为gif的默认输出渲染引擎。
* SWF(flash)的支持已经被废弃。
* 构建MapServer现在需要添加libpng、libjpeg和giflib头文件,可以安装这些库文件的开发包(-devel)。
* 设置了ANGLE参数之后,所有的符号都会逆时针旋转对应的角度,之前的版本会顺时针旋转。
* 充填了矢量符号的多边形在边界处可能不会很好地排列。对于填充类型的符号,使HATCH标志代替矢量斜对角标志。
* 渲染引擎之间的不一致性已经得以消除。对标志的放置位置有很高要求的用户应该对此予以检查,因为标志的大小、宽度或者标志与直线间的空格会出现一些细微的变化。
* 点图层上的样式段,如果没有设置相关的标志的话,不会产生输出,而在旧版本里会产生单个像素。可以使用一个椭圆标志来代替。
------------------------------
Mapfile的变化 - 线样式
------------------------------
所有的线样式现在必须在图层的STYLE中指定。
以下的参数或关键字从SYMBOL移到了STYLE:
PATTERN POSITION GAP LINECAP LINEJOIN LINEJOINMAXSIZE
SYMBOL和STYLE参数或关键字在5.0版本中被重命名为PATTERN。
SYMBOL和TYPE型的绘图线已经被移除。
由于LINECAP三角形不AGG或Cairo所支持,因此不再可用。对直线使用填充的矢量三角形标志并设置开始和结束为GEOTRANSFORM型,然后设置ANGLE为AUTO,可以获得与之类似的三角形端点效果。这种方法只对直线起作用,对破折号不起作用。
-----------
CGI的变化
-----------
运行时替代如今 *必须* 在替代之前进行有效性验证(过去的版本中为可选)。这可以在图层中或网络VALIDATION块中通过图层的元数据标记来设置。详情参见#3522号票(ticket)。
所有的地图查询相关模式(例如NQUERYNMAP、ITENQUERYNMAP等)已经被废弃,代之的是使用“qformat”参数。该参数使用输出格式名称或者mime/type作为值,并且可以来处理一系列的查询结果。例如:
...&mode=nquerymap&... would become ...&mode=nquery&qformat=png24&...
-----------------
OGC网络服务
-----------------
OGC网络服务现在默认被关闭。若你想要像在MapServer的5.6及之前版本中的那样启动它们,可以在
::WEB块中添加以下的元数据::
"ows_enable_request" "*"
令见: http://mapserver.org/development/rfc/ms-rfc-67.html
------------------------------
Mapfile的变化 - WCS元数据
------------------------------
记住只有“wcs_*”和“ows_*”前缀的元数据块才作用在OGC的WCS服务中,这样可以避免困扰。在之前的版本中使用“wms_*”前缀的元数据入口来表达,而在新版本中已经被废弃。
--------------------------------------------------------
Mapfile的变化 - Ability to escape single/double quotes
--------------------------------------------------------
现在可以在字符串和逻辑表达式中对单引号和双引号进行转义,例如:
::
NAME "RO\"AD" # 在限定字符串双引号中的双引号
NAME 'RO\'AD' # 在限定字符串单引号中的单引号
FILTER ('[CTY_NAME]' = 'Ita\'sca') # 包含单引号的逻辑表达式
注意:转义符号(反斜杠符)只在后面紧跟着 ",' 和 \ 的时候才起作用。
Windows的用户们请注意:如果你们的由双引号或单引号限定的路径字符串以反斜杠 \ 结尾,你需要对最后一个反斜杠转义。
::
SHAPEPATH "C:\ms4w\shapefiles\"
# 应该改为 。。。
SHAPEPATH "C:\ms4w\shapefiles\\"
---------------------
PHP地图脚本的变化
---------------------
* 要求PHP 5.2.0或以上版本。
* PHP地图脚本现在使用异常机制来报告错误,所有的错误都可以被捕捉到。
* 可以像其它php对象一样设置地图对象的属性,亦即如 myObj->myProperty = 10。
注意:set/setProperty方法依然可用。
* 所有的对象构造方法会在构建失败时抛出异常。
* 对象可以使用php的“new”操作符创建,亦即如:
$myShape = ms_newShapeObj(MS_SHAPE_LINE); // or
$myShape = new shapeObj(MS_SHAPE_LINE);
注意:"ms_newSymbolObj()"和"new symbolObj"是不同的:
- ms_newSymbolObj()返回一个新建或已存在的标志的id。
- new symbolObj()返回一个symbolObj。你不必使用getSymbolObjectById()来获得该对象。
* 可复制的对象在复制时需要使用PHP的clone关键字,没有其他的复制方法。
* 已经被移除的类的属性包括:
- mapObj:imagetype,imagequality,interlace,scale,transparent
- classObj:maxscale,minscale
- layerObj:labelsizeitem,labelangleitem,labelmaxscale,labelminscale,maxscale,minscale,symbolscale,transparency
- legendObj:interlace,transparent
- scalebarObj:interlace,transparent
- symbolObj:gap,stylelength
- webObj:minscale,maxscale
* 已经被移除的类的方法包括:
- projectionObj:free
- lineObj:free
- pointObj:free
- rectObj:free
- shapeObj:free,union_geos
- symbolObj:free,getstylearray
- imageObj:free
- outputFormatObj:getformatoption,setformatoption
- shapefileObj:free
- layerObj:getFilter,getShape
* referenceMapObj添加了新的属性:marker,markername,markersize,maxboxsize,minboxsize
* shapeFileObj在被销毁时可以自动关闭或写入保存。(在脚本的最后或者显式地使用一个unset()方法)
* layerObj->clearProcessing()方法现在返回一个空值(void)。
* mapObj->queryByIndex():addToQuery参数的默认行为,之前不能正常使用,现在可以了。
* 返回值为MS_SUCCESS/MS_FAILURE的方法有:
- symbolObj:setPoints,setPattern
- scalebarObj:setImageColor
- outputFormatObj:validate
- layerObj:setProcessing,addFeature,draw
- mapObj:moveLayerUp,moveLayerDown,zoomRectangle,zoomScale,setProjection, setWKTProjection,setLayersDrawingOrder
* 失败时返回空值(NULL)的方法:
- classObj:clone
- styleObj:clone
- layerObj:nextShape,getExtent
- mapObj:clone,draw,drawQuery getLayerByName,getProjection
* 返回一个空数组的方法:
- symbolObj:getPatternArray
- layerObj:getItems,getProcessing,getGridIntersectionCoordinates
- mapObj:getLayersIndexByGroup,getAllGroupNames,getLayersDrawingOrder,getAllLayerNames
-----------------------
MapScript所有特性
-----------------------
图层的查询结果处理机制已经重新生效了,在5.4和5.6版本中引进的一些问题也得以解决。resultsGetShape和getFeatures方法已被移除。如今你得使用重新设计的getShape方法来操作图层上的图元。该方法将一个resultObj对象作参数,并返回一个shapeObj对象。典型用法(以Perl为例):
::
$layer->queryByRect($map, $map->{extent}); # layer is still open
for($i=0; $i<$layer->getNumResults(); $i++) {
$shape = $layer->getShape($layer->getResult($i));
print "$i: ". $shape->getValue(1) ."\n";
}
$layer->close();
resultObj对象是对管理结果集数据的封装。
请使用新的resultObj对象来单独地操作查询的图元:
$layer->open();
$shape = $layer->getShape(new mapscript::resultObj(1));
$layer->close();
详情参见http://mapserver.org/development/rfc/ms-rfc-65.html。
------------
OUTPUTFORMAT参数
------------
当读取mapfile文件设置OUTPUTFORMAT参数时,若出现问题会弹出一个错误窗口,而之前这些问题是在后台被慢慢修复的。比如,JPEG格式使用RGBA色彩模式时会触发一个错误,之前遇到此类状况会自动转换为RGB色彩模式。
默认的输出文件格式和MIME类型经过了全新的组织。
* png 格式: AGG/PNG (image/png)
* jpeg 格式: AGG/JPEG (image/jpeg)
* gif 格式: GD/GIF (image/gif)
* png8 格式: AGG/PNG8 (same as AGG/PNG, but with 256 color quantization applied)
(image/png; mode=8bit)
* png24 格式: AGG/PNG (for backwards compatibility) (image/png; mode=24bit)
* pdf 格式: CAIRO/PDF (application/x-pdf)
* svg 格式: CAIRO/SVG (image/svg+xml)
* GTiff 格式: GDAL/GTiff (image/tiff)
* kml 格式: KML (application/vnd.google-earth.kml++xml)
* kmz 格式: KMZ (application/vnd.google-earth.kmz)
-------
栅格数据
-------
* 移除了对使用非GDAL库渲染栅格影像的支持。现在栅格影像图层或WMS图层的绘制依赖于GDAL库。
* 不再支持EPPL的栅格影像图层。
-------------------
被废弃的特性
-------------------
- 由于Flash/SWF输出与新架构不兼容,所以移除了对其的支持。对Flash/SWF的支持需要进行大量的工作(比如,资助)。
- 由于"CONNECTIONTYPE MyGIS"项目不再进行维护,并且现在可以使用个更好的方式来使用MySQL数据源(例如通过OGR),所以移除了对其法让支持。
MapServer 5.4 到 5.6 的迁移
==============================
本部分阐述了MapServer从 5.4.x 版本(或更早版本)向 5.6 版本迁移(亦即后向兼容性)所要注意的变化,同时也会介绍一些新特性的信息。
----------------------------------------------------
MapScript 的与单条查询相关的变化
----------------------------------------------------
在 RFC-52 中,MapServer 对查询的执行过程进行了改进,现在是执行单条语句而不是之前的两条。对 CGI 程序来说,这个改进不可见;但是 MapScript 的脚本必须将 layer.getShape() 方法修改为 layer.resultsGetShape()。
参见: http://mapserver.org/development/rfc/ms-rfc-52.html
(注意:5.6.0-beta1中的新 resultsGetShape() 方法暂时还不能用于 PHP MapScript)
------------------------
WFS 1.1 坐标轴方向
------------------------
The axis order in previous versions of the WFS specifications was to always use
easting (x or lon ) and northing (y or lat). WFS 1.1 specifies that, depending
on the particular SRS, the x axis may or may not be oriented West-to-East, and
the y axis may or may not be oriented South-to-North. The WFS portrayal operation
shall account for axis order. This affects some of the EPSG codes that were commonly
used such as ESPG:4326. The current implementation makes sure that coordinates
returned to the server for the GetFeature request reflect the inverse axis orders
for EPSG codes between 4000 and 5000.
-------------------------------------------------
Change of mime-type for the imagemap outputformat
-------------------------------------------------
RFC 36 added support for templated outptformats, but this new feature
was not available for WMS GetFeatureInfo ouptut (see ticket #3024).
In MapServer 5.6 this has been resolved by implementing lookup of output
formats for query templates by mime-type. However this caused a conflict
for the text/html mime-type between the actual text/html query
templates and the preconfigured imagemap outputformat which also used the
text/html mime-type.
In order to resolve this conflict, the mime-type of the imagemap outputformat
has been changed to "text/html; driver=imagemap". This is unlikely to cause
much side-effects to existing applications, but the change is documented here
just in case.
MapServer 5.2 到 5.4 的迁移
==============================
This section documents the changes that must be made to MapServer
applications when migrating from version 5.2. (or earlier versions)
to 5.4 (i.e. backwards incompatibilities), as well as information
on some of the new features.
--------------------------------------------------------
New requirements for mapfiles, symbolsets and templates
--------------------------------------------------------
Due to some potential security vulnerabilities that were uncovered in previous
versions of MapServer, RFC-56 introduced a number of changes to tighten
access control on mapfiles and templates and limit the risk of leaking
arbitrary file contents. These changes were introduced in version 5.4.0,
and were also backported to v5.2.2 and 4.10.4.
The new requirements are as follows:
* The MAP and SYMBOLSET keywords must be added to any mapfile and symbolset
that did not contain them already.
* All MapServer templates must be updated to contain the "MapServer Template"
magic string on the first line. This string can be embedded
in a commment depending on the template formet and the whole line will
be skipped in the output generation. e.g.
* In HTML: <!-- MapServer Template -->
* In JavaScript: // MapServer Template
See also: http://mapserver.org/development/rfc/ms-rfc-56.html
MapServer 4.10 到 5.0 的迁移
===============================
This section documents the changes that must be made to MapServer
applications when migrating from version 4.10.x (or earlier versions)
to 5.x (i.e. backwards incompatibilities), as well as information
on some of the new features.
----------------------------------------------------
Mapfile changes
----------------------------------------------------
Attribute Bindings: In an effort to stem the tide of keyword overload
and add functionality MapServer 5.0 supports a new method of binding
feature attributes to STYLE and LABEL properties. In the past keywords
like ANGLEITEM or LABELSIZEITEM were used, now you denote the attribute
in the context of the property being bound. For example, to bind an
attribute to a label size you'd do:
::
LABEL
...
SIZE [mySizeItem]
END
The []'s denote a binding (as with logical expressions). The following
keywords are no longer supported and their presence will throw an error:
* Layer: LABELANGLEITEM, LABELSIZEITEM
* Style: ANGLEITEM, SIZEITEM
The following properties can accept bindings:
* Style: angle, color, outlinecolor, size, symbol
* Label: angle, color, outlinecolor, size, font, priority
Colors may be given as a hex value (e.g. #FFFFFF) or an RGB triplet
(e.g. 255 255 255).
Layer Transparency: The values for the TRANSPARENCY parameter have always
been backwards and in an effort to resolve that the parameter has been
renamed OPACITY. TRANSPARENCY is still recognized by the mapfile parser
but is depricated and should be avoided.
Scale Parameters: MapServer's handling of scale has long been a source
for confusion. The values use in a layer MINSCALE are really the denominators
from a representative fraction (e.g. 1:24000). To help clarify this all
scale parameters are now end with DENOM. So MINSCALE => MINSCALEDENOM,
SYMBOLSCALE => SYMBOLSCALEDENOM, and so on. The mapfile parser still
recognizes the older keywords but they are depricated and should be avoided.
----------------------
Symbol file changes
----------------------
Symbol Style: STYLEs are used within a symbol definition to store dash
patterns for line symbolization. However, there is potential confusion
with the style object that is used within class definitions. To resolve
that confusion the symbol STYLE parameter has been renamed PATTERN. The
symbol file parser will still recognize the STYLE keyword but it is
depricated and should be avoided.
----------------------------------------------------
Styling/Symbolgy changes
----------------------------------------------------
Prior to MapsServer 5.0, if a pixmap symbol was used in style on a Line
Layer, the symbol was used as a brush to draw the line. In MapServer 5.0,
it is possible to draw the pixmap symbol along the line (Note that this
was available using a true type symbol). To achieve this, the user needs
to use the parameter GAP with it's pixmap symbol definition in the symbol
file. The GAP represents the distance between the symbols. If the GAP is not
given, the pixmap symbol will be used as a brush.
----------------------------------------------------
AGG rendering changes
----------------------------------------------------
see `the AGG rendering specifics`_ for the changes relating to the addition
of the `Antigrain Geometry`_ rendering engine.
.. _`the AGG rendering specifics`: http://mapserver.gis.umn.edu/docs/howto/agg-rendering-specifics
.. _`Antigrain Geometry`: http://www.antigrain.com
---------------------------------------------------
URL configuration changes
---------------------------------------------------
Previous versions of the MapServer CGI program allowed certain parameters
to be changed via a URL using a cumbersome syntax such as
map_layer_0_class_0_color=255+0+0 which changes the color in one classObj.
Not only was this cumbersome for users but also from a code maintenance
perspective since we had to maintain seperate loaders for URL-based config
and file-based config. RFC-31 attempts to streamline both by migrating to
a single object loading function that can be used with strings (either in
MapScript or via URL) or with files.
So, in the past you have to change parameters one-at-a-time. Now you can
pass chunks of mapfiles (with security restrictions) to the CGI interface.
The map_object notation is still necessary to identify which object you
want to modify but you can change multiple properties at one time. Note
that you can use either a '_' or a '.' to seperate identifiers.
Example 1, changing a scalebar object:
::
...&map.scalebar=UNITS+MILES+COLOR+121+121+121+SIZE+300+2&...
Example 2, changing a presentation style:
::
...&map.layer[lakes].class[0].style[0]=SYMBOL+crosshatch+COLOR+151+51+151+SIZE+15&...
Example 3, creating a new feature
::
...&map_layer[3]=FEATURE+POINTS+500000+1000000+END+TEXT+'A+test+point'+END&...
The variable identifies an object uniquely (by name or index in the case of
layerObj's and classObj's). The value is a snippet of a mapfile. You
cannot create new objects other than inline features at this point.
-------------------------------------------------
Validation patterns for mapserv attribute queries
-------------------------------------------------
Attribute queries (qstring) done via the mapserv CGI could theoretically
be used for SQL injection.
No exploit has been reported, but in order to mitigate the risk, a new
validation pattern mechanism has been added in 5.0.
In the case of qstring attribute queries, the qstring_validation_pattern
layer-level metadata is required for qstring queries to work. The metadata
value is a regular expression that the qstring value must match otherwise
mapserv produces a fatal error. A fatal error is also produced if qstring
is used but qstring_validation_pattern is not provided.
Note that similar validation pattern mechanism has been available for
%variable% substitutions since version 4.10, but in this case it is optional.
The pattern for %myvar% is provided via a metadata called
myvar_validation_pattern.
----------------------------------------------------
SWIG MapScript (Python, Perl, CSharp, Java) changes
----------------------------------------------------
Layer Transparency: The layerObj transparency parameter is now called
opacity. Scripts setting that value in code must be updated.
Symbol Style: the symbolObj style parameter is now called pattern. MapScript
does not allow direct modification of that parameter. In Swig-based languages
the symbolObj method setStyle is now called setPattern. In PHP/MapScript, the
methods setStyle and getStyle are now called setPattern and getPattern.
A new msGetVersionInt() function returning the current MapServer version in
integer format has been added to facilitate version checks in the future.
Given version x.y.z, it returns (x*0x10000 + y*0x100 + z). For instance, for
v5.0.0 it will return 0x050000 (note the hexadecimal notation).
-----------------------
CSharp related changes
-----------------------
The MapScript C# classes are now placed into the OSGeo.MapServer namespace
The scripts should use the fully qualified names of the classes or apply
the
::
using OSGeo.MapServer;
or the corresponding language equivalent.
----------------------------------------------------
PHP/MapScript changes
----------------------------------------------------
Layer Transparency: The layerObj transparency parameter is now called
opacity. The old "transparency" name is deprecated and will be removed in
a future release. Scripts getting/setting that value in code must be updated.
All occurences of scale, minscale, maxscale, etc... parameters have been
deprecated and renamed with a "denom" suffix (e.g. minscale becomes
minscaledenom, etc.). The deprecated parameters will be removed in a
future release. Scripts getting/setting them must be updated.
SymbolObj style has been renamed pattern. The old "stylelength" parameter
and setStyle() and getStyleArray() methods have been deprecated and
"patternlength", setPattern() and getPatternArray() should be used
instead. They will be removed in a future release.
layer.getShape(int tileindex, int shapeindex)) has been deprecated and
renamed to layer.getFeature(int shapeindex [, int tileindex = -1]) to
match the SWIG MapScript equivalent. Note that the order of the arguments
is reversed since tileindex is optional in getFeature().
class.getExpression() and layer.getFilter() have been deprecated and
renamed to class.getExpressionString() and layer.getFilterString() to
match what we have in SWIG MapScript. The String suffix in the function
name also more clearly indicates that the return value is not an object
but a string representation of it.
A new ms_GetVersionInt() function returning the current MapServer version in
integer format has been added to facilitate version checks in the future.
Given version x.y.z, it returns (x*0x10000 + y*0x100 + z). For instance, for
v5.0.0 it will return 0x050000 (note the hexadecimal notation).
----------------------------------------------------
OGC Web Map Service (WMS)
----------------------------------------------------
Required Parameters for GetMap and GetFeatureInfo: previously, MapServer
did not check for the following parameters when responding to an OGC:WMS
GetMap or GetFeatureInfo request:
- SRS
- FORMAT
- WIDTH
- HEIGHT
- STYLES or SLD / SLD_BODY
- BBOX
That is, a GetMap request would process without error if these were not
passed by the WMS client.
A compliant OGC:WMS 1.1.0 and 1.1.1 REQUIRES these parameters. This may
affect OGC:WMS client requests who were not passing these values. Ticket
1088 fully documents this issue. In addition to WMS compliance, this was also
decided that by adding this constraint, if an OGC client request (as described
earlier) breaks something, people should fix their client anyway since
if they change WMS vendor, they will have problems as well.
----------------------------------------------------
OGC Web Feature Service (WFS)
----------------------------------------------------
----------------------------------------------------
OGC Sensor Observation Service (SOS)
----------------------------------------------------
- The format of MAP/LAYER/METADATA/sos_describesensor_url
has been changed such that users now must format the value
per:
"sos_describesensor_url" "http://example.org/sml/%procedure%.xml"
This change has been made to clarify and unify the meaning of procedure
within SOS Server's context of a DescribeSensor request.
- Metadata associated with an observedProperty element's
swe:component value have been changed to support a URN
scheme, instead of the previous "sos_componenturl" metadata. The
"sos_componenturl" metadata is no longer supported. Instead,
"sos_observedproperty_authority" and "sos_observedproperty_version"
should be used to format the swe:component value.
----------------------------------------------------
Build Changes
----------------------------------------------------
MapServer's main include file has been renamed from "map.h" to "mapserver.h".
A new mapserver-config script has been created with the following options:
::
Usage: mapserver-config [OPTIONS]
Options:
[--libs]
[--dep-libs]
[--cflags]
[--defines]
[--includes]
[--version]
The shared and static link libraries for MapSserver have been renamed
libmapserver.x.y.so and libmapserver.a respectively.
The --enable-coverage configure option has been renamed to --enable-gcov
since the former name led users to think it might be related to enabling
support for WCS or Arc/Info coverages:
::
--enable-gcov Enable source code coverage testing using gcov
-----------------------------------------------------
准备废弃的特性
-----------------------------------------------------
Some features present in MapServer are likely to be removed in a future
release. Features might be headed for deprecation because:
- they have been replaced by a superior or more capable solution
- they have stopped being maintained
Users of these features should be prepared for these upcoming changes
and start adapting their mapfiles in consequence. If you have strong
and motivated objections as to the removal of one or more of these
features please open a discussion in the usual MapServer communication
channels.
Cartoline symbols: these were a hack to overcome GD weaknesses, and their
functionality is now supported by the AGG renderer. They have become poorly
supported in current MapServer versions. Keywords allowing for setting the
style of line joins and caps will be moved to the STYLE block.
RGB/RGBA output with GD: support for RGB and RGBA image types will likely not
be maintained anymore. PC256 will continue to be supported with GD, while RGB
and RGBA will liekly only be supported with AGG