THE GIS-GRASS MINI-HOWTO David A. Hastings, dah@ngdc.noaa.gov Version 1.0: 13 November 1997 高橋 聡 hisai@din.or.jp 31 Oct 1999 このドキュメントは、パブリック・ドメインであり、科学的な地理情報システ ム (Geographic Information System (GIS))であるパワフルな Geographic Resources Analysis Support System (GRASS) を手に入れる方法と、そのイン ストール及び設定のしかたを解説します。また、GRASS についてさらに深く理 解するための情報や GIS 一般についての情報、地理データを手に入れる方法 についても説明します。またこのソフトウエアを UNIX/Linux のメジャーなア プリケーションとして Linux コミュニティに認めてもらえるように努力して 書いたつもりです。(いつになったら Linux はパブリック・ドメインもしくは Linux Public License な 「キラーアプリケーション」をバンドルするように なるのでしょうか?) このトピックについては、 ``GRASS の未来は?''を見 てください。 ______________________________________________________________________ 目次 1. GIS とは? 2. GRASS とは? 3. GRASS の生い立ち 3.1 再び盛り上がる GRASS の今後について 3.2 GRASS の今後についての再び 4. GRASS を動かすのに必要なシステム 5. GRASS を手に入れるには 6. Linux マシンで GRASS を動かすには 7. GRASS (GIS 一般についても)のサポートは、Web で! 7.1 他のサイト 8. GRASS の未来は? 9. 著作権とこのドキュメントのサポートについて 10. 参考文献 11. 付録 A : GRASS4.13 のバイナリの入手方法とインストールのしかた 11.1 ファイルの入手方法 11.2 インストール方法 11.3 このリリースに含まれるファイル 11.4 インストール 12. 付録 B : GRASS4.1.5 のバイナリの入手方法とインストールのしかた 12.1 ファイルの入手方法 12.2 インストール方法 12.3 このリリースに含まれるファイル 12.4 大切なこと 13. 付録 C : GRASS のソース・コードの入手方法とコンパイルのしかた 13.1 GRASS 4.2 を簡単に動かすためのインストール方法 13.1.1 ディレクトリ構成 13.1.2 コンパイルの大まかな流れ 13.1.3 コンパイルの詳細なステップ 14. 付録 D:GRASS の機能を強化するつもりなら、まず目を通してください! 15. 付録 E:Linux 版の GRASS で主要な設定ファイルの例 16. 日本語版謝辞 17. 日本語版お願い ______________________________________________________________________ このドキュメントは著作権に縛られません。 ``著作権とこのドキュメントの サポートについて'' を見てください。 バージョン 1.0: 1997 年 11 月 13 日 1. GIS とは? 地理情報システムの定義のしかたはさまざまです。ここでは仮に実用的な定義 を 3 つあげたいと思います(この定義は、David A. Hastings, 1992, Geographic Information Systems: A Tool for Geoscience Analysis and Interpretation から引用しています)。 1. (最小限の定義)GIS は、ハードウエアとソフトウエアから構成されるシス テムである。記憶、管理装置を持ち、調べたい地理情報を検索し、その結 果をハードコピーに出したり、ディスプレイにグラフィック表示をしたり することが可能である。同様の定義がベクター型の GIS ベンダーやそのユ ーザによっても使われているが、そのシステムが力点を置いているのは、 より洗練された管理と地図製作データの出力方法である 2. (類似した定義)GIS は空間データを管理、表示するためのハードウエアと ソフトウエアから構成されるシステムである。既存の DBMS(Data Base Management System) の機能と似ているが、DBMS が表形式のデータを扱う のに対し、 GIS は空間データを扱う。「報告書作成ツール」が表や数字だ けでなく、地図も出力できるイメージである。つまり従来の DBMS が「表 形式 DBMS」なのに対し、GIS は「空間形式 DBMS」とみなすことができ る。この定義を使っているユーザは少数だが、DBMS ユーザに対して説明す るの場合には好都合である 3. (より意欲的な定義)GIS は、ハードウエアとソフトウエアからなるシステ ムである。開発や機能拡張、モデリングが容易で、多変量の数値(例えば、 複数のレイヤが存在する場合等)で表現されている空間データの表示が可能 だ。GIS 自身で分析機能も持っており、この機能を使って得た結果を検 索、表示できる。こうしてユーザは、さらに踏み込んだデータの分析と解 釈を行うことができる。適切に条件を設定すれば、他の関連すると思われ る特徴や事象を関数として、ある特徴や事象をモデル化(例えばデータを合 成して新しい空間を再現する)することもできる。またそれらすべての特徴 や事象を空間的に表示したり、表形式のデータとして表すことも可能であ る。ただしここで書いた分析機能については、議論を要するところだ。と 言うのも地図製作用 GIS の専門家が、リップサービスをしている場合が多 々あるからだ。彼らは、地図製作というカテゴリを超越した能力を持つ GIS によって科学的に分析された成果を見たことがないのだ 4. その他の定義については、エジンバラ大学の を参照のこと 2. GRASS とは? GRASS (Geographic Resources Analysis Support System)はパブリック・ドメ インのラスター型 GIS です。もちろん ベクター形式のデータも扱うことがで きます。また GRASS は画像処理システムでもあり、グラフィック製作システ ムでもあります。米国陸軍技術部隊(the US Army Corps of Engineers)の建築 工学研究所 (Constriction Engineering Research Laboratory)(USA/CERL)で 開発され、その他の多くのユーザによって改良されており、世界各国の政府機 関や大学、企業で広く使われています。さまざまな UNIX マシンで動作するよ うに大部分が C 言語で書かれ、 Linux はその中でも中心になるインプリメン テーションの 1 つです。 GRASS は、以下の機能を持つプログラムを持ってい ます。 o 40 個以上のモニタやハードコピー上の画像のレンダリング o 60 個以上のラスター・データ操作・解析 o 30 個以上のベクター・データ操作・解析 o 30 個近くのマルチ・スペクトル画像処理操作・解析 o 16 個の データ管理 o 6 個のファイル管理 GRASS には得意とする分野がいくつもあります。シンプルなユーザ・イン タフェースは、はじめて GIS を学習する者にとって理想的なプラットフォ ームになります。ユーザは既存のソース・コードやドキュメント化されて いる GIS ライブラリのインタフェース、さらに GRASS のプログラマー ズ・マニュアルを調べることによって、自分の好きなようにコードを書く ことができます。つまり GRASS だけでより洗練された、高度に統合化され た環境を実現できます。 他の長所としておげられるのは次の点です。 o 1 つのデータベースに複数の分解能を持つことができる o 1 つのデータベースに複数の地理的に独立した地域を含めることができる o ラン・レングス符号化方式を使った圧縮機能でラスター画像を圧縮できる o 再分類用参照テーブルの利用 o 表示中の画像をその場でスケーリングして再表示する これに加えて GRASS はその基本設計の特徴になっている強力なコンピュー タ支援機能を使って、環境問題を科学的に分析することもできます(比較的 簡単な操作で、複雑な地図製作を行う機能だけを目的にした GIS とは、 まったく異ったアプローチをとっています) GRASS はフリーで著作権なしに配付され、これをマシン上でコンパイルして利 用するのが普通です。インターネット経由でダウンロードできるバイナリもい くつか存在します。もちろん無料で、複雑な手続きも必要ありません。さまざ まな種類の UNIX 上で動作します。 訳註:GRASS は ベイラー大学に本部を置く the GRASS Development Team (ベ イラー大学、イリノイ大学、ハノーファー大学)が管理しています。 1999 年 10 月 25 日に GPL(Gnu Public License)なソフトウエアとなりました。詳細 を知りたい方は、 を見てください。 この文章は、 Project Assist の GRASS の序文からの引用です。 3. GRASS の生い立ち 1980 年代初め、イリノイ州のシャンペーンにある 米国陸軍技術部隊の建築工 学研究所(USA/CERL) は、地理情報システムを利用できるかどうかについて調 査を開始しました。その利用目的は、環境についての調査とその評価、監視、 及び国防省管轄下の地域管理です。1970 年代終わりに制定された国内環境政 策法(the National Environmental Policy Act, NEPA)もそのきっかけになり ました。この法律によって、国防省は環境に対して新たな義務を負うことに なったのです。 USA/CERL の Bill Goran 氏が当時利用可能な GIS の調査を行いました。調査 当初の筋書きでは、環境分析が可能なシステムがすでにいくつか存在し、その 中から CERL や国防省の他の部署で利用する GIS を選ぶはずでした。しかし 驚いたことに、目的にかなった GIS を見つけることができなかったのです。 この結果、既存のシステムを選択する予定が変更され、独自に GIS を設計/ 開発することになったのです。 USA/CERL は数人かのプログラマを雇って、VAX UNIX 用にラスター、ベクター 両データを扱える GIS の開発に取りかかりました。こうして本当の意味では じめての UNIX 用 GIS の 開発チームが結成されました。プログラマは、さま ざまな UNIX へのポーティングという課題に直面しましたが、ANSI 規格に基 づいてコーディングを行うことで、ベンダー固有の UNIX のために「チューン アップ」されたコードを書くことを避けました。 GRASS のプログラミング・スタイルは下記のように決められました。 o できるだけ UNIX 既存のライブラリを利用すること。それに加えて、GRASS ライブラリを利用する。GRASS ライブラリには、GIS 特有の機能、例えば 圧縮されている(ラン・レングス符号化方式で)もしくは非圧縮のラスター 形式のファイルを開くような、GIS で繰り返し使用される操作を含むよう に作成する o メージャーな GIS データのタイプである、ラスター/ベクター形式のデー タを扱うことができること o ラスター形式のデータを扱うことに重点をおくこと。理由はベクター形式 と比較して、ラスター形式のデータの方が科学的な分析を容易に行えるた め o 同一のデータベースで、複数のグリッドサイズからなるラスター形式のグ リッド・データを扱えること。これに比べて従来のラスター形式のデータ を扱う画像処理は、それぞれ固有(独立して記録されている)のグリッド/ セルのマトリックス・データをレイヤ毎に持つ必要があった o 異なる対象地域を表しているラスター形式のグリッド・データを扱うこと ができること。これも上記と同様に、従来の方法によるとすべてのグリッ ドは地理的な地域に固有のものでなければならなかった o ラン・レングス符号化方式で圧縮されたラスター形式のデータを扱えるこ と。この方式を使うと、大部分のファイルを大幅に圧縮することができる o 再分類を行った結果のファイルが別構成になっていること。それらのファ イルには参照テーブル情報しか含まれておらず、分類前や新しい分類につ いての情報を何も含まない。こうすることによって、異なる値を持つ元の グリッドをコピーする方法よりもぐっとサイズがコンパクトになる。10 m 単位のグリッド・セルで構成されている 100 × 100 km の正方形の領域を 再分類すると、元の非圧縮の 8 bit ラスター・データが 100 MB になるの に対して、数 100 バイトにしかならない o 事実上の標準であるデータ・モデルを採用したこと。GIS ベンダー間の競 争によって、扱いにくいデータ・フォーマット(非公開がほとんど)が出 回っていた。そこで GRASS は事実上の標準である Digital Line Graph(DLG) 形式のベクター・フォーマットとヘッダ情報なしのバイナリの ラスター・グリッド形式を採用した。後に DLG 形式を GRASS 内部で使用 するベクター形式として利用することを止め、ラスター形式を扱う形に移 行した。しかし依然として DLG 形式もヘッダ情報なしでバイナリ化したラ スター・グリッド形式も、GRASS で普通に扱えるフォーマットであること にかわりない。以前と同様に、新しいフォーマットも公開されている o いくつかのディレクトリに分けて GRASS のコードを管理すること。まずは じめに src.contrib ディレクトリにおかれる。さらに安定したものになる と、 src.alpha ディレクトリに移される。新しくリリースされるまで、こ のディレクトリにおかれるので、結果としてバグがつぶれることになる。 そして最終的に安定したものとして src ディレクトリに移される GRASS は 3 つの独立した委員会によって運営されていました。USA/CERL は GRASS に対しての最終的な責任を負っていました。GRASS のほとんどの開発作 業はここで行われ、日々のテストやリリース作業を管理していました。The GRASS Interagency Steering Committee (GIASC)は USR/CERL 以外の連邦政府 関係機関から構成され、年 2 回開発状況のレビューを行い、また GRASS のあ るべき将来像を検討しました。GRASS を利用している教育機関及び企業関係者 も、GIASC の会議に参加し、「連邦政府関係機関のみ」に限定された会議はほ んの一部でした。結局最終的には GRASS は名目上表向きには GIASC の「製 品」になりました。しかし、USA/CERL がリーダーシップをとっていることは 明白な事実でした。 The GRASS Military Steering Committee は開発した成 果について、独自の観点からレビューを定期的に行いました。独自の観点と は、国防省が必要としている軍用地の環境を評価、管理するという点です。 CERL と GIASC は USA/CERL の GRASS Information Center を通して情報を交 換していました。GRASS のベータ版テストは、非常に広範囲に行われていまし たが、先進的なユーザが集中的に行っていました。国立公園局(the National Park Service) や土壌保全部(the Soil Conservation Service)のような先進 的なユーザの中には、 GRASS を唯一の、もしくは主要な GIS として採用して いたところもありました。 GRASS の機能強化やテストに大いに貢献しました が、それは彼らにとって労力に対して充分に見合う作業だと考えられていたか らです。他のどの GIS よりも GRASS の発展に力を注いでいると述べていまし た。また彼らは、GRASS をサポートするために多大な労力と出費をしいられま したが、十分に見返りを得ることができた、と感じていたようです。 大学の中には、GRASS を教育課程や研究環境として重要視しているところもあ りました。その内の多くは、一般教養課程のための短期コースを設置して、カ リキュラムの一環として GRASS を使用しました。そのような学術関係の先進 的なユーザは、セントラル・ワシントン大やアーカンソー大、テキサス農工 大、カリフォルニア大学バークレイ校、リュトガース大学などです。 ユーザは GRASS はパブリックでかつ優れたソフトウエアだ、という評価をし ていましたが、世評では他の GIS システムの開発者も、自由にこれを利用し たという話もあります。それは不正競争だ、という意見や GRASS は著作権を 主張していないし、 GIS の構想を得るための叩き台として利用することは価 値があることだ、という意見もありました。GRASS は 1988 年に、都市および 地域情報システム協会 (the Urban and Regional Information Systems Association (URISA))から高品質のソフトウエアとして表彰されました。 1980 年代後半から 1990 年代前半にかけて、CERL と GRASS がともに発展し ていた時期に、CERL はパブリック・ドメイン版のサポートにかかる諸経費を 削減しようとしました。まず The Open GRASS Foundation を設立し、先進的 なユーザと手を結びました。その後この組織は The Open GIS Consortium に 発展し、GIS のデータ形式やユーザ・インターフェースの共有化を目指しまし たが、オープンな GIS の試金石である GRASS を越えることはできませんでし た。 GRASS version 5.0 のベータ版テストを開始しようとする直前の 1996 年に、 USA/CERL は公式にパブリック版のサポートを中止する旨を発表しました。あ わせていくつかの GIS ベンダと GRASS の商用版の提供について合意に達した と発表しました。この結果、 GRASSLANDS で見ることができる商用版の GRASS が生ま れました。またこのことによって、市販されているパッケージソフトの GIS に移行する GRASS ユーザも出てきました。しかし、いまだに GRASS の anonymous ftp サイトには、GRASS 最新のフルスペック・バージョンである 4.1 リリース に対する数々の機能拡張のためのツールが用意されています。5 年間もメージャー・リリースがされていないにもかかわらず、多くの組織が依 然として GRASS を使用し、あらゆる分野で先端を走っていると考えていま す。 3.1. 再び盛り上がる GRASS の今後について 1997 年後半にベイラー大学のあるグループが、GRASS の新しい Web サイトを 立ち上げました。この速成のサイトには、GRASS 4.1 のソースと Sun の Solaris のバイナリ、GRASS 4.1 のドキュメント、そしてオンライン・マニュ アルが置かれています。1997 年 11 月に GRASS 4.2 の最初のバージョンのソ ースとバイナリ (当時は Sun の Solaris 版だけでしたが、Linux 版 と Windows NT 版は検討中です)が置かれました。GRASS 4.2 は CERL の Web サ イトで提供されているいくつかの改良とベイラー大学独自の改良が加えられて います。GRASS 4.2 のドキュメントによると、今後このグループは共同作業で GRASS の開発を進めていく予定で、そのパートナーを捜しています。WWW を積 極的に活用して、開発と運用を行っていく予定です。GRASS 5 の開発とバイナ リの作成は進行中です。またこのサイトはテキサス農工大の the Blackland GRASS サイトにもリンクしています。そこでは Windows 95 を使って、手軽に 利用できる GRASS の開発を目指しています。 訳註:Blackland GRASS は、Windows 95、98、NT で動作します。ただし有償 です(非営利利用で 1 台 $150)。詳しくは、 Blackland GRASS for Windows 98/NT を参照してくだ さい。 3.2. GRASS の今後についての再び 注意: (私も含む)別の視点で活動するグループもあります。このグループが 探求していることは、GIS 技術を検証するために、そのパブリックな原案とな る GRASS の価値をどうしたら継続して再構築を行ないつつ、拡大させていく か、という内容です。彼らは、GRASS5.0 のテストやリリースを管理する方法 や、GRASS の設計や開発をより分散化して運用するモデルを模索しています。 またパブリック・ドメインな空間データ解析ソフトウエア(地理情報や画像解 析システムを含む)や表形式のデータベース管理システムの分野についても調 査しています。 どうしたらそのような知識が、 1. この分野の技術発展のために、GRASS がオープンでパブリックな叩き台と しての効果を発揮し、 2. 広く一般に利用される のでしょうか? おそらく Linux の管理モデルが必要になると思います。 この話題については、``GRASS の未来は?''でさらにふれたいと思いま す。 4. GRASS を動かすのに必要なシステム 最小構成は、下記の通りです。 o 8 MB のメモリ(もちろん多いことに越したことはない) o 100 MB の空きディスク容量 o 実行形式に約 40 MB o ソース・コードに約 40 MB(Linux 用のバイナリだけをインストールするな ら不要) o データ保存用に?(データは底なし沼を一杯にするほど増加する) GRASS は、Linux のカーネル 1.2.13 でも動きます(詳細は付録を見てくださ い。さまざまな OS のバイナリについての情報があります)。 GRASS はテキスト・ベースで動きますが、データを表示するには X Window System が必要です。X Window System をすでに使用されているなら、GRASS も多分動くはずです。 GRASS を動作させるに値する、他のハードウエアや OS があればご連絡くださ い! 訳註:カーネル 2.x 系で動作しています。 Linux(x86)以外で GRASS4.21 がソースからコンパイルできるプラットフォー ムは、 AXP、DEC Alpha/OSF、DEC Alpha/V4.0 564 alpha、HP-UX 9.x、HP-UX 10.x、MkLinux、 Linux/DEC Alpha、NetBSD、OpenNT、SCO 3.x、SGI Irix、SUN OS 4.x、 SUN Solaris(SPARC) 2.5、SUN Solaris(SPARC) 2.6、SUN Solaris(x86) 2.6、SUN Solaris 7(x86) です。詳しくは GRASS GIS - compiling on UNIX-platforms を 参照してください 5. GRASS を手に入れるには GRASS は、配付条件についての契約を USA/CERT と結んだ企業からテープで手 に入れられます。これらの企業は、特定のプラットフォームをサポートしてい るのが普通です。たとえば、Masscomp、Sun、DEC、Hewlett Packard、IBM(RISC プロセッサ用)、PC(UNIX ベース)、そして Macintosh(AUX ベース)などです。つい最近まで、 PC 上で動くUNIX はあまりに機能が低 く、GRASS を支障なく動かすために多くの機能を追加しなければなりませんで した(たとえば the Number Nine のような高機能なグラフィック・ボードを 使うためのドライバをつくるとか。それも何年も前に発売されたものに対し て)。しかし Linux のような安定したシステムが登場してから、これも過去の 話となりました。またテープで GRASS を手に入れる方もほとんどいなくな り、CD-ROM で手に入れる方も少数派となりました。 anonymous ftp 経由で手に入れる方法が主な方法になったのです。 1. ベイラー大学の新しいサイトは、 このドキュメントが書かれた時点では、GRASS 4.1 と 4.2 のソース・コー ドと Sun の Solaris 版のバイナリが置かれていた。Windows 95 や NT で 利用できる Blackland GRASS はここからリンクされている。ベイラー大学 も独自に Linux と Windows NT のバイナリを置こうとしている。ベイラー 大学から取ってきたソースをこのドキュメントを参考にして Linux でコン パイルしてみよう。きっとできるはずだ 2. USA/CERL のサイトは、 か、このサイ トにあるミラーからも取ってこられる 訳註:日本のミラーサイト(大阪市立大学) からダウン ロードできます。 ftp サイトは、 ``付録 A'' は USA/CERL からコンパイル済みの GRASS4.13 の入手方法とイン ストールについて解説している(GRASS をインストールする前に``Linux マシ ンで GRASS を動かすには''を参照のこと! ``付録 B'' は USA/CERL からコンパイル済みの GRASS4.15 の入手方法とイン ストールについて解説している(GRASS をインストールする前に ``Linux マシ ンで GRASS を動かすには''を参照のこと! ``付録 C'' は USA/CERL から GRASS4.14 と 4.15 のソースの入手方法とコン パイルについて解説している。またベイラー大学にある GRASS4.2 のソースに ついても同様に解説している(GRASS をインストールする前に ``Linux マシン で GRASS を動かすには''を参照のこと! Linux のディストリビュータの皆さんへ! GRASS をあなたのディストリビュ ーションに入れてみませんか? GRASS のソース・コードは、条件なしかつ著 作権が主張されていないパブリック・ドメインなものです。GRASS のバイナリ やソース・コードを入れれば、あなたのディストリビューションもさらに価値 あるものになるでしょう。 6. Linux マシンで GRASS を動かすには ``付録 A ''、``B ''、``C '' は GRASS の入手方法とインストールのしかた について解説している。 GRASS を実際にインストールする前に、システムのどこに入れるかを決めなけ ればならない。 1. GRASS のバイナリとソース・コード、man とドキュメントその他は慣例に したがえば、/usr/local (たとえば /usr/local/grass/bin, /usr/local/grass/src) に入る 2. GRASS の実行形式と gmake ユーティリティは、/usr/local(たとえば /usr/local/grass/grass4.1 と gmake4.1 もしくは /usr/local/bin/grass4.1 と gmake4.1)に入る 3. GRASS のデータ領域はどこでもかまわない。設定ファイルで指定すればよ い 私はここ 10 年ほど上記とは異なる構成で使用しています。GRASS のコード、 バイナリ、その他(ユーザのデータは除く)すべては、「grass」という特定の ユーザがオーナーになっています。というのは、システム全体に GRASS が散 らばってしまわないようにするためです。/user という新しいディレクト リ(普通は独立したファイル・システム上)を作成し、GRASS 関連をすべてそこ に入れます。たとえば下記のように。 /user/grass4.1/bin (普通 grass4.1 と gmake4.1 をここに置いてます) /data /dev /etc /man /src /src.alpha /src.contrib GRASS5.0 は下記のように構築しています。 /user/grass5/bin /data (GRASS5 のデータ形式がいくつか変更されたので...) /dev /etc GRASS のインストール・ガイド(``参考文献''と ``付録 C'' で解説してあり ます)は、もし``付録 A ''、``B ''を見てバイナリをインストールするだけの 場合でも GRASS を取ってきたり、動作させる時にたいへん参考になります。 見過ごしてはいけない重要なことがあります。GRASS のインストールは、ソフ トウエア管理のアカウントとそのアカウントと同じ UNIX のパーミッションを 持たないユーザで行うことです。まず「grass」(「」は強調表現のためで、実 際のユーザやユーザ ID には使わないでください)というユーザ・アカウント をワークステーション上につくります。すべてのインストールと設定作業は、 「grass」というユーザで行ってください。tar や cpio を使ってファイルを 展開し、設定のセットアップを行うユーティリティを動かしてくださ い。Gmakefile(GRASS 版の makefile) を走らせ、「grass」ユーザで設定ファ イルを編集してください。そうしたら「grass」ユーザで GRASS を実行してく ださい。grass ユーザで実行するのは「まれ」なことです(私が「grass」ユー ザで実行する時は、ずっととって置きたいマップセットをアーカイブする場合 だけです)。同じ理由で決して「root」で実行しないでください。とんでもな いことになります! これら付録の解説や GRASS インストール・ガイドの情報の他にもさらにしな ければならないことがあります。それはデータベースの構築です。サンプルの データベースは USA/CERL から取ってこられます ( にありま す)。まず GRASS プログラマーズ・マニュアルの解説にしたがって最初から作 ることも可能です(少なくとも GRASS ユーザ・リファレンス・マニュアルの機 能の解説の所にその方法が埋もれています) 個人的には、USA/CERL にある Spearfish 及び Global データベースからはじ めるのがいいと思います。 1. Spearfish データベースは米国のサウスダコタ州のブラックヒルズ北部の 7.5 分の範囲の地形を 2 層で表している。投影法はユニバーサル横メルカ トル図法を使用している。オリジナルは、Larry Batten 氏によって作成さ れた。 [彼は現在、コロラド州ボールダーの環境システム研究所(the Environmental Systems Research Institute)に所属し、当時は地質調査 所(the U. S. Geological Survey)管轄のサウスダコタ州にある地球資源観 測衛星データセンター(EROS Data Center) に所属していた]。データベー スは、USA/CERL とその協力者によって改良され、素晴らしい出来となっ た。ユニバーサル横メルカトル図法を用いた州レベルの投影法の例として よく利用されている(このデータベースを使った GRASS 用の教材が数多く 利用できる) 2. Global データベースは、USA/CERL の Bob Lozar 氏によって開発され、緯 度と経度で表現された「投影図法」(以下、緯度-経度投影図法と表す) デ ータベースのプロトタイプである。これは GRASS における地球環境調査と 意志決定支援を目的に開発された まずこれら 2 つの例からはじめれば、後は自分でユニバーサル横メルカトル 図法や緯度経度投影図法データベースを構築することができるようになるで しょう。 (注意:緯度-経度投影図法を投影図法とは普通呼びません。また地 球の表面を二次元で表現したものが投影法だ、という見方もあります。ここで はこれ以上の議論はもう行ないません。いうまでもなく、コンピュータ・プロ グラムは、緯度-経度投影図法を他の投影法と同様に扱うからです) 7. GRASS (GIS 一般についても)のサポートは、Web で! パブリック・ドメインのプログラムのサポート? 何もないよ、そんなのは! と言うのが普通でしょう。あなたが Linux ユーザなら、こんなことは言わな いはずです。 GRASS は USA/CERL 内の GRASS Information Office からはじまりました。 USA/CERL の外部にも、とてもアクティブなユーザがいて、ユーザを熱心にサ ポートしていました。年 1 回、GRASS のユーザ・ミーティングが行なわれ、 ユーザや開発者のメーリング・リストなどもありました。企業はサポート契約 を結んだり、毎回サポート料金を請求する形で、付加価値をつけてサポートを 行いました。 役に立つ関連書籍や教材も数多く用意されています。大学の中には演習を設け ているところもあります。現在どのくらい行なわれているかはわかりません が。演習に興味があるなら、usenet の comp.infosystems.gis に質問を投げ てみてください(このニュース・グループについては、下記を見てください)。 インターネット上にある役立つ「書籍」については、``参考文献''に記述して あります。 GRASS の WWW 上の教材は GIS の the CyberInstute Short Course にあります(リン クをたどって GIS の Web 形式のチュートリアルを捜してください) GRASS の役に立つチュートリアルの 1 つに、Project Assist の Intro to GRASS があります。 7.1. 他のサイト セントラル・ワシントン大は以前から GRASS を利用しており、教育施設も 持っています。 訳註:原文の URL は存在しないので、セントラル・ワシントン大の GRASS の 教育カリキュラムの URL に変更してあります。 Stephan Pollard 氏は 同じく GRASS を以前から指導してきた方で、 Starting the hunt for mostly free spatial data を立ち上げています。アーカンソー大学 の the Center for Advanced Spatial Technology がベースになっています。 パーデュ大学はいくつかの GRASS 関連の情報があります。 USA/CERL のオンライン・マニュアル です。 --------------------------------------------------------------------------- リュトガース大学の も参考になりま す。 訳註:原文の URL がかわっていましたので、変更してあります。 The REGIS project は、カリフォルニア大 学バークレイ校で立ち上げられていて、ftp で Linux 版の GRASS が手に入れ られます。また GRASSLINK と呼ばれる Web 版の GRASS もあります。 上記の書籍や Web 上のチュートリアルを勉強した後、何かアドバイスを受け たいと思ったらどうすればいいでしょうか? 今のところ usenet ニュースグループの comp.infosystems.gis を利用するの が一番でしょう。ニュースグループというものに不案内ならネットワーク管理 者かインターネット・サービス・プロバイダに相談してみてください。 comp.infosystems.gis は下記のようなことについての投稿が、それなりにあ ります。 o この地域の、この項目についてのデータはどうしたら見つけられるか? o 私の使用してる GIS にデータをコンバートしたいが、どうしたらいいか? o 私の使用してる GIS でこの機能はいかせるか? o 私の抱えている問題を解決できる GIS はどれか? このニュースグループで最も議論される GIS の 1 つが GRASS です。GRASS についての話題は減りつつありますが、それはユーザ・コミュニティがすでに 成熟しているからです。しかし疑問を投稿すれば返答が返ってくるはずです。 また検索エンジンを利用して GRASS というサブジェクト(もしくは現在興味あ るサブジェクト) を捜すこともできます。また usenet のアーカイブ DejaNews からも捜し出せると思います。 8. GRASS の未来は? これは鋭い質問です。考えられる答は次の通りです。 1. USA/CERL がアナウンスした意図は、組織内部では GRASS とその商用パッ ケージ版を使用すること、GRASS のパブリックな Web と ftp サイトを自 分たちから完全に切り離すことにあった。そのために共同研究と開発につ いての契約を下記の 3 つの企業と結んだ。 a. the Environmental Sciences Research Institute (ESRI) b. Intergraph c. Logiciels et Applications Scientifiques (L.A.S.) Inc 最初の 2 社との契約では、GRASS のコンセプトを ESRI と Intergraph の 商用 GIS に組み込むことを奨励する、となっていた。3 つめの契約で は、GRASS のコンセプトとコードを活かして、L.A.S. が新しい商用 GIS を開発するというものだ。 L.A.S はまたパブリック・ドメインな GRASS についても、引続き協力関係を持つとしている。それは L.A.S. が GRASS を将来性のあるシステムであり、L.A.S. の GRASSLAND に役立つ可能性の ある新しいアイディアやコードの情報源として認めているからだ。ある観 測筋によれば、最初の 2 つの契約は、Linux を Microsoft に売り渡すよ うなものだ、と述べている。また L.A.S. によるこの試みは、パブリッ ク・ドメイン版と商用版の 両 GRASS の共存についての興味深い実験だ、 とも述べている 2. USA/CERL によって管理されていないと GRASS は衰退していってしまう、 という見方もある。 Open GIS Consortium がすべての開発者とユーザに とって利益となるオープンなアーキテクチャとなるように業界をまとめあ げていく、という見方もある。また OGIS の活動は結果的には、ほとんど 同じ内容だが(しかし共有するところがほとんどない)、ベンダー固有の 「標準化」に終り、オープンな開発プラットフォームとしての GRASS の役 割は失われてしまう、という見方もある 3. しばらくは各大学やサイトでの開発が行われ、それぞれの場所で GRASS を 維持していく。しかし、結局標準化が行われないまま「細胞分裂」状態に 陥ってしまう。最終的にはそれぞれの場所では有用だが、外部では利用さ れない GIS になってしまう、という見方もある 4. 希望的観測として、USA/CERL が行ってきた運用モデルは、これから出てく る新しいモデルの前身に過ぎないという見方もある。おそらく下記のよう な形だろう。 a. 新しい主導組織のもとに入る。たとえば 航空宇宙局(NASA, National Aeronautics and Space Administration)のような、地球観測システム で使えるような画像処理システムを持つ、オープンでパワフルな系統 立った GIS を必要としている組織がそれにあたる b. ディストリビューション管理モデル。Linux のような? c. 混合モデル? おそらく Web 方式から発展して、usenet のグループに ができあがる。まず comp.infosystems.gis.grass ができた後、 o comp.infosystems.gis.grass.academics o comp.infosystems.gis.grass.publicservice o comp.infosystems.gis.grass.commercialvalueadde o comp.infosystems.gis.grass.commercialdistributors o comp.infosystems.gis.grass.programming o comp.infosystems.gis.grass.users o comp.infosystems.gis.grass.centralcommittee が開設される。 はっきり言って、ちょっと不真面目に書いたが、ここから真面目に。こ の管理モデルでは、Central Committee がすべての開発とテストを指導 する。 Central Committee は、教育機関、公共機関(政府、非政府機関 とも)、商用版を提供している企業、その他 GRASS に寄与している企 業、プログラマ、ユーザの代表者から構成される。その他の特定の目的 を持つグループは、その内部でユーザ組織を持つ。例えば Academics は GIS と GRASS の教育を担い、あわせて自分たちの目的にあった GRASS の開発も主導して行なっていく。GRASS に付加価値を付ける商用 のデベロッパーは、彼らのビジネスに寄与する GRASS の開発を含む、 自分たちの目的にあった開発を主導する。Users は、協力しあって GRASS の学習を行ない、バグとり、その他の作業を行う GRASS は注目に値する下記の可能性を秘めています。 o 従来からある画像表示中心の GIS としても利用可能だが、科学的分析も行 なえる。GIS の多くは地図製作を得意とするが、 GRASS ほど簡単かつパワ フルに科学的な解析を確実に行なえる機能を持ち合わせていない。元来 GRASS は、科学的な研究、つまり環境の分析や公有地の環境管理と保護を 目的として設計・開発されたためである。ところで、Web で利用できる GRASS が 少なくとも 1 つ存在する。 GRASSLINKS というカリフォルニア大学 バークレイ校で開発されたシステムである。ユーザは Web のフォーム上で コマンドをサーバに送り、その結果が gif 画像で Web ページに表示され る。今後もっと機能が上がると思われる。 o 教育手段として有効。GRASS は他の GIS と比較して、教えやすく学びやす い。他の GIS はソース・コードも配布されず、不思議なブラック・ボック スであるのに対し、簡単に修正することができる(「地理学」の一環として 学ぶというよりも、コンピュータ・サイエンスとしての GIS を学ぶのに適 している)。もちろん学生にとっては、他の GIS に比べて手軽に手に入れ られるのも魅力である o GIS を利用した応用研究と開発に優れている。GRASS を以前から使用して いる大学は数多くある。ソース・コードが手に入り、簡単に修正が行な え、スクリプト化も容易、etc といった利点があり、この点で同様なシス テムに対して決定的に優位に立っている o 広く利用可能。さまざまなアプリケーションから GRASS を科学的な分析が 可能な GIS として利用できる。いくつもの UNIX ワークステーションの GIS パッケージとして確固たる地位を維持し続けるだけのことはあ る。UNIX ワークステーションに Linux が含まれるなら、さらにその価値 は上がる(Linux だけに限定しているわけではない) o GIS の研究と開発に向いている。例えば、異なるデータ・モデルを試して 見たくなったら? GRASS に追加してしまえば OK! o 商品化もできる。このドキュメントは商用版の GRASS についての情報を含 んでいる。その企業(たぶんここで紹介されていない企業も?)は、製品に 対するあなたの改良やサポートを歓迎するだろう この管理モデルにおいて、誰が Linus Torvelds 氏の役目をするのでしょう か?おそらく個人ではないと思います。10 年近く GRASS に関わってきました が、科学的なデータ管理と GIS 環境で、私が満足できた GIS は GRASS だけ です。本当のところ GRASS が UNIX を勉強しろ、と強制するまでは、ユーザ フレンドリとはいえない UNIX を敬遠してきました。古くからの GRASS の開 発者たちの中には今でも GRASS 関連の活動を熱心に行っている方もいて、オ ープンな GRASS がしぶとく生き残るところを見たいと思っています。新生 GRASS がたくさんの愛好家を引き付けるようになれればと。このようにして、 共同体としての「Central Committee」というコンセプトが、よりオープンな 運用・開発スタイルへと GRASS を導いていくのではないでしょうか。 早い話が、Linux コミュニティがその傘下に「キラーアプリケーション」を従 わせることができるチャンスなのです。パブリック・ドメインである現在の GRASS は Linux の権利形態とわずかに異なります。しかしそれは議論すれば いいはずで... 意見をお寄せください! 9. 著作権とこのドキュメントのサポートについて 著作権表示 このドキュメントは、ある国家公務員の業務の一環として作成されました(大 部分はプライベートな時間を使ってですが)。このドキュメントは著作権に縛 られません。。 このドキュメントのサポートについて このドキュメントは正確を期しましたが、このドキュメントの何らかの間違い によってあなたに損害を与える恐れがあります(ここで引用しているドキュメ ントについても同様です) このドキュメントの間違いの訂正や改訂をお手伝いいただけると大変助かりま す。ただし、これに関して私が割ける時間は限られていますが。どんな手助け でも歓迎します。そうしていただければ、皆さんが関心を持っていることに対 して効率よくかつ速やかにお答えできると思います。クレームもいただければ と思います。なおこのドキュメントのドラフトになるような改訂の提案は大歓 迎です。 10. 参考文献 GIS 一般についての参考文献は、まず専門書を扱っている書店(GIS の講義が 開かれている学校のキャンパスにある書店や一流の専門書店や大規模な書店な どです。近所に心当たりのある書店があるのでは...)か CyberInstitute Short Course on Geographic Information Systems を見てくださ い(私がやっています) あわせてこれから成長していく GRASS のホームページ(ベイラー大学) や USA/CERL のホームページ も見てください。 GRASS についてのよい参考文献を集めるなら、USA/CERL から文献関係を落と せるだけ落としてください。方法は下記の通りです。 ftp moon.cecer.army.mil login: anonymous password: your email address cd pub/grass/grass4.1/outgoing image get grassman.ps.Z (or grassman.txt.Z, or grassman.wp.Z) cd ../documents/programmer/postscript image get progman.ps.Z cd ../../user/postscript image get refman.ps.Z cd ../.. image get installGuide.ps.Z bye uncompress grassman.ps.Z uncompress progman.ps.Z uncompress refman.ps.Z uncompress installGuide.ps.Z lpr *.ps (ご自分の環境に合った方法で印刷してください) installGuide インストール・ガイド(ソースからコンパイルする時に必要) grassman ビギナーズ・マニュアル(GRASS入門) refman ユーザーズ・マニュアル(機能ガイド) progman プログラマーズ・マニュアル(であり、管理者ガイドでもある。デー タ・フォーマットなどについての情報を得るのにも役立つ) 上記の ftp サイトを巡回すれば、さらに興味深い資料に巡り合えるでしょ う。ます。特に pub/grass/grass4.1/documents ディレクトリには、GRASS の高度な機能について書かれたチュートリアルがあります。例えば r.mapcalc (ラスターレイヤを表す配列データに対する演算を行う)、r.combine と r.weight (複数の空間モデルを組み合わせて、新しいタイプの空間モデルを作 成する)等です。 ちなみにドイツ語での解説をお望みなら、ハノーファー大学 のサイトをどうぞ。 訳註: o ハノーファー大学の URL がかわっていたので、変更してあります o 日本語による GRASS の公開講座は、 1999年度インターネット講座 「地球 科学におけるGRASS GIS入門」 を参照してください o GRASS mirror site at Kyoto Japan も参考になります。 _____________________________________________________________ 11. 付録 A : GRASS4.13 のバイナリの入手方法とインストールのしかた この付録は、Linux 版 GRASS4.13 のバイナリの入手とインストールのしかた について解説します(最新のフルリリース版である GRASS バージョン 4.1 に 対する 3 回目のアップデート版です) 11.1. ファイルの入手方法 ftp moon.cecer.army.mil login: anonymous password: your email address cd pub/grass/grass4.1/release/binaries/linux image mget grassa* bye 11.2. インストール方法 ******************************************************************** * GRASS 4.1 アップデート 3 Linux 版 * * このパッケージは GRASS だけが含まれています。GIS のデータは含まれて * 「いません」。GRASS のサンプル・データは、下記にあります。 * * * * コンパイルした人: Andy Burnett 氏 burnett@zorro.cecer.army.mil * コンパイル日時: 1994 年 4 月 7 日 ******************************************************************** GRASS を動かすために必要なシステム バイナリ配付をインストールするには、 35 MB のディスク容量が必要 必要なライブラリ libc4.5.21 もしくはそれ以上のバージョン。 libX.so.3.1.0 もしくはそれ以上のバージョン これらより古いバージョンのライブラリで Linux を動作させているなら、バ イナリ配付の GRASS は動作しないかもしれません。 -------------------------------------------------------------------------- 11.3. このリリースに含まれるファイル README_4.1.3 今読んでいるドキュメント ginstall 簡単な GRASS のインストール・スクリプト grassaa --------| grassab | grassac | grassad | grassae |-- Linux の GRASS バイナリ grassaf | grassag | grassah | grassai | grassaj | grassak --------| 11.4. インストール この Linux 版 GRASS のバイナリ配付をインストールするには、ginstall ス クリプトを単に実行するだけか、自分でファイルを展開するかのどちらかで す。私としては、ginstall スクリプトを使うことをお勧めします。とても簡 単で、インストールミスを防いでくれるはずです。ginstall スクリプトを動 かすには、あなたのシステムに gawk(gnu awk)がインストールされていて、パ スが通っている必要があります。 もしスクリプトを使わずにインストールしたいなら、下記の手順で行ってくだ さい。 o 展開先のディレクトリを作る(/usr/grass、/usr/local/grass など)ここが あなたの環境での GISBASE になるここから先 $GISBASE はあなたが作った ディレクトリに置き換えて読むこと o cat grassa? | gzip -d | (cd $GISBASE; tar xvf -) これで grass のバイナリすべてが $GISBASE に展開される o $GISBASE/etc/moncap.sample を $GISBASE/etc/monitorcap としてコピー してから適宜編集すること o そのファイルに記述してある GBASE を $GISBASE に変更する o $GISBASE/etc/grass4.1 を各種のバイナリが置かれているディレクト リ(/usr/bin がいいと思います)にコピーする o コピーしたファイルに記述してある GBASE を $GISBASE に変更する _____________________________________________________________ 12. 付録 B : GRASS4.1.5 のバイナリの入手方法とインストールのしかた この付録は、Linux 版 GRASS4.15 のバイナリの入手とインストールのしかた について解説します(最新のフルリリース版である GRASS バージョン 4.1 に 対する 5 回目のアップデート版です)。 12.1. ファイルの入手方法 ftp moon.cecer.army.mil login: anonymous password: your email address cd pub/grass/grass4.1/release/binaries/linux image mget linuxa* bye 12.2. インストール方法 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (4.13 と同じなので省略) 12.3. このリリースに含まれるファイル README_4.1.5 今読んでいるドキュメント ginstall 簡単な GRASS のインストール・スクリプト grassaa --------| grassab | grassac | grassad | grassae |-- Linux の GRASS バイナリ バージョン 4.1.5 grassaf | grassag | grassah | grassai | grassaj | grassak --------| * * * * * * * * * * *** * * * * * * * * * * * * * * * * * * * * * * * * (インストール方法も 4.13 と同じなので省略) Linux 版 GRASS4.15 は次の環境でコンパイルしました。 o Slackware 3.0 o kernel 1.2.13 o gcc 2.7.0 o libc 5.0.9 o flex 3.5.2 12.4. 大切なこと Linux 版 GRASS 4.15 のバイナリは ELF システムの Linux 上でしかうまく動 作しません。また初期バージョンのカーネル、gcc、flex でも問題があると思 います。 バイナリは tar + gzip されていて、linuxg.aa から linuxg.ai という名前 で 9 つのファイル(1200 × 1K のブロックサイズで、約 1.3 MB です)に分割 されています。 linuxg.a* ファイルとこの readme ファイル、インストールのためのスクリプ トである install.sh を ftp のバイナリ・モードで落としてきましょう。こ れらのファイルは同一のディレクトリ(ソースのあるディレクトリ)に置いてく ださい。 ソースのあるディレクトリに移り、下記のように入力してください。 sh ./install.sh インストール先のディレクトリ そうすると自動的にインストール先に展開されます。展開されたなら環境に合 わせていくつかのファイルを編集してください。必要なディスク容量は、約 26 MB です。 インストール先のディレクトリに grass4.1 というスクリプトがあります。イ ンストール先のディレクトリの設定を行なっておいてください。 そして、grass4.1 ファイルをパスが通っているディレクトリに移動もしくは コピーしてください。下記のようにリンクを張っても大丈夫です。 cd /usr/local/bin ln -s インストール先のディレクトリ/etc/grass4.1 grass4.1 これで grass4.1 と入力して、GRASS を動かせるところまできました。後は GRASS の動かし方を勉強してください。 インストール先のディレクトリの /etc 配下に readme ディレクトリがありま す。このディレクトリには、GRASS に採用された各種のコマンドについての readme ファイルがあります。command.readme ファイルを見れば、このバイナ リ・セットに付いているコンパイル済みのコマンドが何であるかわかるように なっています。すべて動作することは保証できませんが、かなりのものがテス ト済みです。動かないコマンドがあれば、GRASS のニュース・グループに投稿 してください。一緒になって解決しましょう。 Yung-Tsung Kang, ミシガン州立大学 _____________________________________________________________ 13. 付録 C : GRASS のソース・コードの入手方法とコンパイルのしかた Linux 版の GRASS のバイナリは、ほとんど問題なく動作します。いったいど うしてソース・コードをいじりたいと思うのでしょうか? 質問の形をとって答えると、「何でこの GIS のソース・コードは手に入らな いんだ? 手に入りさえすれば、どのように動作しているかを理解できるし、 好きなように機能をいじれるのに」(この質問の答えはおわかりですね。多く の商用パッケージは、このようにソース・コードがない形態で販売しています から) お望みなら、 1. ユーザが作成した、たくさんの alpha や contributed にある関数を追加 できる 2. ある関数の動作を理解できる(プログラム上の工夫や性能向上のための改良 が、実際にどの程度その機能に影響を与えているか?) 3. コードの改良と機能強化ができる(こうするつもりなら、`` 付録 D''を参 照のこと) 4. 何 10 MB ものソース・コードをコンパイルしたい。そのためにこの付録が ある。``付録 E''も参照のこと まずソース・コードとインストール・ガイドを手に入れてください。プログラ マーズ・マニュアルとユーザ・リファレンス・マニュアルも欲しくなると思い ます。入手方法は、下記の通りです。 ftp moon.cecer.army.mil login: anonymous password: your email address cd pub/grass/grass4.1/release/source get README.4 get README.5 image mget s4* (or s5*, your choice) cd ../../documents get installGuide.ps.Z cd /manuals/programmer/postscript get progman.ps.Z cd ../../user/postscript get refman.ps.Z bye このサイトは忘れずに。より高度なプログラムのチュートリアルが pub/grass/grass4.1/document にいくつかあります。ダウンロードできるソー ス・コードは 2 種類あります(ここでは GRASS 4.14 について触れています が、4.15 も利用できます)。pub/grass/outgoing ディレクトリにはユーザか ら寄せられた数多くの関数があります(あなたのシステムを強化できる候補と なる関数が他にもたくさんあります) GRASS バージョン 4.14(4.1.4 とも呼ばれる)のソース・コードをインストー ルするには README.4 ファイル、GRASS バージョン 4.15(4.1.5 とも呼ばれ る)の場合は README.5 ファイルにしたがってください。 ソース・コードをインストールしたら、installGuide.ps.Z の圧縮を解いて印 刷してください(もし troff 版が欲しいならとなりのディレクトリから持って きてくださいたい)。同時に refman.ps.Z と progman.ps.Z も同じようにした くなるかもしれませんね。progman.ps.Z はプログラマーズ・マニュアルと呼 ばれるものですが、データ・フォーマットやディレクトリ構造といった価値あ る情報も含まれています。中堅ユーザ以上なら GRASS のシステム・ユーティ リティも知りたくなるかもしれません。たとえ GRASS のコードからそれらを コールしていなくても、です。 それでは、GRASS インストール・ガイド(installGuide.ps.Z)を使って、イン ストールをはじめてください。インストール・ガイドの薄さに最初はとまどう かもしれませんが、Linux をご自分でインストールしたことがあるな ら、GRASS のインストールに取り掛かる準備ができたも同然です。1、2 個の 関数がコンパイルできなくても気にしないでください。私のシステムには、 ずっとコンパイルしていない関数がいくつもあります。幸いなことに、私はそ れらの関数を利用しません。いつの日か、それらを直してコンパイルする日が くるのでしょうか!? _____________________________________________________________ ここで遅ればせながら、新しいリリースの GRASS 4.2 のインストール方法を ベイラー大学の Web から紹介しましょう。 まだリリースされてから日がたっていないので、自分でこのドキュメントを改 訂していません。どうか他のバージョンのインストールとほとんどかわらない ことを覚えておいてください。 13.1. GRASS 4.2 を簡単に動かすためのインストール方法 注意:この解説は、GRASS 4.2 に関するものです。より詳細なインストール方 法を見てみたいと望まれるなら、インストール・ガイドを参照することをお勧 めします。 $GIS/src このディレクトリには、GRASS をコンパイルする時に必要なスクリ プトとファイルがあります。そこにあるスクリプト類を動かし、プログラムの 設定リストを変更すれば、あなたのシステムにあった GRASS が構築されま す。 ソースをコピーしなくても、別のマシンから GRASS のソースがあるディスク をマウントして、コンパイルをすることができます。下記の手続きにしたがっ て、インストールしたいマシンで実行してください。 注意:これらの方法は、あなたが UNIX や C言語、make、シェルスクリプトに 熟知していることを前提にしています。マーフィーの法則は GRASS にもちゃ んと当てはまります。マーフィー氏に対抗できるかどうかは、あなたの熟練度 次第です。 注意:GRASS をコンパイルするために、この解説とスクリプトはさまざまな種 類のマシンで利用されています。この解説を使ってコンパイルしたプラット フォームとオペレーティング・システムを grass@baylor.edu宛にメールして ください。 13.1.1. ディレクトリ構成 GISGEN GRASS をコンパイルするスクリプト MAKELINKS GISGEN を実行した後に使用するスクリプト。ユーザが実行できるコマ ンドを作成する VERSIO この GRASS のリリースのバージョンと日付 generic/ gmake を実行する時に必要なシステムに非依存なファイルがあるディレ クトリ。 gmake コンパイルを行うシェル・スクリプト make.def 変数を定義する make.tail make 時の追加規則を定義する head/ gmake のヘッダー・ファイルのあるディレクトリ。サイトによって異な る。ヘッダー・ファイルは、/utils/setup コマンドによって作成され る lists/ コンパイル対象のプログラムリスト GRASS GRASS 標準のプログラム local サイト固有のプログラム ... アーキテクチャ依存のプログラム next_step/ コンパイルの履歴を管理するファイルがあるディレクトリで、GISGEN によって使用される。GISGEN が何らかの理由で失敗した時に、失敗し たところから再処理する場合に使用される utils/ 「setup」スクリプトがあるディレクトリ。「setup」スクリプトが必要 とするスクリプトとファイルがすべて含まれている 13.1.2. コンパイルの大まかな流れ 1. 地域情報の選択やマシン依存の make に必要な情報を記述するファイルを 作成 2. 地域情報のリストが記述されているファイルや、マシン依存のコンパイル に必要な情報についてのリストが記述してあるファイルを編集する(プリン ター、デジタイザーやグラフィック・ドライバなど) 3. コンパイル・スクリプトを動かす 4. プログラムをリンクさせるスクリプトを動かす 5. デバイス・ドライバ設定ファイルを編集する 6. contrib ディレクトリや alpha ディレクトリにあるプログラムをコンパイ ルする 7. GRASS に関連するもしくは GRASS が利用する/利用されるプログラムをコ ンパイルする 13.1.3. コンパイルの詳細なステップ 1. make で使用するファイルを作成する。 GRASS をコンパイルする方法は、 マシンや選択した地域情報によってさまざまなケースが考えられます。 o コンパイルとライブラリをリンクする時のフラグ o システムに既にあるライブラリ o インストールするディレクトリ o デフォルトのデータベースと選択した地域 /utils/setup シェル・スクリプトを使えば、make で必要な数多くのオプ ションおよび定義の設定が簡単になります。これらの設定は、コンパイル する度に作成される makefile (約 350 個)が対象になります。あわせて個 々の GRASS プログラムをコンパイルするためのシェル・スクリプ ト(gmake4.2)も作成します。 「utils/setup」を動かして、質問に答えていってください。 makefile の一部は head/ 配下に置かれます。/utils/setup を実行する間 にあなたが指定(もしくは許可)した名前になっています。コンパイルを制 御するための実行可能なスクリプトは、デフォルトで /usr/local/bin に 置かれます。 head/ にできたファイルを調べて、万事 OK か確かめてください。定義さ れた変数についての簡単な説明は下記の通りです。 ARCH GRASS をコンパイルするマシンのアーキテクチャを意味するキーワード UNIX_BIN GRASS の使いはじめに使用するプログラムや gmake が含まれるローカ ル・ディレクトリ DEFAULT_DATABASE ローカルな GRASS のデータベースが含まれるディレクトリ DEFAULT_LOCATION ユーザが最初の段階で使用する GRASS データベース COMPILE_FLAGS コンパイルのフラグ LDFLAGS ライブラリのリンクフラグ COMPILE_FLAGS コンパイルのフラグ TERMLIB 低レベルでカーソルの動作を制御するシステム付属のライブラリ CURSES スクリーン上でカーソルを制御するシステム付属のライブラリ MATHLIB システム付属の算術ライブラリ LIBRULE ライブラリをアーカイブ、乱数化する方法 USE_TERMIO termio ライブラリが利用可能な場合に使うフラグ USE_MTIO mtio ライブラリが利用可能な場合に使うフラグ CAN_CLEAR 端末スクリーンがクリアできるかどうかのフラグ DIGITFLAGS v.digit コマンドのオーナーとプライオリティのフラグ 2. 地域情報と環境固有のプログラムのリストを含むファイルの編集 コンパイル対象となるディレクトリのリストが書いてあるファイル は、lists/ ディレクトリにあります。ディレクトリ名は、GRASS の src ディレクトリの相対パスで記述してあります。lists/GRASS ファイルはど の環境でもコンパイルされる基本的な GRASS のプログラムがリストされて います。/lists/local と lists/$ARCH がそのファイルに当たります。 ----------------------------------------------------------------- $ARCH はアーキテクチャ名です。utils/setup script を実行する間に設定 することになります。下記のコマンドでどのアーキテクチャにするかを決 めることができます。 gmake4.2 -sh | grep ARCH ----------------------------------------------------------------- lists/$ARCH ファイルはもともとは存在しませんが、勝手にこのファイルを作 成して、このアーキテクチャ上で自分がコンパイルしたいプログラムを追加す ることができます。このアーキテクチャ依存リストを使えば、NFS 経由でソー ス・コードをリンクすることによって、マシン毎にいろいろな組合せでプログ ラムのコンパイルが可能になります。NFS 経由でマウントすることによって、 同一のソース・コードを共有したマシンは、lists/local にリストされている ディレクトリをコンパイルすることになります。 コメント行がリストすべてに含まれていると思います。# が行頭にある部分が それに当たります。lists/local ファイルには、すべてのデジタイザー、グラ フィック、印刷(ハード・コピー)ドライバがリストされています。マシン固有 のドライバはすべてコメントアウトされています。あなたの環境とアーキテク チャにあったものは、コメントをはずす必要があります。グラフィック・ドラ イバ関連は、該当する lists/$ARCH ファイルに移動させた方がよいと思いま す。 3. GRASS をコンパイルするプログラムを動かす GISGEN スクリプトは、コンパイル作業を制御します。問題が何もなけれ ば、GISGEN を動かしてただ待つだけです。コンパイルが完全に終わるに は、早いワークステーションなら 約 30 分、遅いものなら 約 8 時間かか ります。 GISGEN は lists/GRASS や /lists/$ARCH、lists/local に指定してあるコ ンパイル対象になるディレクトリ名を収集して、そのディレクトリごとに gmake4.2 を走らせます。画面には、GISGEN と UNIX の make プログラム が出すメッセージが表示されます。途中で失敗するとコンパイルが中断さ れます。失敗した場合、下記の手順の内のどれかを行なうことになるで しょう。 a. 失敗したディレクトリにあるコードを修正して、コンパイル上の問題を 修正する。修正後に GISGEN のあるディレクトリに戻り、GISGEN を再 実行する。コンパイルは失敗したディレクトリから再開され、成功すれ ば、リストにあげられている次のディレクトリに移り、コンパイルを続 行する b. GISGEN を再実行する。すでにコンパイルされたコードや``ステップ 1 ''で設定したオプションの修正が必要な場合は、next_step/ $ARCH(``ステップ 2 ''でアーキテクチャ名を設定していないな ら、next_step/next_step)を削除する。削除したなら、GISGEN を再実 行する c. 失敗したディレクトリを飛ばす。この場合は、失敗したディレクトリ名 の次にコンパイルすることになっているディレクトリ名を list/GRASS や lists/$ ARCH、lists/local の中から捜さなければならない。失敗 した名前が、 next_step/ $ARCH にあるので、その名前を次にコンパイ ルするディレクトリ名に置き換える。置き換えたら GISGEN を再実行す る GISGEN が完了すると、next_step ファイルに DONE という単語が書かれ、 画面に「DONE generating GIS binary code」と表示される 4. GRASS プログラムをリンクする GISGEN はコンパイルしている過程で、ユーザから直接利用できないディレ クトリに GRASS プログラムを隠蔽する。ユーザの多くが使うコマンドは、 「front.end」と呼ばれる 単体のプログラムにリンクされる。このプログ ラムは GRASS の各々のプログラムにリンクされていなければならない。こ の作業は GISGEN が終った後に行われる。ユーザの使用するプログラムに リンクを張る(張り直す)には MAKELINKS スクリプトを実行する 5. デバイス・ドライバの設定ファイルを編集する グラフィック、印刷、デジタイザーのドライバの組合せはシステムによっ ていろいろです。詳細は、GRASS のインストール・ガイドを参照のこと。 注意:グラフィック・ドライバのコンパイルで悩むことになったら、 $GIS/src/display/devices ディレクトリに移り、gmake4.2 を使って該当 するドライバをマニュアルでコンパイルすること 6. contributed なもしくは alpha なプログラムをコンパイルする GRASS プログラムは、3 つに分類できる。 MAIN ``ステップ 3 ''でコンパイルしたプログラム。これらは十分なテスト がほどこされ、信頼性の高いプログラム ALPHA Alpha プログラムは次のリリースで MAIN に含まれる予定のプログラム CONTRIB GRASS を使う上で、何らかの作業を遂行するための特定目的にあったプ ログラムが各サイトで数多く作られている。これらは alpha コードの 分類に入れられる程充分に洗練されていない ALPHA プログラムは、src.alpha ディレクトリにある。望みのプログラム をコンパイルしてみよう。そのディレクトリには、Gmakefile があるの で、 gmake4.2 を実行するだけで OK 。 CONTRIB プログラムは、src.contrib ディレクトリにある。これらのプロ グラムは多種多様である。中には gmake4.2 でコンパイルできるものもあ るかもしれない。これから新しいソフトウエアを書こうとしているプログ ラマーにとって、きっかけをつかむよい例になるものもある。 7. GRASS 関連もしくはGRASS と共同して作業するプログラムのコンパイル GRASS のユーザたちは、GRASS と連携して動作させるととても便利なパブ リック・ドメインなプログラムがいくつかあることに気づいた。これら は、 src.related ディレクトリにある。それぞれのディレクトリにある解 説にしたがって(解説がない場合もある)コンパイルすること。 GRASS に関連したプログラム(単独もしくは複数)の機能と GRASS の機能を 組み合わせて動作するのがハイブリッドなプログラムである。これら は、src.garden ディレクトリにある。ハイブリッドなプログラムを動作さ せるには、関連したプログラムが既にコンパイルされていることが前提に なる。また 一般的に gmake4.2 か Gmakefile を使ってコンパイルするこ とになる。 _____________________________________________________________ 残りのコンパイルには少々時間がかかるはずです。GRASS のバイナリをインス トールしてあるなら、システムのバックアップを取っておいてください(少な くともコンパイルによって動作しているバイナリに影響をあたえないようにし てください!)。 幸運を祈っています! ソース・コードからすべてをコンパイルしないなら、 コンパイル済みのバイナリを利用できる算段をしておいてください。 _____________________________________________________________ 14. 付録 D:GRASS の機能を強化するつもりなら、まず目を通してくださ い! GRASS は まったく制限を受けないパブリック・ドメインなソース・コードと 実行形式として、ここ 10 年以上開発されてきました。パブリック・ドメイン でありながら強力なこのソフトウエアの存在に対して、当初は競争相手からの 妨害もありましたが、それらも GRASS を上手に利用するようになりました。 世評では GRASS 以外の GIS の機能強化のいくつかは、GRASS から得られた知 的な刺激によって生まれた、とされています。企業の中には顧客に対して、ビ ジネスとしてパブリック・ドメインの GRASS のインストールやカスタマイ ズ、データベース開発など、他の付加価値をサービスとして提供しました。 USA/CERL はもはやパブリック版の GRASS をサポートしていませんが、ユーザ は現在あるものを自由に利用することができます。もはや GRASS は完全に独 立したものになったのです。少なくともパブリック・ドメイン版については。 商用版の GRASS は、 にあります。これはパ ブリック・ドメイン版のものをモントリオールの Logiciels et Applications Scientifiques (L.A.S)が改良したものです。現在 LAS は GRASSLAND として Sun、Linux、Windows NT 版を販売しています。LAS は Linux におけるパブ リック・ドメイン版の開発を支援し続けようとしており、自分達の開発のため の新しいアイディアとコードの情報源として利用しています。 15. 付録 E:Linux 版の GRASS で主要な設定ファイルの例 この付録は Linux に 固有な設定ファイルの例を選びました。今のところ 1 種類のファイルのいくつかの例だけがあげられています。しかしこれは最も大 切な設定ファイルです! 今後、データベースの設定ファイル(DEFAULT_WIND など)の例や他のファイルも載せる予定です。 $GIS/src/CMD/header ディレクトリにある [header] ファイルの解説は、イン ストール・ガイドの 10-11 頁に載っています($GIS は、GRASS がインストー ルされているディレクトリです。慣例にしたがうとそのディレクトリは /usr/local になります。私は独立したファイルシステム/ディレクトリに なっている /user/grass4.1 に GRASS のすべてインストールしています)。イ ンストール・ガイドは、Sun のシステムを意識して書かれています。それは GRASS4 の開発環境が Sun だったからです(初期の開発は Masscomp のワーク ステーションで行われたことも気にかけておいてください)。下記に Linux で 使用するこのファイルの例をあげておきます。$/src/CMD/header ディレクト リに linux という名前で置いて置きたくなるかもしれませんね。setup コマ ンド($GIS/src/CMD/utils/setup) を動かす時に参照してください。 ______________________________________________________________________ One version: CC = gcc ARCH = GISBASE = /user/grass4.1 UNIX_BIN = /user/grass4.1/bin DEFAULT_DATABASE = /user/grass4.1/data DEFAULT_LOCATION = china COMPILE_FLAGS = -O2 LDFLAGS = -s XCFLAGS = -D_NO_PROTO -DXM_1_1_BC XLDFLAGS = XINCPATH = XMINCPATH = XLIBPATH = XTLIBPATH = -L/usr/lib XMLIBPATH = -L/usr/lib XLIB = -lX11 XTLIB = -lXt XMLIB = -lXm XEXTRALIBS = TERMLIB = CURSES = -lcurses $(TERMLIB) MATHLIB = -lm # LIBRULE = ar ruv $@ $? # LIBRULE = ar ruv $@ $?; ranlib $@ # LIBRULE = ar ruv $@ $?; ar ts $@ # LIBRULE = ar rc $@ `lorder $(OBJ) | tsort` LIBRULE = ar ruv $@ $? USE_TERMIO = -DUSE_TERMIO USE_MTIO = -DUSE_MTIO USE_FTIME = -DUSE_FTIME DIGITFLAGS = -DUSE_SETREUID -DUSE_SETPRIORITY VECTLIBFLAGS = GETHOSTNAME = -DGETHOSTNAME_OK _____________________________________________________________ Another version: #CC = gcc #CC = gcc -ggdb -traditional CC = gcc -traditional #CC = gcc -static ARCH = linux GISBASE = /usr2/local/grass/grass4.1 UNIX_BIN = /usr/local/bin DEFAULT_DATABASE = /usr2/local/grass DEFAULT_LOCATION = grass4.1 COMPILE_FLAGS = #COMPILE_FLAGS = -O LDFLAGS = -s XCFLAGS = -D_NO_PROTO XLDFLAGS = XINCPATH = -I$GISBASE/xgrass #XINCPATH = XMINCPATH = XLIBPATH = -L/usr/lib XTLIBPATH = -L/usr/lib XMLIBPATH = -L/usr/lib XLIB = -lX11 XTLIB = -lXt XMLIB = -lXm XEXTRALIBS = TERMLIB = CURSES = -lcurses $(TERMLIB) MATHLIB = -lm # LIBRULE = ar ruv $@ $? # LIBRULE = ar ruv $@ $?; ranlib $@ # LIBRULE = ar ruv $@ $?; ar ts $@ # LIBRULE = ar rc $@ `lorder $(OBJ) | tsort` LIBRULE = ar ruv $@ $?; ranlib $@ USE_TERMIO = -DUSE_TERMIO USE_MTIO = -DUSE_MTIO USE_FTIME = -DUSE_FTIME DIGITFLAGS = -DUSE_SETREUID -DUSE_SETPRIORITY VECTLIBFLAGS = GETHOSTNAME = -DGETHOSTNAME_OK _____________________________________________________________ Another version: #CC = gcc -traditional -ggdb CC = gcc -traditional -m486 #CC = gcc ARCH = linux GISBASE = /usr/local/grass/grass4.1 UNIX_BIN = /usr/local/bin DEFAULT_DATABASE = /usr/local/grass DEFAULT_LOCATION = grass4.1 COMPILE_FLAGS = -O2 LDFLAGS = -s XCFLAGS = -D_NO_PROTO -DXM_1_1_BC XLDFLAGS = XINCPATH = XMINCPATH = XLIBPATH = -L/usr/lib XTLIBPATH = -L/usr/lib XMLIBPATH = -L/usr/lib XLIB = -lX11 XTLIB = -lXt XMLIB = -lXm XEXTRALIBS = -lXmu TERMLIB = CURSES = -lcurses $(TERMLIB) MATHLIB = -lm # LIBRULE = ar ruv $@ $? # LIBRULE = ar ruv $@ $?; ranlib $@ # LIBRULE = ar ruv $@ $?; ar ts $@ # LIBRULE = ar rc $@ `lorder $(OBJ) | tsort` LIBRULE = ar ruv $@ $?; ranlib $@ #USE_TERMIO = #-DUSE_TERMIO USE_TERMIO = -DUSE_TERMIO USE_MTIO = -DUSE_MTIO USE_FTIME = -DUSE_FTIME DIGITFLAGS = -DUSE_SETREUID -DUSE_SETPRIORITY VECTLIBFLAGS = GETHOSTNAME = -DGETHOSTNAME_OK _____________________________________________________________ Yet another version: CC = cc ARCH = linux GISBASE = /usr/local/grass4.15/linux UNIX_BIN = /usr/local/grass4.15/linux DEFAULT_DATABASE = /data/grassdata DEFAULT_LOCATION = # -fwritable-strings - for ps.map only #COMPILE_FLAGS = -O -m486 -fwritable-strings COMPILE_FLAGS = -O -m486 LDFLAGS = -s XCFLAGS = -D_NO_PROTO XLDFLAGS = XINCPATH = XMINCPATH = XLIBPATH = -L/usr/X11R6/lib XTLIBPATH = -L/usr/lib XMLIBPATH = -L/usr/lib XLIB = -lX11 XTLIB = -lXt XMLIB = -lXm XEXTRALIBS = TERMLIB = CURSES = -lcurses $(TERMLIB) MATHLIB = -lm # LIBRULE = ar ruv $@ $? # LIBRULE = ar ruv $@ $?; ranlib $@ # LIBRULE = ar ruv $@ $?; ar ts $@ # LIBRULE = ar rc $@ `lorder $(OBJ) | tsort` LIBRULE = ar ruv $@ $? USE_TERMIO = -DUSE_TERMIO USE_MTIO = -DUSE_MTIO USE_FTIME = -DUSE_FTIME DIGITFLAGS = -DUSE_SETREUID -DUSE_SETPRIORITY VECTLIBFLAGS = -DPORTABLE_3 GETHOSTNAME = -DGETHOSTNAME_OK ______________________________________________________________________ 脅かしてしまいましたか? X Window System をすでに設定しているなら、そ んなことはないですよね。この設定例は GRASS のセットアップ ユーティリ ティを使う時(インストール・ガイドで説明されています)の道しるべになると 確信しています。 訳註:GRASS 4.21 の Linux(x86)用 header ファイルは、 にあります。 16. 日本語版謝辞 翻訳に当たり、下記のサイトの情報を参考にさせていただきました。この場を かりてお礼申し上げます。 o 1999年度インターネット講座 「地球科学におけるGRASS GIS入門」, ます もと@大阪市立大学理学部地球学教室 さん o GRASS mirror site at Kyoto Japan,小野@京大環境地球 さん 17. 日本語版お願い 原文が書かれてから 2 年が経過しているため、記載されている情報が古く なっています。著者の David A. Hastings 氏は、リライト作業を進めてい らっしゃいますが、なかなか時間を割くことができないとおっしゃっていまし た。 わかる範囲で GRASS の現状を調べ、訳註に記述しました。 地理学および GIS、GRASS の各専門家の方のフィードバックは大歓迎です。よ ろしくお願いいたします。 なお訳註にある情報は、1999 年 10 月 24 日現在のものです。