TOPシステム開発> レイヤー・クラスの追加
PHPプロ!マガジン
MapServerマスターへの道

第2回:MapServerで地図を表示してみよう

著者:アシアル  森川 穣   2007/1/22
前のページ  1  2  3  次のページ
レイヤー・クラスの追加

   先ほどのリスト2では1つのレイヤーとその中に1つのクラスしかありませんでしたが、複数のレイヤー・クラスを設定することができます。今回テーブルが1つないので、複数レイヤーを追加する意味がありません。まずは、複数のクラスを設定してみましょう。

   クラスを複数設定する場合、EXPRESSION という属性を使用してレイヤー内で場合分けを行います。リスト3に示す例では、文京区のみを違うクラスとして定義して描画します。
リスト3
1 MAP
2
3 #### 省略####
4
5     LAYER
6     NAME “main”
7     CONNECTIONTYPE POSTGIS
8     CONNECTION “user=postgres password=pass dbname=phppro_sample host=localhost”
9     DATA “the_geom FROM gyosei”
10     TYPE POLYGON
11     STATUS ON
12         CLASS
13         EXPRESSION ([aac] != 13105)
14         COLOR 255 255 255
15         OUTLINECOLOR 0 0 255
16         SYMBOL 0
17     END
18     CLASS
19         EXPRESSION ([aac] = 13105)
20         COLOR 128 128 128
21         OUTLINECOLOR 0 0 255
22         SYMBOL 0
23         END
24     END
25 END

   文京区の“gyosei.aac”の値は13105なので、文京区以外の場合、文京区の場合をそれぞれクラスとして定義します。その結果は図2のようになります。

図2
図2
(画像をクリックすると別ウィンドウに拡大図を表示します)

   このようにEXPRESSIONを使用してそれぞれの場合分けを行うのですが、MapServerの処理体系は上から順にクラスのEXPRESSIONの条件を適用し、合致するものがあればそれで描画する、というようになっています。そのため、1つめのクラスにEXPRESSIONを適用しない場合、すべてのデータが1つめのクラスで描画されてしまうので注意が必要です。

   逆に最後のクラスにEXPRESSIONを適用しない場合は、それまでのクラスの条件に合致しないすべての場合、となります。

   次に、新しく鉄道のラインデータを国土数値情報ダウンロードサービスのページからダウンロードして、鉄道のレイヤーを作成しましょう。ダウンロードとSQLの作成はすでに説明したので、詳細については省略します。鉄道のファイルを変換すると2つのシェープファイルが作成されます。

   N02-05_EB02が鉄道の情報で、N02-05_EB03が駅の情報になります。今回は鉄道の情報のみを使用します。リスト4に示すように鉄道の情報のレイヤーを追加することができます。

リスト4
1 MAP
2
3     ### 省略###
4
5     LAYER
6         NAME “main”
7         CONNECTIONTYPE POSTGIS
8         CONNECTION “user=postgres password=pass dbname=phppro_sample host=localhost”
9         DATA “the_geom FROM gyosei”
10         TYPE POLYGON
11         STATUS ON
12         CLASS
13             EXPRESSION ([aac] = 13105)
14             COLOR 128 128 128
15             OUTLINECOLOR 0 0 255
16             SYMBOL 0
17         END
18         CLASS
19             COLOR 255 255 255
20             OUTLINECOLOR 0 0 255
21             SYMBOL 0
22         END
23     END
24
25     LAYER
26         NAME “sub”
27         CONNECTIONTYPE POSTGIS
29         DATA “the_geom FROM railroad”
30         TYPE LINE
31         STATUS ON
32         CLASS
33             COLOR 128 128 128
34             OUTLINECOLOR 0 0 255
35             SYMBOL 0
36         END
37     END
38
39 END

   この結果を図3に示します。このように情報ごとにレイヤーを追加していきます。

図3
図3
(画像をクリックすると別ウィンドウに拡大図を表示します)

前のページ  1  2  3  次のページ

アシアル株式会社 森川 穣
著者プロフィール
アシアル株式会社
森川 穣

高校まではPC・プログラミングとは無縁の生活を送っていたが、大学時代にプログラミングに目覚める。当時、主にC言語でのプログラミングを行っていた。大学4年時にアシアル株式会社にアルバイトとして入社。そこで初めてPHP言語でのプログラミングを覚え、会社に深く参画していく。「極める!PHP」や「超極める!PHP」、「WEB+DB PRESS」等、多数執筆。現在はオープンソースWeb地図作成ソフトMapServerを使った開発に力を入れている。


INDEX
第2回:MapServerで地図を表示してみよう
  簡単な地図の作成
レイヤー・クラスの追加
  FILTER