地球科学におけるGRASS GIS入門(第9回講義・実習)

目    次


 第9回目の講義(実習を含む)です.GRASSLinksを用いたOnline GISをどのように構築するかについて説明します.ご自身のマシンでOnline GISを構築してみたい方は,ここに示してある方法で実際に構築してみて下さい(Unix(linux)等の知識が若干必要です).なお,Webサーバー(例えば,apacheなど)が立ち上がることが前提です(apacheの立ち上げ方の詳細は,http://www.apache.or.jp/等を参照して下さい).

 今回は別に実習を設定しません.今回の講義に従って作業できる方は,その結果を用いて,第8回と同じ感じでOnline GISを利用してみて下さい.また,構築しない方は今回の講義に従って構築した結果(前回の実習と良く似ていますが)をあらかじめこちらで構築して,http://wgrass.media.osaka-cu.ac.jp/~grassに立ち上げていますので,そちらを操作してみて下さい.


5-1-3.Online GISの構築方法

 ここで示すOnline GISは,GRASSをホームページを見る感覚でWebブラウザから利用するものです.ここでは,1台のPC(Linux上)で使用する形で話を進めますが,当然,ネットワークを通じた外部からも利用できるようにも設定変更することもできます(ネットワーク環境によります).

 GRASSとWebのインターフェースとしては,PDSであるGRASSLinksを用いました.GRASSLinksはUC BerkeleyのSusan Huseによって開発されたものです.このGRASSLinksのLinux化は大阪市立大学で行なわれ,そのデモは,第8回実習で紹介しました.ここでは,その縮小版の構築方法を説明します.

 なお,GRASSLinksは自由に使えますが,"GRASSLinks (c) Copyright Information"を変更しないで利用するという条件がありますので注意してください.

 

0)httpデーモンの動作確認

 GRASSLinksはhttpd(httpデーモン)が動作している必要があります.httpdとは,簡単に言えばWebサーバーのプログラムです.これが各自のLinuxで動作しているかどうかを次のように確認します.

ps -e | grep "httpd"

濃い赤色の部分を入力します.はリターン(Enter)を意味します.)

もし動作していれば,次のような表示がされます.

 107 ? 00:00:00 httpd

21420 ? 00:00:00 httpd

    :

もし,動いていなければ,なにも表示されません.この場合,2通りのことが考えられます.1つは,httpdのソフトはインストールされているが,動いていない場合です.もう1つは,httpdのソフトがインストールされていない場合です.httpdソフト(httpdあるいはapache)があるかどうかは,rootでログインして,findコマンド等で探してください(例:root# find / -name httpd -print,あるいは,root# find / -name apache -print).いずれの場合も,httpdの立ち上げは必要です.http://www.apache.or.jp/等を参照して,立ち上げてください.

 

1)GRASSLinksファイルのダウンロード

 GRASSLinks(linux版)をインストールするために,準備したファイルをダウンロードします.これにはhtml documents,shell scriptsといくつかのC言語によるプログラムがあります.linuxでの利用は特別なコンパイラーは必要ありません.下記をクリックして,ダウンロードして下さい.

GRASSLinks(linux版)のダウンロード(ファイル名:grasslinks.tar.gz) (約4.7MByte)

(ブラウザによっては,名前が変わってしまう場合があります.もし,名前が変わった場合は,grasslinks.tar.gz という名前に戻しておいてください.名前の変更は,linuxのmvコマンドで行ないます.)

 解凍したものには,linux版の設定例等も入っています.また,テストデータとして,GRASSのspearfishデータベースも入っています.他のUNIX-OSにインストールする場合はreadmeを読んで下さい(この場合は,Cプログラムなどを再度コンパイルする必要があります).

 なお,以下の説明ではGRASSLinksを使用するユーザー名をgrassユーザーグループをusersユーザーgrassのホームディレクトリを/home/grassgrass4.2のある(インストールした)ディレクトリを/usr/local/grass42とし,これを以降デフォルト設定と言います.異なる場合は,必要に応じて,以下の説明を読み替えて変更してください.

 

2)ユーザー名grassの新規登録とファイルの解凍

 GRASSLinksの立ち上げ操作は,rootでログインして行ないます.rootは何でもできます(してしまいます)ので注意して操作してください.

 まず,ユーザー名grassを新規に登録し,ダウンロードしたファイルを解凍します(既に,ユーザー名としてgrassを設定されている方は,★ファイルの解凍以降の操作をして下さい).

