コンストラクタ:
LayerオブジェクトはMapObjクラスから取得するか、次のように作成できます:
layerObj ms_newLayerObj(MapObj map, layerObj layer)
2番目の引数(オプション)を指定すると、新しく作成されるレイヤは既存のレイヤをもとに作成されます。レイヤの引数が与えられると、このレイヤの全メンバが新しく作成されるレイヤにコピーされます。
メンバ:
int numclasses (read-only)
int index (read-only)
int status (MS_ON, MS_OFF, MS_DEFAULT or MS_DELETE)
int debug
string classitem
string name
string group
string data
int type
int dump
double tolerance
int toleranceunits
int sizeunits
double symbolscale
double minscale
double maxscale
double labelminscale
double labelmaxscale
int maxfeatures
colorObj offsite
int annotate
int transform
int labelcache
int postlabelcache
string labelitem
string labelsizeitem
string labelangleitem
string tileitem
string tileindex
string header
string footer
string connection
int connectiontype
string filteritem
string template
int transparency
string styleitem
gridObj grid //グリッドとして定義されたレイヤでのみ有効(MS_GRATICULE)
int num_processing
string requires
string labelrequires
メソッド:
int set(string property_name, new_value)
オブジェクトのプロパティをnew_valueに設定します。エラーの場合 -1が返ります。
int draw(imageObj image)
単一レイヤを描画します。指定した場合、ラベルをキャッシュに入れます。
エラーの場合 -1が返ります。
int drawQuery(imageObj image)
単一レイヤの照会結果地図を描画します。
classObj getClass(int classIndex)
indexを与えてレイヤからclassObjを返します。(0=最初のクラス)
int queryByPoint(pointObj point, int mode, double buffer)
レイヤを地理座標(すなわち、ピクセルではありません)で指定されたポイントで照会します。
照会は、TEMPLATEに値が入っているクラス、または、所属するレイヤのTEMPLATEに値が入っているクラスに属するすべての形状に対して実行されます。 modeは欲しい結果数によって、MS_SIGLEまたはMS_MULTIPLEを指定します。 bufferを<=0としてマップファイルで設定したデフォルトのtolerance(ピクセル単位で指定)を使うか、一定の大きさのbuffer(地上の距離単位で指定)を使用できます。
形状が見つかった場合、MS_SUCCESSが返ります。何も見つからないか、何らかのエラーが発生した場合、MS_FAILUREが返ります。(何も見つからない場合のエラーメッセージは、PHPのエラー制御演算子’@’を使うと抑制できます)
int queryByRect(rectObj rect)
レイヤを地理座標(すなわち、ピクセルではありません)で指定された矩形を使って照会します。
照会は、TEMPLATEに値が入っているクラス、または、所属するレイヤのTEMPLATEに値が入っているクラスに属するすべての形状に対して実行されます。 形状が見つかった場合、MS_SUCCESSが返ります。何も見つからないか、何らかのエラーが発生した場合、MS_FAILUREが返ります。(何も見つからない場合のエラーメッセージは、PHPのエラー制御演算子’@’を使うと抑制できます)
int queryByShape(shapeObj shape)
レイヤを単一の形状に基づいて照会します。形状は現時点ではポリゴンでなければなりません。
形状が見つかった場合、MS_SUCCESSが返ります。何も見つからないか、何らかのエラーが発生した場合、MS_FAILUREが返ります。(何も見つからない場合のエラーメッセージは、PHPのエラー制御演算子’@’を使うと抑制できます)
int queryByFeatures(int slayer)
他のレイヤからの、先の結果セットに基づいて照会を実行します。結果セットは現時点ではポリゴンレイヤにもとづいていなければなりません。
形状が見つかった場合、MS_SUCCESSが返ります。何も見つからないか、何らかのエラーが発生した場合、MS_FAILUREが返ります。(何も見つからない場合のエラーメッセージは、PHPのエラー制御演算子’@’を使うと抑制できます)
int queryByAttributes(string qitem, string qstring, int mode)
レイヤを現在の地図範囲と交差する形状によって照会します。qitemは照会対象の項目(属性)で、qstringは一致する式です。
照会は、TEMPLATEに値が入っているクラス、または、所属するレイヤのTEMPLATEに値が入っているクラスに属するすべての形状に対して実行されます。
この関数では、レイヤのFILETER/FILTERITEMが無視されることに注意してください。
modeは欲しい結果数によって、MS_SIGLEまたはMS_MULTIPLEを指定します。 形状が見つかった場合、MS_SUCCESSが返ります。何も見つからないか、何らかのエラーが発生した場合、MS_FAILUREが返ります。(何も見つからない場合のエラーメッセージは、PHPのエラー制御演算子’@’を使うと抑制できます)
int setFilter(string expression)
レイヤのFILETR式を設定します。
string getFilter()
レイヤのFILETR式を取得します。
string getProjection()
投影の文字列表現を返します。投影が何も設定されていない場合、MS_FALSEが返ります。
int setProjection(string proj_params)
レイヤの投影と座標系を設定します。引数は、PROJ.4パラメータをカンマ区切りでつなげた単一文字列で与えます。
int setWKTProjection(string proj_params)
setProjection() と同様ですが、入力がOGC WKTの投影定義文字列となります。
int getNumResults()
このレイヤの最後の照会結果数を返します。
resultCacheMemberObj getResult(int index)
レイヤオブジェクトからindexによってresultCacheMemberObjを返します。indexは0からnumresults-1の範囲です。
妥当なオフジェクト、またはindexが不正な場合FALSE(0) が返ります。
int open()
getShape() を使うためにレイヤを開きます。
MS_SUCCESSまたはMS_FAILUREが返ります。
int whichshapes(rectobj)
空間と任意属性ベースの検索を行います。
この関数は候補地物を検索あるいは描画できるように用意しています。(例えばnextshapeを利用)
戻り値はMS_SUCCESSあるいはMS_FAILUREです。
shpeobj nextShape()
msWhichShapes関数を呼び出した後、実際の地物を取得します。
MS_SUCCESSまたはMS_FAILUREが返ります。
例:$map = ms_newmapobj("d:/msapps/gmap-ms40/htdocs/gmap75.map");
$layer = $map->getLayerByName('road');
$status = $layer->open();
$status = $layer->whichShapes($map->extent);
while ($shape = $layer->nextShape())
{
echo $shape->index ."<br>\n";
}
$layer->close();
void close()
open() で開いたレイヤを閉じます。
shapeObj getFeature(int tileindex, int shapeindex)
レイヤからインデックスによってshapeObjを取得します。
tileindexはタイル・シェープファイルに対してのみ使用します。(tileindexは例えばgetResult() から返されるresultCacheMemberObjから取得します)
タイル・シェープファイル以外のデータに対しては、単にtileindex = -1を渡します。
shapeObj getShape(int tileindex, int shapeindex)
v5.0より非推奨となりました、変わりにgetFeature()を利用ください。
rectObj getExtent()
レイヤの範囲を取得します。
レイヤのEXTENTプロパティを設定された場合は、その値を戻ります。設定されない場合は、レイヤをopens/closesして、範囲を取得します。
この処理については、shapefilesの場合はすぐに取得できますが、その他のファイルフォーマットあるいはデータソースの場合は、コスト高い処理になる可能性があります。
この関数は二つインスタンス以上同時実行しても安全です。
int addFeature(shapeObj shape)
レイヤに新しいフィーチャを追加します。エラーの場合 -1が返ります。
int getMetaData(string name)
レイヤのmetadataエントリーをnameによってフェッチします。nameと一致するエントリーがない場合 ”” が返ります。検索時の大文字小文字は区別されます。
int setMetaData(string name, string value)
レイヤのmetadataエントリーを設定します。MS_SUCCESSまたはMS_FAILUREが返ります。
int removeMetaData(string name)
レイヤのmetadataエントリーを削除します。MS_SUCCESSまたはMS_FAILUREが返ります。
string getWMSFeatureInfoURL(int clickX, int clickY, int featureCount, string infoFormat)
WMSのGetFeatureInfo URLを返します。(WMSレイヤでのみ機能します) clickX、clickYは照会する位置を、イメージの左上が (0,0) となるピクセル座標で指定します。
featureCountは返ってくる結果の数です。
infoFormatには、結果をどのような形式で要求するかを指定します。リモートサーバの能力に依存します。MapServer WMSサーバは”MIME”のみサポートします。(まもなく”GML.1”をサポートする予定です)
レイヤがWMSレイヤでない場合、または照会できない場合、”” が返り、ワーニングが出ます。
String getItems()
項目リストを返します。まずopen() を呼ぶ必要があります。
boolean setProcessing(string)
レイヤのprocessingリストに文字列を追加します。
layer->num_processingは1増えます。
例:$oLayer->setprocessing("SCALE_1=AUTO");
$oLayer->setprocessing("SCALE_2=AUTO");
String getProcessing()
processing文字列を含む配列を返します。
boolean clearProcessing()
processing文字列をすべてクリアします。
string executeWFSGetfeature()
WMSレイヤでGetFeature要求を実行し、作成された一時GMLファイル名を返します。エラーの場合、空文字列が返ります。
int applySLD(string sldxml, string namedlayer)
レイヤオブジェクトにSLDドキュメントを適用します。
sldドキュメントとレイヤとのマッチングにはレイヤのnameが使われます。 namedlayer引数を渡した場合(オプション)、これと一致するsldのNamedLayerが、このレイヤのスタイルとして使われます。
SLDサポートに関する詳細は他のドキュメントを参照してください。
int applySLDURL(string sldurl, string namedlayer)
レイヤオブジェクトにURLで参照されるSLDドキュメントを適用します。
sldドキュメントとレイヤとのマッチングにはレイヤのnameが使われます。 namedlayer引数を渡した場合(オプション)、これと一致するsldのNamedLayerが、このレイヤのスタイルとして使われます。
SLDサポートに関する詳細は他のドキュメントを参照してください。
string generateSLD()
レイヤで見つかったすべてのクラスをもとにSLD XML文字列を返します。
int moveclassup(int index)
クラスindexで指定したクラスの、レイヤ配列内での順番を繰り上げます。 MS_SUCCESSまたはMS_FAILUREが返ります。
例:layer->moveclassup(1) は、クラス1を0番目に繰り上げ、0番目のクラスを1番目に移動します。
int moveclassdown(int index)
クラスindexで指定したクラスの、レイヤ配列内での順番を繰り下げます。 MS_SUCCESSまたはMS_FAILUREが返ります。
例:layer->moveclassdown(0) は、クラス0を1番目に繰り下げ、1番目のクラスを0番目に移動します。
classObj removeClass(int index)
クラスindexで指定したクラスを削除して、クラスのコピーを戻ります。エラーの場合はNULLを戻ります。
注:この操作で、クラスのIndexは再構成になります。 numclassesプロパティで、既存クラスの数を取得できます。
boolean isVisible()
現時点レイヤ表示されているかどうか判断します。戻り値はMS_TRUE/MS_FALSEです。