p.mapper-4.2 on Windows [Chapter 2]

ms4wでp.mapper-4.2.0で三重県の地図は表示できましたか?
config_default.xmlmap 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定義の中にサブ定義のWEBLAYERが入ります。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 プラグインを起動せさて、設定します。
設定例
Mapserver Export例
な感じで出力すれば、なんと簡単にmap fileができてしまいました。
ただ、IMAGEPATHやIMAGEURLなどeditorで開いて修正しなければなりませんので、完全自動ではないのですが、90%位は楽ができるはずです。

ここで作成したmap fileshp2imgコマンドで画像出力してチェックすればOKです。

次回は、p.mapperー4.2.0にプラグインを追加して、UIをちょこっといじってcoolにしてみましょう。

Comments are closed.

Social Widgets powered by AB-WebLog.com.