インストール (Scientific Linux 6.4)

  1. PostGIS のインストール を参考に EPEL を yum のパッケージ取得元に追加する
  2. あとは
    $ sudo yum -y install mapserver
  3. インストールの確認
    # /usr/libexec/mapserver 
    This script can only be used to decode form results and should be initiated as a CGI process via a httpd server.
    CGI 経由で呼ばれていないというエラーが正しく表示された

Apache から呼び出す

  1. mapserver を cgi-bin に配置する
    $ cd /var/www/cgi-bin/
    $ sudo ln -s /usr/libexec/mapserver 
    $ sudo chmod 755 mapserver
    $ ls -la /var/www/cgi-bin/
    合計 8
    drwxr-xr-x. 2 root root 4096 11月 24 20:14 2013 .
    drwxr-xr-x. 6 root root 4096 11月 12 22:47 2013 ..
    lrwxrwxrwx. 1 root root   22 11月 24 20:14 2013 mapserver -> /usr/libexec/mapserver
  2. http.conf の編集
    $ grep cgi-bin -r /etc/httpd/conf
    で、どこに cgi-bin 関連の設定があるか調べる。普通に /etc/httpd/conf/httpd.conf だった。
    Symbolic link と CGI の実行を許可する
     ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     
     #
     # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
     # CGI directory exists, if you have that configured.
     #
     <Directory "/var/www/cgi-bin">
     #    AllowOverride None
     #    Options None
         Options FollowSymLinks Includes ExecCGI
         AllowOverride All
         Order allow,deny
         Allow from all
     </Directory>
    
  3. Apache を自動起動するようにする
    $ sudo /sbin/chkconfig httpd --level 35 on
    $ sudo /sbin/service httpd start
  4. Apache 経由で mapserver を呼んでみる
    apache01.png
     
    mapfile がないというエラーが 正しく 表示された
  5. mapserver (httpd) が、socket 通信をするのを許可する
    • GUIで設定
      # yum -y install policycoreutils*
      # /usr/bin/system-config-selinux
      httpd_can_network_connect を on にする
      apache02.png
       
    • CUIの場合
      # /usr/sbin/setsebool httpd_can_network_connect true
      でうまくいくか試してみる。このフラグはリブートすると元に戻る。
      これでうまくいくようなら永続化する
      # /usr/sbin/setsebool -P httpd_can_network_connect true
      しばらく処理が終わらないけどビビらないように
    • 今どき SELinux を無効化するという選択肢はありえない

Postgis に格納されている地理空間情報を画像化する

mapfile

MAP

NAME [name]名称
IMAGETYPE [type]出力フォーマット。gif, png, jpeg, wbmp, gtiff, swf
EXTENT [minx] [miny] [maxx] [maxy]表示範囲
SIZE [x] [y]出力サイズ
IMAGECOLOR [r] [g] [b]背景色。TRASNPARENT ON の場合透過色
TRANSPARENT [flag]背景色を透過色として用いるかどうかのフラグ。on, off
FONTSET [filename]フォント
LAYERレイヤ
LEGEND凡例
WEBWEBオブジェクト
PROJECTION投影法

PROJECTION

PROJECTION
  "init=epsg:4326"
END

どのレイヤも同じ投影法なら設定不要。epsg は小文字。/usr/share/proj/epsg を参照することを示している。Linux ではファイル名は case sensitive

LAYER

NAME [name]名称
STATUS [status]レイヤの表示状態。on, off, default
TYPE [type]データ形式。point, line, polygon, circle, annotation, raster, query, chart
CONNECTIONTYPE [type]接続形式。local, sde, ogr, postgis, oraclespatial, wms
CONNECTION [con]データベース接続文字列
DATA [data]データ。filename, sde parameter, postgis select/from, oracle select/from
PROCESSING [param]処理オプション。oracle, postgis で接続プール :: PROCESSING "CLOSE_CONNECTION=DEFER"
FILTER [where]データの絞り込み条件。where節 Mapserver 7 から LAYER の FILTER句は where 句ではなくなった → where句について
OFFSITE [r] [g] [b]透過色
TRANSPARENCY [0〜100]レイヤの透過度
CLASSクラス
TEMPLATE [file]CLASS TEMPLATE
PROJECTION投影法

CLASS

NAME [name]名称。凡例には表示されない
BACKGROUNDCOLOR [r] [g] [b]背景色
COLOR [r] [g] [b]描画色
EXPRESSION [string]このクラスの表示条件。データ属性の参照 [属性名]。使える演算子 =, >, <, <=, >=, =, or, and, lt, gt, ge, le, eq, ne, length()
MAXSCALE [double]このクラスが表示される最大スケール。デフォルトは ∞
MINSCALE [double]このクラスが表示される最小スケール。デフォルトは 0
SYMBOL [symbol]シンボル。name : シンボル名。filename : gifまたはpng画像ファイル
STYLEスタイル。ラベルだけのレイヤでも空の STYLE が必要
LABELラベル

