ms4wでp.mapper-4.2.0で三重県の地図は表示できましたか?
config_default.xmlとmap fileを作成すれば、shapeファイルを簡単に表示できることがわかりました。
今回は、map fileを作成する方法を書きます。
map fileとは
map fileについては、Map abc -Mapserver自習メモ-に詳しく日本語で丁寧に解説されています。 私も活用させてもらってます。
map fileとは、MapServerを動かす上で絶対に必要なものであり、MapServerのcoreになります。
データの定義や描画、シンボル、QUERY等々のすべてを定義しているファイルと考えてください。
したがって、MapServerではmap fileを作成することが非常に重要になりますし、理解しておかなければWEB上にサービスを展開することもできません。(私は「動いてなんぼ!」精神が染みついているので、理解してないっす。。。)
いろんなサンプルを見たり、試行錯誤して理解していくことが重要だと思います。
map fileさえうまく作成できれば、shp2imgで画像出力はできまますし、下記のphp scriptを書けばブラウザーに表示することもできます。
<?php $mapfile = "map file nam"; //ここにmap file名を入れる $map = ms_newMapObj( $mapfile ); // load the mapfile $img = $map -> draw(); // draw the map $img_url = $img->saveWebImage(); // save img & get the URL echo "<IMG SRC='$img_url'>"; // display map with an IMG tag ?>
map fileを作る
デモで使ったpmapper_demo.mapや三重県のmie.mapをよ~~く眺めて見ると、
MAP 定義 PROJECTION |定義 END #PROJECTION WEB |定義 END #WEB REFERENCE |定義 END #REFERENCE LEGEND |定義 END #LEGEND SCALEBAR |定義 END #SCALEBAR OUTPUTFORMAT |定義 END SYMBOL |定義 END #SYMBOL LAYER |定義 END #LAYER END #MAP
という形になっています。コメントを書く場合は#以降がコメントになります。
xmlで記述したものmap fileも読み込めるようですが、今回は従来のmap fileを作っていきます。
それでは、順番に見ていきましょう。
MAP
必ずMAPで始まり、最後はENDで終わります。
MAP定義の中にサブ定義のWEBやLAYERが入ります。MAP定義の中で、重要な定義文は、
EXTENT 135.347801 33.682544 137.491510 35.305096 #マップの表示範囲 STATUS ON #ONの場合表示、OFFの場合は非表示 UNITS DD #表示マップの単位 DD:度 M,KM... などあり EXTENTと合わせる必要あり? # linux CentOSで表示させる #FONTSET "../../miemap/etc/fonts.txt" #SYMBOLSET "../../miemap/etc/symbols.txt" #SHAPEPATH "../../miemap/data" #windows FONTSET "../../etc/fonts.txt" #FONTの場所 SYMBOLSET "../../etc/symbols.txt" #別途定義したsymbolの場所 SHAPEPATH "../../mie_data" #shapeファイルの場所 #DEBUG ON #デバッグ機能を使うか?
この中で、EXTENTですが、新規にshapeファイルを表示させるには、表示範囲をあらかじめ取得する必要がありますね。
これは、MS4W-Shellでコマンドを入力すれば取得できます。
shpファイルの種類
> ogrinfo pmapper42_miemie_datamie_city.shp INFO: Open of `pmapper42_miemie_datamie_city.shp' using driver `ESRI Shapefile' successful. 1: mie_city (Polygon)
shpファイルのプロパティ情報
> ogrinfo -summary pmapper42_miemie_datamie_city.shp mie_city INFO: Open of `pmapper42_miemie_datamie_city.shp' using driver `ESRI Shapefile' successful. Layer name: mie_city Geometry: Polygon Feature Count: 29 Extent: (135.853184, 33.722858) - (136.988098, 35.257649) Layer SRS WKT: GEOGCS["GCS_JGD_2000", DATUM["Japanese_Geodetic_Datum_2000", SPHEROID["GRS_1980",6378137.0,298.257222101]], PRIMEM["Greenwich",0.0], UNIT["Degree",0.0174532925199433]] CN2: String (12.0)
このogrinfoコマンドでshpファイルの情報を取得できます。
PROJECTION
座標系の定義文です。
Projについては、yaskeyさんのGIS基礎知識を見てください。
WEB
WEBブラウザーに表示するためのDirectoryやtemplate、最大最小スケールの設定をします。
LinuxとWindowsで違いがあります。
WEB TEMPLATE "map.html" #Linux #IMAGEPATH "/var/www/html/tmp/ms_tmp/" #IMAGEURL "/tmp/ms_tmp/" #Windows IMAGEPATH "/ms4w/tmp/ms_tmp/" IMAGEURL "/ms_tmp/" QUERYFORMAT text/html MAXSCALE 1000000 MINSCALE 5000 END
REFERENCE
REFERENCEは概観図とでも訳すのでしょうか。ようは表示している地図の全体を表示して、どこを表示しているかの把握をするものですね。
これは、オプション機能です。
REFERENCE EXTENT 135.347801 33.682544 137.491510 35.305096 IMAGE "../../images/reference.gif" SIZE 200 150 COLOR -1 -1 -1 OUTLINECOLOR 255 0 0 STATUS ON MARKER 0 MARKERSIZE 0 MINBOXSIZE 3 MAXBOXSIZE 0 COLOR -1 -1 -1 OUTLINECOLOR 255 0 0 END # Reference
SCALEBAR
SCALEBARは縮尺表示です。これは、オプション機能です。
SCALEBAR STATUS embed TRANSPARENT off #透過表示するか? INTERVALS 5 #区分は? SIZE 200 3 UNITS kilometers #単位は? COLOR 250 250 250 OUTLINECOLOR 0 0 0 BACKGROUNDCOLOR 100 100 100 STYLE 0 POSTLABELCACHE true LABEL COLOR 0 0 90 #OUTLINECOLOR 200 200 200 SIZE small END # Label END # Reference
OUTPUT
WEBブラウザーへのマップ出力のフォーマットの定義です。
マニュアル等で確認してください。
OUTPUTFORMAT NAME png DRIVER "GD/PNG" MIMETYPE "image/png" IMAGEMODE RGB FORMATOPTION INTERLACE=OFF TRANSPARENT OFF END
SYMBOL
SYMBOLは、map fileの中に定義しても大丈夫ですが、多くのSYMBOLを使ったりする場合などを考えてSYMBOLSETで別ファイルで定義した方が良いようです。
オプション的に考えた方が良いでしょう。
LAYER
LAYERの定義でshapeファイルを描画します。
# mie_city LAYER NAME "行政界" #LAYERの名前 TYPE POLYGON #shapeファイルのタイプ STATUS ON #表示する DATA "mie_city" #shapeファイル名 METADATA "DESCRIPTION" "行政界" #"RESULT_FIELDS" "mie_city" END TRANSPARENCY 100 # 透過の%は? CLASS NAME "行政界" STYLE SIZE 7.0 COLOR -1 -1 -1 #255 255 255 OUTLINECOLOR 255 0 0 END #TEMPLATE "ttt_query.html" END TOLERANCE 5 END # Layer
その他の定義
p.mapperでは使わないのですが、LEGENDという凡例の定義もあります。
そのほか、Map abc -Mapserver自習メモ-にまとめて書かれています。ぜひ参考にしてください。
QGISを使ってmap fileを作る
「MapServerを使って地図(shapeファイル)を表示させるのって、すご~~~く面倒!!」と思われたでしょう。がしかし、大丈夫です。あっという間に作成する方法があるのです。
Quantum GISを使えば一発でできるのです。
早速上記HPよりダウンロードして、インストールしてください。QGISはすばらしいOpen Source Projectです。これが無償で使えるなどとは考えられないくらいの機能です。ArcGISにも負けないくらいのGISソフトウェアです。
インストールは、ダウンロードサイトのStandalone Installerをセットアップしてください。本ブログ執筆時でver1.7.4です。
日本語対応OKです。これを使いこなせばArcMAPがいりませんね。
-
インストール後起動してください。
-
メニュー > プラグイン > プラグイン管理のダイアログを表示させます。
-
MapServer ExportをチェックしてOK。
-
ツールバーにMapServer Exportが追加されます。
後は、QGISにshapeファイルを読み込んで、Layerの順番やシンボル、colorの設定をします。基本的にArcGISを使われている方は、直感的に使えると思います。
MapServer Export プラグインを起動せさて、設定します。
設定例
な感じで出力すれば、なんと簡単にmap fileができてしまいました。
ただ、IMAGEPATHやIMAGEURLなどeditorで開いて修正しなければなりませんので、完全自動ではないのですが、90%位は楽ができるはずです。
ここで作成したmap fileをshp2imgコマンドで画像出力してチェックすればOKです。
次回は、p.mapperー4.2.0にプラグインを追加して、UIをちょこっといじってcoolにしてみましょう。
最近のコメント