ここのことはなかったことにするかもしれない

仕事がらみの記事を主として扱いますが、あくまで個人ブログです。2013年以前の記事は https://yellow-73.hatenablog.com/ にあります。

MapServerのWMS 1.3でEPSG:6668におけるaxis orderの問題を回避するたったひとつの方法

ごめんなさい、「○○個の方法」って言いたいだけです。

JGD 2011について、緯度経度がEPSG:6668、平面直角が6669-6687、UTM(51N-55N)が6688-6692、とそれぞれ登録されました。

で、問題になるのが axis order。http://d.hatena.ne.jp/yellow_73/20120813あたりに書いてた、「仕様違反」というよりか、準拠の例外という方がカドが立たないでしょうか、これが適用されない確率がとっても高い(実際、適用されてなかった)。

これは、http://d.hatena.ne.jp/yellow_73/20110607で示したとおり、サーバ側がWMS 1.3の仕様通りにしてもクライアント側が仕様通りにリクエストを投げてくれないことがあって、「WMSサーバから変な画像が返却される」と言われてしまうわけです。

サーバが悪いだのクライアントが悪いだのとか言うつもりではなく、この現状をどう回避するか、が問題だととらえてます。


これを解決する「たったひとつの方法」(WMS 1.1を使えばいい、というのはおいときます)は、*ビルドからやり直し*です。

mapaxisorder.h というファイルで、ビット単位で見て、ビットが立っているところの空間参照系は、南北軸-東西軸の順となる、としています。

これのもとは mapaxisorder.csv で、1行ごとにビットを立てるEPSGコードを記載しています。順不動のようです。

また、mapaxisorder.hには「このファイルは編集するな」と書いてます。あと探すとすぐ見つかりますが、mapaxisorder.csvからmapaxisorder.hを作成するにはmapaxisorder.shを使います。

まとめます。

  1. mapaxisorder.csvに1行追加して"6668"を入れます
  2. mapaxisorder.shを実行し、mapaxisorder.hを生成します
  3. コンパイルしなおします

Proj.4の設定変更も忘れずに

MapServer使う場合には、PostGISの投影変換は使ってないので、epsgファイルをいじるだけでいいです。

4612をそのまんま複写して6668に変更すればOKです。

結論

やはしWMS 1.1使った方がいいと思うよ。