root# useradd -g users -m -d /home/grass -s /bin/csh grass

(rootでログインして,作業を行ってください.これ以降,root# はプロンプトです(設定により異なります).useraddコマンドはユーザーに新規登録し,同時にホームディレクトリ等も作成します.)

root# passwd grass  

(ユーザーgrassにパスワードを与えます.)

この操作はセキュリティ上,非常に重要です.必ずパスワード設定を行なって下さい(すでに設定されている場合は必要ありません).

★ファイルの解凍

root# cd /home/grass

root# mv /XXXX/grasslinks.tar.gz /home/grass/grasslinks.tar.gz

(ダウンロードしたgrasslinks.tar.gzのファイルを/home/grassに移動させます./XXXXは先ほど,ファイルをダウンロードしたディレクトリのパスです.)

root# tar -zxvf grasslinks.tar.gz

これにより,grasslinksというディレクトリが/home/grassの下にできます.

(grasslinksの下には,html/,spearfish/,cgi-bin/,paint/,tmp_grasslinks/,

 cgi-src/,progs/というディレクトリがそれぞれできます.)

 

3) GRASSLinksのためのhttpd設定

 GRASSLinksはhttpdのhttp.confファイルに書かれているユーザー名でGRASSを起動します.そのため,httpd.confのユーザー名・グループ名等を変更しなければなりません.

まず,http.confファイルを探します.たいていの場合は,/var/lib/httpd/conf/か,/etc/local/httpd/confにあります(httpdの代わりにapacheとなっている場合もあります).ない場合は,次のようにfindコマンドを利用して探します.

root# find / -name "httpd.conf*" -print

見つけたディレクトリの中の,httpd.confをviやxedit等を利用して変更します.変更前には必ずコピーをとっておきましょう.

root# cp httpd.conf httpd.conf.original

また,httpd.confは見つからず,httpd.conf-distのみが見つかった場合は,httpd.conf-distをhttpd.confにコピーして利用します.

root# cp httpd.conf-dist httpd.conf

httpd.confの変更する場所を以下に示します.


# User/Group: The name (or #number) of the user/group to run httpd as.

# On SCO (ODT 3) use User nouser and Group nogroup

# On HPUX you may not be able to use shared memory as nobody, and the

# suggested workaround is to create a user www and use that user.

# User nobody   (文頭にを挿入して,コメントにします.)

# Group nogroup     (文頭にを挿入して,コメントにします.)

User grass    (この行を追加します.)

Group users    (この行を追加します.)

   :

# ServerName allows you to set a host name which is sent back to clients for

# your server if it's different than the one the program would get (i.e. use

# "www" instead of the host's real name).

#

# Note: You cannot just invent host names and hope they work. The name you

# define here must be a valid DNS name for your host. If you don't understand

# this, ask your network administrator.

   :

#ServerName new.host.name

ServerName localhost     (この行を追加します.)


外部から利用できる環境で,サーバーとして利用する場合は,localhostの代わりに,ネットワークで設定した際のホスト名.ドメイン名を入れてください.なお,わからない場合は,

root# hostname --fqdn で    ( - が2つあることに注意.)

でホスト名.ドメイン名が表示されますので,そのまま入れてください.

 

4) GRASSLinksのディレクトリ設定

 ダウンロードしたGRASSLinksの設定は,grassのLOCATIONはspearfish,MAPSETはPERMANENTとgrasslinks1からgrasslinks5の6つにしてあります.これらはユーザー名grassで利用できるように設定してあります(他のデータベースを利用する場合はこれらを参照し,変更して下さい).

 grasslinks0は作業用に必要がありますがユーザには利用できません.grasslinks1[-5]は,ユーザーが利用でき,ここに保存ができます(注意:以降,本文中の1[-5]あるいは[1-5]という記述は,1から5まであることを意味します).ただし,ユーザーの作成したファイルは時間(1時間)が経てば自動的に消えるようになっています.これは,利用者がファイルを大量に作成し,ディスクがいっぱいにならないように制限するためのものです.

 それぞれのmapsetであるgrasslinks[1-5]はユーザー間の同時利用を避けるために,利用されている間は "LOCK"されます.そのために,あらかじめ"UNLOCK"という空のファイルがあります.

 grass4.2は通常,立ち上げたときにユーザーのホームディレクトリにある".grassrc"を読みに行き,そこに書いてある情報(前回,操作したデータベースのディレクトリやLOCATION,MAPSETなど)で立ち上がります.GRASSLinksも同様に,アクセスした順に".grassrc[1-5]"を自動的に読みに行きます.これらは/home/grass/grasslinksの下にあります.ls -acf でファイルの存在を見ることができます.

 GRASSLinksのための各種情報のための各種のディレクトリ設定は,/home/grass/grasslinks/progs/grass.cmdにあります.必要に応じてこれを変更します.ただし,前述したようなユーザー設定等(デフォルト設定)である場合は,変更する必要はありません.

