Mapservは入力として以下に示すCGI変数の形で入力を受け付ける。
BUFFER [distance]
マップファイルと同じ座標系での距離であり、MAPXYとともに新しい地図の領域を作成するために用いられる。
CONTEXT [filename]
コンテキストファイルのパス。パスはマップファイルの相対パスもしくはURLパスである(詳細は以下にある"CGIを経由したマップコンテキストサポート"を参照のこと)。
ID [id-string]
デフォルトではMapServerはユニークなセッションIDをシステム時刻とプロセスIDを元に生成する。このパラメータはデフォルトの値を上書きする。
IMG
ユーザのクリックを記録するために用いられるインラインの地図画像に関する名称である。実際に渡される2つの変数はimg.xとimg.yである。
CGIアプリケーションではこれは特別な変数である。サンプルの利用法を参照のこと。
IMGBOX [x1] [y1] [x2] [y2]
画像において(ピクセルでの)ドラッグされたボックスの座標値。最も多く利用されるのはJavaベースンフロントエンドとともにである。
IMGEXT [minx] [miny] [maxx] [maxy]
存在しているインライン画像の空間領域であり、これはユーザがブラウザで見ている領域でもある。
IMGSHAPE [x1 y1 x2 y2 x3 y3 …]
画像の座標系で与えられるシェイプ。
任意のポリゴンシェイプがクエリのために用いられる。複数のインスタンスは単にシェイプの各部分として足しあわされるので、穴つきのシェイプを構築することも可能である。 NQUERYおよびNQUERYMAPモードで使用される。
IMGSIZE [cols] [rows]
(ピクセルでの)存在しているインライン画像のサイズ。
IMGXY [x] [y]
(ピクセルでの)1回のマウスクリックの座標値。最も多く利用されるのはJavaベースンフロントエンドとともにである。
LAYER [name]
マップファイルにあるレイヤの名称。 mapservへ送られたレイヤ名はレイヤのSTATUSがONに設定される。
LAYERS [name name …]
ONに設定したいレイヤ群の名称。レイヤ名は空白で区切る必要がある。
バージョン4.4以降では: 'LAYERS=all'を渡すと自動的に全てのレイヤがONとなる。
MAP [filename]
利用されるマップファイルのパス。 CGIディレクトリに対する相対パス。
MAPEXT [minx] [miny] [maxx] [maxy] , MAPEXT (shape)
生成される地図の空間的な領域。
別のオプションとしてシェイプを指定することもできる。この場合、地図の領域は選択されたシェイプの領域が設定される。クエリと共に使用される。
MAPSIZE [cols] [rows]
(ピクセルでの)生成される画像のサイズ。ユーザに出力する地図の解像度を動的に変更させるような場合に有用である。
MAPSHAPE [x1 y1 x2 y2 x3 y3 …]
地図の座標系でのシェイプ。
クエリにおいて用いられる任意のポリゴンシェイプ。複数のインスタンスは単にシェイプの各部分として足しあわされるので、穴つきのシェイプを構築することも可能である。 NQUERYおよびNQUERYMAPモードで使用される。
MAPXY [x] [y] , MAPXY (shape)
シェイプファイルと同じ座標系でのポイントであり、地図の領域を構築する際にバッファもしくはスケールと結び付いて用いられる。
別のオプションとしてシェイプを指定することもできる。この場合、地図の領域は選択されたシェイプの領域が設定される。クエリと共に使用される。
MINX | MINY | MAXX | MAXY [number]
新しい地図もしくはクエリの空間領域の最大/最小座標値。このパラメータの組はMAPEXTの一部である。
MODE [value]
オペレーションのモード。以下のオプションがサポートされる(全てのクエリモードは地図のみのモードもまたサポートする、例えばITEMQUERYMAP、これはリストにはないが)。
- BROWSE
- 完全にインタラクティブなインターフェースとして地図(およびインタラクティブなページ)が生成される。これがデフォルトのモードである。
- QUERY
- 地図上でのクリックをトリガとする空間検索(最も近いものを探す)。
- NQUERY
- 地図上でのクリックもしくはユーザが選択したボックスをトリガとする空間検索(全てのものを探す)。
- ITEMQUERY
- レイヤのQSTRINGの使用をトリガとする属性データのテキスト検索。最初にマッチしたものが返される。
- ITEMNQUERY
- レイヤのQSTRINGの使用をトリガとする属性データのテキスト検索。マッチしたものすべてが返される。
- FEATUREQUERY
- SLAYERから指定された一つの地物を用いて他のレイヤへのクエリを行う空間検索。
- FEATURENQUERY
- SLAYERから指定された複数の地物を用いて他のレイヤへのクエリを行う空間検索。
- ITEMFEATUREQUERY
- レイヤのQSTRINGの使用をトリガとする属性データのテキスト検索。最初にマッチしたものが返される。検索されるレイヤはSLAYERパラメータで定義される。この検索結果は他の検索可能なレイヤに適用される(QLAYERパラメータの使用が制限される)。
- ITEMFEATURENQUERY
- レイヤのQSTRINGの使用をトリガとする属性データのテキスト検索。マッチしたものすべてが返される。検索されるレイヤはSLAYERパラメータで定義される。この検索結果は他の検索可能なレイヤに適用される(QLAYERパラメータの使用が制限される)。
- MAP
- 生成された地図が返される。<img … >タグ内で用いられる。
- REFERENCE
- 生成されたリファレンスマップが返される。<img … >タグ内で用いられる。
- SCALEBAR
- 生成されたスケールバーが返される。<img … >タグ内で用いられる。
- LEGEND
- 生成された凡例が返される。<img … >タグ内で用いられる。
- ZOOMIN
- モードをZOOMDIR=1のBROWSEモードに切替える。
- ZOOMOUT
- モードをZOOMDIR=-1のBROWSEモードに切替える。
- INDEXQUERY
- SHAPEINDEXとTILEINDEXパラメータの値を元に地物を捜し出す。SHAPEINDEXは必須であり、TILEINDEXはオプションでありタイルされたシェイプファイルレイヤでのみ用いられる。
- COORDINATE
- 自明なとおり。
QLAYER [name]
クエリレイヤ。マップファイルに表れるクエリ対象となるレイヤの名称。もし指定されいなければ全てのレイヤが検索される。
QITEM [name] (optional)
属性テーブルでのレイヤでのクエリを実行する対象の属性の名称。このパラメータはオプションであり、属性クエリのQSTRINGと結びつけられて使用される。
QSTRING [expression]
属性クエリ: クエリ関数に渡されるクエリ文字列。
QUERYFILE [filename]
BROWSEもしくはNQUERYモードで使用される。このオプションは通常の処理の前に読み込むクエリファイルを指定する。 BROWSEモードではこれにより通常のマップの代わりにクエリマップが結果として得られる。パンニングおよびズーム中に地物をハイライトしたいままにしたい場合に有用な機能である。 NQUERYモードではそのクエリを用いた通常の表現に用いられるテンプレートへのアクセスを得ることができる。すなわちクエリマップおよび属性情報にアクセスしたことになる。 SAVEQUERYオプションを参照のこと。
REF
ユーザのクリックを記録するために用いられるインラインのリファレンスマップ画像に関する名称。実際に渡されるのは2つの変数ref.xとref.yである。
CGIアプリケーションでは、リファレンスマップが使用される場合、これは特別な変数となる。サンプルで使用している例を参照のこと。
REFXY [x] [y]
リファレンスマップにおける一回のクリックの(ピクセルでの)座標値。 Javaベースンフロントエンドで利用される。
SAVEQUERY
いずれかのクエリモードと共に用いられる場合に、これは連続するオペレーションで使用できるようクエリ結果を一時ファイルとして保存するようにMapserverに伝える(QUERYFILEを参照のこと)。クエリを永続化するのに有用である。
SCALE [number]
作成されるマップのスケール。 mapxyとともに用いられる。値は実際のスケールを表す分数の分母部分の値として与えられる。例えば、1:24,000のスケールにおいては24000を用いる。
SEARCHMAP
クエリを用いてパンニングおよびズームするインターフェースを可能とする。これは、直前のマップに通常の方法でクエリが機能するよりも新しいマップのコンテンツについての情報が欲しい場合だろう。検索マップが指定された場合、新しいマップが生成され、その領域がクエリレイヤに用いられる。 NQUERYモードのみで有効である。
SHAPEINDEX [index]
インデックスクエリで用いられる(INDEXQUERYと結び付いて)。
SLAYER [name]
選択レイヤ。地物クエリモードにおいて用いられるレイヤの名称。選択レイヤはポリゴンレイヤでなければならない。選択されている地物はユーザに表示できる。
TILEINDEX [index]
タイルされたシェイプファイルレイヤにおいて、インデックスクエリで用いられる(INDEXQUERYと結び付く)。
ZOOM [number]
新しいマップを生成する際に適用されるズーム値。値は0以上であればズームインとなり、0であればパンニングとなり、0以下であればズームアウトとなる。 2は"2倍のズームイン"を意味する。
ZOOMはZOOMDIRとZOOMSIZEの組み合わせての短縮形として用いられる。
ZOOMの値はMapserverのコンパイル時に組み込まれるMINZOOM/MAXZOOM(デフォルトで-25/25)の設定の制限を受ける。
ZOOMDIR [1 | 0 | -1]
ズームの指示。上記を参照。
ZOOMSIZE [number]
ズームの絶対的な大きさ。 ZOOMDIRと共に使用される。
ZOOMDIRはMapServerへとコンパイル時に組み込まれるMAXZOOM(デフォルトで25)の制限をうける。
ROSA-アプレット特有のもの
注:ROSA-アプレットの開発とメンテナンスもう停止しています。
ROSAアプレットパラメータはCGI MapServerのバージョン3.6で追加された。このJavaアプレットはより直感的なユーザーインターフェースをMapserverへ提供する。 MapToolsのサイトで ROSAアプレットについての詳細な情報 は提供されている。
もし正しい値が設定されていれば、パラメータは他のインターフェースおよびツールでも使用可能である。 2つのパラメータがCGIアプリケーションへと渡されなければならないことに注意。
INPUT_TYPE (auto_rect | auto_point)
INPUT_TYPEパラメータはMapserverへと渡される座標が長方形またはポイントデータのどちらn解釈されるかを判別するのに必要である。
INPUT_COORD [minx,miny;maxx,maxy]
ROSAアプレットは常に座標のペアを埋める。ポイントの場合(input_type=auto_point)、最小と最大の座標は同一となる(Mapserverは最小値を使用する)。
URL経由でマップファイルのパラメータを変更する
バージョン3.3以降、URLから仮想的にマップファイルの値を変更することが可能になっている。
このための文法はかなり前進であり、使用されているMapserverのバージョンに依存しています。
一つ潜在的な機能、URLでMapfileのパラメータをリアルタイムで変更できます。
MapServer version >= 5
MapServer CGI旧バージョンは、やっかいな文法でパラメータを変更できます、例:map_layer_0_class_0_color=255+0+0、classObjの色を変更する例です。その為、一回で一つパラメータしか変更できません。
今、Mapfileのかたまりを一括(セキュリティ制限範囲内)CGIインタフェースに転送できます。map_object表記は何を変更するのを示します。注:区切りとして'_' 或いは'.' を利用でいます。
サンプル1: scalebarオブジェクトの変更:
...&map.scalebar=UNITS+MILES+COLOR+121+121+121+SIZE+300+2&...
サンプル2: 表示スタイルの変更
...&map.layer[lakes].class[0].style[0]=SYMBOL+crosshatch+COLOR+151+51+151+SIZE+15&...
サンプル3: フューチャー新規作成
...&map_layer[3]=FEATURE+POINTS+500000+1000000+END+TEXT+'A+test+point'+END&...
サンプル4: webオブジェクトマルチパラメータ設定
...&map_web=imagepath+/ms4w/tmp/ms_tmp/+imageurl+/ms_tmp/
サンプル5: マップサイズ設定
...&map_size=800+400
MapServer version < 5
MapServer V5以前の場合、 いかなる値もマップファイルで用いられる階層を使用して表現することができる。 マップがレイヤを含んでおり、そのレイヤがクラスを含み、そのクラスがラベルを含み、そのラベルがCOLORを有している。この階層はアンダースコアで区切ってMapserverのキーワードを繋げることで表現される。例えば、1つのクラスだけが定義されている"lakes"と言う名称のレイヤの色を変更するには、変数の名称として"map_lakes_class_color"を用い、"0 0 255"のような色を割り当てることができる。レイヤはインデックスで参照することもできるし(例えばmap_layer_0…)、上記のように名前で参照することもできる。レイヤのクラスはインデックスで参照される(例えば map_layer_0_class_2)。もしそのレイヤに1つのクラスのみがある場合には、インデックスは省略される。これらの変数は常に"map_"で始まる。割り当てられる値はマップファイルの文法にあわせなければならない。
このメカニズムを利用してインラインの地物を定義することも可能である。これはマップファイルへ追加するような場合のみである。レイヤのパラメータを編集および変更をすることができるが、新しいレイヤを作成することはできない。インラインの地物については、最初に地物を作成し、それからそれを組み立てる必要がある。しかしながら、その地物が属するレイヤは存在していなければならない。ここにwebuserレイヤに地物を追加するGETリクエストの一部がある:
. . . &map_webuser_feature=new&map_webuser_feature_points=12345.6789+12345.6789&map_webuser_feature_text=My+House!& . . .
"map_webuser_feature=new"は新しい地物をwebuserに対して作成する。このレイヤの全ての連続する地物への呼び出しは新しい地物を修正する。追加の地物の作成の手順を繰り返すこともできる。これは実際には(ポイントや長方形といった)ごく少数のデータを意図している。
ひとつの可能性として非常に強力な利用法には、オンザフライでクラスの式を変更してしまうものも含んでいる。とりあえず、やってみよう。