STYLE

ANTIALIAS [flag]文字と線をアンチエイリアスするか。true, false
BACKGROUNDCOLOR [r] [g] [b]背景色
COLOR [r] [g] [b]描画色
OUTLINECOLOR [r] [g] [b]輪郭色
WIDTH [px]輪郭線の幅。デフォルト 1
SYMBOL [symbol]シンボル。name : シンボル名。filename : gifまたはpng画像ファイル

where句について

Postgis に格納されているPOINTを別レイヤに表示する

SYMBOL

ラベル

LABEL

ANTIALIAS [flag]文字と線をアンチエイリアスするか。true, false
TYPE [type]bitmap, truetype
FONT [font]フォント名 (fonts.list で定義したフォント名)
SIZE [px]フォントサイズ
COLOR [r] [g] [b]描画色
OUTLINECOLOR [r] [g] [b]アウトライン色
SHADOWCOLOR [r] [g] [b]影の色
SHADOWSIZE [x] [y]影のオフセット
FORCE [flag]ラベルが重なっても表示するかのフラグ。true, false。デフォルト false
POSITION [position]ラベルの位置。ul (UPPER-LEFT), uc, ur, cl, cc, cr, ll, lc, lr, auto
ENCODING [chaset]エンコーディング (内部的に iconv を使っているので、エンコーディング名は iconv と同じ)
WRAP [character]改行文字

WEB

WEB

TEMPLATE [path]テンプレートHTML
IMAGEPATH [path]地図画像の仮置きディレクトリ
IMAGEURL [url]IMAGEPATH の URL
MINSCALEDENOM [double]最小倍率
MAXSCALEDENOM [double]最大倍率

MINSCALEDENOM, MAXSCALEDENOM は、LAYER にも指定できる

テンプレートHTML

凡例・縮尺

SCALEBAR

ALIGN [align]left, center, right
BACKGROUNDCOLOR [r] [g] [b]スケールバーの背景色
COLOR [r] [g] [b]スケールバーの前景色
LABELラベル
STATUS [flag]on, off, embedded。on は、スケールバーの画像を生成する。embedded は、地図画像の上に重ね合わせる
STYLE [style]0, 1
TRANSPARENT [flag]on, off。描画していないところを透過色にする
UNITfeet, inches, kilometers, meters, miles,nauticalmiles。デフォルトは mile

LEGEND

KEYSIZE [x] [y]シンボルを囲む矩形の大きさ。デフォルト 20,10
KEYSPACING [x] [y]シンボルと名称の間隔。デフォルト 5,5
OUTLINECOLOR [r] [g] [b]凡例の枠の色
IMAGECOLOR [r] [g] [b]凡例の背景色
LABELラベル
STATUS [flag]on, off, embedded。on は、スケールバーの画像を生成する。embedded は、地図画像の上に重ね合わせる

レイヤコントロール、IMPORT

地図情報を WMS (Web Map Service) として公開する

Open Layers から WMS を使う

Map Cache