root# cd /home/grass/grasslinks/progs

root# vi grass.cmd


#! /bin/sh

: ${GISBASE?}

trap '/bin/mv --force $LOCATION/LOCK $LOCATION/UNLOCK' 0 1 2 3 5 9 15

home=/home/grass/grasslinks     [ Grasslinksのホームディレクトリ]

GISDBASE=/home/grass/grasslinks

   :

g.gisenv GISDBASE=/home/grass/grasslinks

g.gisenv LOCATION_NAME=spearfish


".grassrc[1-5]"のそれぞれの設定は以下の様になっています.デフォルト設定では変更の必要はありません.


GISBASE: /usr/local/grass42       [ grass4.2のプログラムがあるディレクトリ]

GISDBASE: /home/grass/grasslinks     [ grasslinksで使用するデータがあるディレクトリ]

LOCATION_NAME: spearfish        [ Location名]

MAPSET: grasslinks1 [〜5]        [mapset名]

DIGITIZER: none           

PAINTER: ppm            

LOCATION: /home/grass/grasslinks/spearfish/grasslinks1 [〜5] [ LOCATIONのパス]

MAPLP: /home/grass/grasslinks/tmp_grasslinks/pmap.grasslinks1

                    [ GRASSlinksのtmp ディレクトリのパス,最後の1はそれぞれに対応する]


5) cgi-binプログラムのコピー

 GRASSLinksのシェルスクリプトと他の実行版のプログラムを,Webサーバーのcgi-binディレクトリにコピーします.コピー方法は以下の通りです.

root# cd /home/grass/grasslinks/cgi-bin

root# cp * /var/lib/httpd/cgi-bin/

(/var/libは,httpd/cgi-binのあるディレクトリです.システムにより異なるのでシステムに合わせて変更してください.)

他のOS(Unix)で利用する場合は,以下のようにそれぞれコンパイルし,実行形を作成してから上記の作業を行って下さい.

root# cd /home/grass/grasslinks/cgi-src

root# make

root# gcc postquery-GL.c util.o -o ../cgi-bin/postquery-GL [ postquery-GL.cのコンパイル例] 

 

6) シェルスクリプトの確認

 GRASSLinksのシェルスクリプトは,/home/grass/grasslinks/cgi-binの中にあります.デフォルト設定では,HTTP_PATHおよびFTP_PATH以外は,変更の必要はありません(設定が異なる場合は,必要に応じて変更してください).

root# cd /home/grass/grasslinks/cgi-bin

root# vi GRASSLinks


#! /bin/sh

trap "rm -f /home/grass/grasslinks/tmp_grasslinks/posted.$$; exit 1" 0 1 2 3 5 9 15

PROG_PATH=/home/grass/grasslinks/progs      [ GRASSlinksのプログラムディレクトリのパス]

TMP_PATH=/home/grass/grasslinks/tmp_grasslinks  [ GRASSlinksのtmpディレクトリのパス]

HTTP_PATH=/var/lib/httpd/cgi-bin         [ Webサーバーのcgi-binディレクトリのパス]

GISBASE=/usr/local/grass42            [ Grass4.2のプログラムディレクトリのパス]

FTP_PATH=/home/ftp/incoming/grasslinks      [ftp/incomingディレクトリにgrasslinksというディレクトリが必要です.後で説明します]

PBM_PATH=/home/grass/grasslinks/progs       [ pbmプログラムがあるディレクトリ]

SIZER=/home/grass/grasslinks/spearfish      [ Locationのディレクトリ]

    :


7) htmlファイル

 GRASSLinksに関するhtmlファイルは/home/grass/grasslinks/htmlディレクトリにあります.

index.html:grasslinksを立ち上げる最初のhtmlです.このままで利用できますが,必要があれば,このファイルを自分のWebサーバーに合うように変更してください.ただし,copyright.htmlのリンクは,はずさないで下さい.

