忍者ブログ
忘れっぽい開発者の備忘録。基本的に自分用メモです。
2017.12.18,Mon
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2011.02.01,Tue
 まだまだよく分かってないMapServerのMapFileの、EXPRESSION部分について。
うちの会社だけかもしんない事も書いてあるので、鵜呑みにしないように。
 
■基本情報
・Oracleなど、SQL文を実行する場合、大抵はCLASSで判断させる。
・EXPRESSION (…)の…部分にwhere文を書く
・ORやANDも使える。
・テーブルの、Aというカラムを条件として指定したい場合は[A]または'[A]'と表記しないと認識できない
 
■その他
・EXPRESSIONをMapFileではなく、プログラムでsetする方法
※かなり端折って書いてます。
 
①EXPRESSIONの条件の内容を指定する
MapFileに EXPRESSION ('[A]' != {0}) と書いてある事前提です。 
 
※プログラム例
ASP.NET(C#)
mapObj map = new mapObj("aaa.map");
layerObj layer = map.getLayer(i);
classObj cls = layer.getClass(j);
string exp = cls.getExpressionString();
exp = string.Format(exp, "a");
cls.setExpression(exp);
 
 
結果、MapFileに EXPRESSION ('[A]' != 'a') と入ることになる。 
 
②EXPRESSIONの条件そのものを指定する
MapFileに EXPRESSION ({0}) と書いてある事前提です。

※プログラム例
ASP.NET(C#)
mapObj map = new mapObj("aaa.map");
layerObj layer = map.getLayer(i);
classObj cls = layer.getClass(j);
string exp = cls.getExpressionString();
exp = string.Format(exp, "'[A]' != 'a'");
cls.setExpression(exp);
 
 
結果、MapFileに EXPRESSION ('[A]' != 'a') と入ることになる。 
 
③MapFileには表記せずに、プログラム上でsetする。
MapFileに EXPRESSION ({0}) などと書いてなくてもOK。

※プログラム例
ASP.NET(C#)
mapObj map = new mapObj("aaa.map");
layerObj layer = map.getLayer(i);
classObj cls = layer.getClass(j);
string exp = cls.getExpressionString();
cls.setExpression("'[A]' != 'a' OR '[B]' != 'b'");
 
 
結果、MapFileに EXPRESSION ('[A]' != 'a' OR '[B]' != 'b') と入ることになる。 

■注意事項
ANDやORを使ってsetExpressionしたい時は③を使用しないと無理っぽい。
恐らくAND、ORが入った状態でFormatを使うからおかしくなる。
MapFile上でsetするなら③とまったく同じことなので、問題なし。
 
とりあえずはこれで終了。

PR
 HOME 
カレンダー
11 2017/12 01
S M T W T F S
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
ブログ内検索
Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]