インストール

  1. Scientific Linux 6.4 の場合 (EPEL は設定済みとする)
  2. ライブラリの取得
    $ sudo yum -y install httpd-devel libpng-devel libjpeg-devel libcurl-devel
    $ sudo yum -y install pcre-devel pixman-devel
    $ sudo yum -y install fcgi-devel gdal-devel geos-devel sqlite-devel libtiff-devel libgeotiff-devel db4-devel
    $ sudo yum -y install git cmake make gcc gcc-c++
    $ sudo yum -y install memcached libmemcached libmemcached-devel
  3. ビルド
    $ git clone git://github.com/mapserver/mapcache.git
    $ cd mapcache
    $ mkdir build
    $ cd build
    $ cmake .. -DWITH_MEMCACHE=1 -DWITH_OGR=0
    -- * Configured options for the mapcache library
    --  * Mandatory components
    --   * png: /usr/lib64/libpng.so
    --   * jpeg: /usr/lib64/libjpeg.so
    --   * Curl: /usr/lib64/libcurl.so
    --   * Apr: /usr/lib64/libapr-1.so
    --  * Optional components
    --   * PIXMAN: /usr/lib64/libpixman-1.so
    --   * SQLITE: /usr/lib64/libsqlite3.so
    --   * Berkeley DB: disabled
    --   * Memcache: /usr/lib64/libaprutil-1.so
    --   * TIFF: disabled
    --   * GeoTIFF: disabled
    --   * Experimental TIFF write support: disabled
    --   * PCRE: disabled
    --   * Experimental mapserver support: disabled
    -- * Seeder Configuration Options:
    --   * GEOS: /usr/lib64/libgeos_c.so
    --   * OGR: disabled
    -- * CGI Configuration Options:
    --   * FastCGI: /usr/lib64/libfcgi.so
    -- * Apache Module support status:
    --   * Mapcache Version String: mod_mapcache/1.3dev
    --   * Module will be installed to : /usr/lib64/httpd/modules
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/kagyuu/mapcache/build
    $ make
    $ sudo make install
    Install the project...
    -- Install configuration: ""
    -- Installing: /usr/local/lib/libmapcache.so
    -- Installing: /usr/local/bin/mapcache_seed
    -- Removed runtime path from "/usr/local/bin/mapcache_seed"
    -- Installing: /usr/local/bin/mapcache.fcgi
    -- Removed runtime path from "/usr/local/bin/mapcache.fcgi"
    -- Installing: /usr/lib64/httpd/modules/mod_mapcache.so
    -- Removed runtime path from "/usr/lib64/httpd/modules/mod_mapcache.so"
    • OGR(GDAL) を無効化しないと、
      /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/libgdal.so: undefined reference to `PQresultStatus'
      /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/libgdal.so: undefined reference to `PQresultErrorMessage'
      /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/libgdal.so: undefined reference to `PQnfields'
      ...
      GDAL は、必須ではないからいいや
    • Memcached バインディングは、デフォルトでは無効なので有効化する
  4. 最後に ldconfig で、/usr/local/lib/libmapcache.so をシステムに認識させる
    Redhat 系では /usr/local/lib が、共有ライブラリのディレクトリになっていないので追加する。local.conf を追記する
    $ cat /etc/ld.so.conf.d/local.conf 
    /usr/local/lib
    共有ライブラリとして認識させる
    $ sudo ldconfig
    $ ldconfig -v | grep mapcache
    	libmapcache.so -> libmapcache.so
    $ ldd /etc/httpd/modules/mod_mapcache.so 
    	linux-vdso.so.1 =>  (0x00007fff6bd58000)
    	libmapcache.so => /usr/local/lib/libmapcache.so (0x00007f096ae59000)
    	libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007f096ac33000)
           ...

Apache への組み込み

  1. /etc/httpd/conf/httpd.conf にモジュールを追加
    LoadModule mapcache_module modules/mod_mapcache.so
  2. /etc/httpd/conf.d/mapcache.conf を作成
    • Apache2.2
      <IfModule mapcache_module>
        <Directory /opt/mapcache>
          Order Allow,Deny
          Order allow,deny
          Allow from all
         </Directory>
         MapCacheAlias /mapcache "/opt/mapcache/mapcache.xml"
      </IfModule>
    • Apache2.4
      <IfModule mapcache_module>
        <Directory /opt/mapcache>
          Require all granted
         </Directory>
         MapCacheAlias /mapcache "/opt/mapcache/mapcache.xml"
      </IfModule>
    • 2.4 で 2.2 の設定をすると「AH01630: client denied by server configuration」
  3. サンプル用のキャッシュ設定で動かす
    $ sudo mkdir /opt/mapcache
    $ sudo cp /home/kagyuu/mapcache/mapcache.xml /opt/mapcache/
    $ sudo chown -R apache:apache /opt/mapcache/
    $ sudo chmod -R 755 /opt/mapcache/
    mapcache.xml は、github から clone してきたもの
  4. 再起動してインストールを確認
    $ sudo /sbin/service httpd restart
    http://app.example.com/mapcache/demo
    apache14.png

mapcache.xml について

a graph image

a graph image

a graph image

自分の WMS に接続する

memcached

他の WMS を参照する

サンプルアプリ


GIS


*1 全ての設定パラメータを""で囲むことを推奨

添付ファイル: fileapache15.png 1457件 [詳細] fileapache14.png 2773件 [詳細] fileapache13.png 2926件 [詳細] fileapache12.png 2806件 [詳細] fileapache11.png 2809件 [詳細] fileapache10.png 2941件 [詳細] fileapache09.png 2790件 [詳細] fileapache08.png 2900件 [詳細] fileapache07.png 2750件 [詳細] fileapache06.png 2535件 [詳細] fileapache05.png 2599件 [詳細] fileapache04.png 2641件 [詳細] fileapache03.png 2744件 [詳細] fileapache02.png 2689件 [詳細] fileapache01.png 2675件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2017-01-12 (木) 02:06:44 (2654d)
Short-URL:
ISBN10
ISBN13
9784061426061