copyright.html:このファイルは変更しないで下さい.

help.html:このファイルはGRASSLinksの各種ヘルプファイルにリンクを張っています.

tmp:テンポラリーファイルをおくディレクトリです.時間ごとに中身が消えるようになっています.

 

8) GRASSLinksのプログラム

 GRASSLinksのプログラムは,/home/grass/grasslinks/progsディレクトリの下にあります.index.htmlのオプションそれぞれに対して,いくつかのスクリプトファイルを実行するようになっています.

grass.cmd:はGRASSLinksを制御するスクリプトです.このスクリプトはmapsetの状態, lockの状態などを実行中に確認します.

option_*:これらのスクリプトファイルはGRASSLinksのメニューをわかりやすくするためにあります.どういうメニュー画面にするか必要に応じて変更して下さい.ただし,名前はparser_*に対応させる必要があります.parser_*は,option_*での名前を実際のGRASSファイル名に変更します.

checktimes.c:C言語のプログラムです.これを用いて時間をチェックし,clean_tmpを実行してtmpをクリアーにします.

timer.c:C言語のプログラムです.これは検索を無限に行うことを避けるためにあります.

clean_tmp:このスクリプトはtmpファイルなどを時間ごとに消します./var/spool/cron/crontabsディレクトリに,grassというファイル名で以下の文を作成して下さい(コンピュータの設定によって,/cron/crontabsディレクトリは異なる場合があります.findで/cron/crontabsディレクトリを探してください).

root# cd /var/spool/cron/crontabs

root# vi grass


0,15,30,45 * * * * /home/grass/grasslinks/progs/clean_tmp


9) PBM(Portable Bit Map)プログラム

 GRASSの作図結果をホームページに表示できるgif形式の画像に変更のために,ppmtogif, pnmscaleおよびppmquantのプログラムが必要です.プログラムは,PBM_PATHに示したディレクトリ/home/grass/grasslinks/progsにあります.

(他のUNIX-OSの場合はftp://ftp.x.org /contrib/utilities/netpbm-1mar1994.tar.gzをダウンロードして,その指示に従って下さい.)

 GRASS用のppm(portable pix map)ドライバーと設定ファイル等を以下のように,GRASSのプログラムディレクトリ(/usr/local/grass42)にコピーする必要があります.

root# cd /home/grass/grasslinks/paint/driver.sh

root# cp * /usr/local/grass42/etc/paint/driver.sh/

 

root# cd /home/grass/grasslinks/paint/driver

root# cp * /usr/local/grass42/etc/paint/driver/

 

10) GRASSLinksユーザー用のFTPディレクトリの作成

 ftpとは,ネットワーク上でのファイルを転送するために作られたプロトコルで,ファイルを直接,転送(送信・受信)する際に用いられます.今回示したGRASSLinksの例ではftpの機能を使用しませんが,形式的に以下のようにftpディレクトリを設定して下さい.

root# cd /home/ftp/incoming     [ 自分のftpサーバーのincomingディレクトリに移動(findコマンドで探してください).]

root# mkdir grasslinks       [ GRASSLinksユーザー用のディレクトリを作成する]

root# chown -R grass grasslinks   [ このディレクトリのオーナーをgrassに変更する]

root# chgrp -R users grasslinks   [ 同様にグループをgrassのグループに変更する]

 

11) GRASSLinksのWebサーバーへのリンク

 以上のステップが終了したら,基本的に完成です.最後に,GrassLinksのindex.htmlファイルをWebサーバーのドキュメントルート(htdocsディレクトリ)にリンクします.

root# cd /var/lib/httpd/htdocs             [ Webサーバーのドキュメントルート]

root# ln -s /home/grass/grasslinks/html grasslinks   [ディレクトリー全体のリンクをはります]

 

12) GRASSLinksの利用

以上で,GRASSLinksが立ち上がります.GRASSLinksへアクセスするためのURLは以下のようになります.

  http://localhost/grasslinks

Webブラウザから立ち上げてみて下さい.また,外部からのアクセスが可能なマシンの場合には(前述の設定で,サーバー名.ドメイン名としたもの),アクセスはlocalhostの代わりにWebサーバー名になります.


まとめ(9)

 GRASSLinksを用いたOnline GIS(WebからのGRASSの利用).

Webサーバーの設定.

GRASSLinksの設定.

(以上,第9回講義・実習)


大阪市立大学インターネット講座'99