LAYERSパラメータの並び順に無理やり対応させたがuDigかMapserverに裏切られた気分

id:yellow_73:20090129#p1 のつづき。
マップファイルのオーダ通りに描画するようにしていました。
WMS 1.1.1 では

A WMS shall render the requested layers by drawing the leftmost in the list bottommost,
the next one over that, and so on.

と言ってます。
LAYERSパラメータの並び順に従って描画した方がいいんだろうけど、やらんでもいいかな、でもやってもいいかな、という揺れる乙女心を呼び起こします。LAYERSパラメータの並び順に従わなければならない。
で、やらなかったのが前回。QGIS, ArcMap などはLAYERSの並び順を変えられないから、まあいいやと。
しかし、ここに来て、uDigではLAYERSの並び順を変えられることが発覚。あと、Mapserverはwms_nameにレイヤ名をカンマ区切りで書くので、任意の並び順にできるのを思い出す。
ということで、LAYERSの並び順に従う改変をやってみました。問題は、id:yellow_73:20090128#p1 で述べた通り「デフォルトレイヤを最上層に持って来たい」ので、LAYERSの並び順に従わないレイヤも実現しないといけない。
そこで、"wms_layers_position"というメタデータを勝手に追加しました。DEFAULTレイヤに限って、"upper"なら上層に持っていき、"lower"なら下層に持っていくようにします。"upper"でも"lower"でもないか、指定が無い場合は、LAYERSに含まれているならその並び順に従い、LAYERSに含まれない場合は、下層に持っていく、というふうにしました。
で、あれやこれやと半日がかりで改変して、やったーできたー、じゃあuDigで見てみるベーと、uDigを立ち上げました。
「…uDig、逆やん」
Mapserver は先に出現したLAYERオブジェクトを下層に起きます(先に描画する)。uDigは、GetCapabilitiesで引っ張って行ったレイヤの並び順を見て、先に出現したLayer要素を上層(後で描画する)に置いてしまいます。
どっと疲れましたorz
uDigが裏切ったのか、Mapserverが裏切ってるのか、仕様書を見てみることにします。