postgis チュートリアル
Postgisを使い始める
サーチ…
備考
PostGISは、PostgreSQLデータベースの拡張セットです。 PostGISを使用すると、地理空間データを格納し、Postgresデータベースに空間クエリを実行できます。
通常のpostgresデータベースのデフォルトのデータ型とは異なり、空間データは別の方法で処理する必要があります。空間データベースで実行できるクエリは、通常、2次元または3次元のバウンディングボックスによって定義されます。これらのデータ型を格納、索引付け、および処理するためにpostGISは、デフォルトのpostgres-installationの一部ではないR-Treesという概念を使用します。
postGISデータベースを使用すると、次のことが可能になります。
- 空間データを保存する
- 空間クエリーを実行して、情報(ポイント、エリア)を取り出して抽出する。
- テーブル上の空間情報とメタデータを管理する(used coorinate-reference-systemなど)。
- ジオメトリをある座標系から別の座標系に変換する
- ジオメトリを比較し、プロパティを抽出する(道路や建物のエッジの長さなど)
- 他のものから新しいジオメトリを生成します。
バージョン
| 最新の機能リリース | 公式文書 | 発売日 |
|---|---|---|
| 2.3.0 | HTML 、 PDF | 2016-09-26 |
| 2.2.0 | HTML 、 PDF | 2015-10-07 |
| 2.1.0 | HTML 、 PDF | 2013-08-17 |
| 2.0.0 | HTML 、 PDF | 2012-04-03 |
| 1.5.0 | 2010-02-04 | |
| 1.4.0 | 2009-07-24 | |
| 1.3.0 | 2007-08-09 | |
| 1.2.0 | 2006-12-08 | |
| 1.1.0 | 2005年12月21日 | |
| 1.0.0 | 2005年4月19日 |
パッケージマネージャによるインストール
アーチ:
公式のパックマンパッケージが利用可能です。次のコマンドを使用して、パッケージをrootとしてインストールします。
pacman -S postgis
OpenSuse:
地理空間アプリケーションにopenSuseリポジトリを使用するには、ジオリポジトリをrootとして有効にします。
zypper ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_[RELEASE]/ GEO
ここで[RELEASE]はあなたのSuse配布の公式リリース番号です。その後、次のようにpostgisをインストールすることができます。
zypper install postgis
ソースからのインストール(Postgres 9.1以降)
このガイドは、Linuxマシン上のPostgreSQL 9.1以降を対象としています。既存のpostgresインストールへの拡張機能のインポートを大幅に改善するpostgres拡張機能を使用します。以前のバージョンのpostgresで作業する必要がある場合は、 公式文書を参照してください。
依存関係を解決する
PostGISは、多くの依存関係を持つ複雑なプロジェクトです。手動構成とビルド手順を続行するには、これらの依存関係を解決し、手動またはパッケージマネージャを使用して次のパッケージをインストールする必要があります。
最小要件
- PostgreSQL 9.1以降。それはあなたが通常あなたのリポジトリのパッケージマネージャのDEVの -packagesで見つかったサーバーヘッダを含むデータベースをインストールすること、が重要です。
- GNU Cコンパイラgcc 。
- GNU make 。ビルドプロセスを完了する。
- Proj4 。 coordniate変換のための投影ライブラリ。
- GEOS 。フィーチャの説明と単純なジオメトリを実装するジオメトリライブラリ。 ST_ClipByBox2DやST_Subdivideなどの新しい関数を使用するには、バージョン3.5以降が推奨されます。
- GDAL 、バージョン1.9以上ラスタベースおよびベクトルベースの地理空間データの抽象データ形式を実装するライブラリ。
- LibXML2 、バージョン2.5以上。 XML、XSLT、およびDTDで動作するライブラリ。
- JSON-C 、バージョン0.9以上JSON形式で出力を作成するライブラリ
オプション要件
- shp2pgsql-guiをコンパイルするにはGTK (GTK + 2.0、2.8+が必要)が必要です。
- SFCGAL 、バージョン1.1(またはそれ以上)は、PostGISに追加の2Dおよび3D高度な解析機能を提供するために使用できます。
- PCRE 。 Perl 5構文を使用した正規表現パターンマッチングのためのライブラリ。このライブラリは、 Adress Standardizerで作業する場合に必要です。
- CUnit 。回帰テストに必要な単体テストユーティリティ。
- ドキュメンテーションの作成にはDocBook (xsltproc)が必要です。
- DBLatexは、PDF形式のドキュメンテーションを構築するために必要です。
- ドキュメントで使用されるイメージを生成するには、 ImageMagickが必要です。
ソースを入手する
ソースコードを入手するには、最新のtarballをダウンロードしてください:
wget http://postgis.net/stuff/postgis-2.3.2dev.tar.gz
tar -xvzf postgis-2.3.2dev.tar.gz
公式のSVNリポジトリを使用する:
svn checkout http://svn.osgeo.org/postgis/trunk/ postgis-2.3.2dev
構成
SVN経由でソースを入手した場合は、次のコマンドを使ってconfigスクリプトを準備することができます。
./autogen.sh
特定のマシンのビルドプロセスを設定するには、プロジェクトフォルダ内で実行します。
./configure
構成ステップには、いくつかのオプションのパラメーターがあります。詳細な手順については、 公式のドキュメントを参照してください。これは通常オプションで、デフォルト以外のインストールを使用するサーバーの場合にのみ適用されます。
ビルド
設定ステップが正常に終了すると、メイクファイルが作成されます。ビルドプロセスの実行を開始するには:
make
最後の出力は次のようになります。
"PostGIS was built successfully. Ready to install."
バージョン1.4.0以降、すべての関数にはドキュメンテーションから生成されたコメントがあります。これらのコメントを後で空間データベースにインストールする場合は、docbookが必要なコマンドを実行してください。
make comments
インストール
すべての拡張機能をインストールするには:
make install
PostGIS拡張機能は、PostgreSQL 9.1以降を使用している場合に自動的に構築されインストールされます。セットアップが異なる場合は、必要な拡張機能を手動でインストールできます。
プロジェクトフォルダ:
cd extensions
cd postgis
make clean
make
make install
cd ..
cd postgis_topology
make clean
make
make install
cd ..
cd postgis_sfcgal
make clean
make
make install
cd ..
cd address_standardizer
make clean
make
make install
make installcheck
cd ..
cd postgis_tiger_geocoder
make clean
make
make install
make installcheck
拡張機能を別のマシンに手動でインストールする場合は、 extensionsフォルダから次のファイルをターゲットのPostgreSQL/share/extension -folderにコピーします。各拡張機能について:
scp extensions/[EXTENSION]/sql/*.sql user@target:[POSTGIS_PATH]/share/extension
[EXTENSION]は選択された拡張子(postgis、postgis_topology、postgis_sfcgal、address_standardizer、postgis_tiger_geocoder)です。 [POSTGIS_PATH]は、ターゲットマシン上のPostGISインストールパスです。
インストールの検証
postgresデータベースサービスがない場合は、 まずpostgresデータベースを設定してください 。次のコマンドを使用して、データベースに接続します。
su postgres -c psql
拡張機能がアクセス可能であることを確認するには、psql-sessionで次のクエリを実行します。
SELECT name, default_version,installed_version FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';
出力は次のようになります。
name | default_version | installed_version
------------------------------+-----------------+-------------------
address_standardizer | 2.3.2dev | 2.3.2dev
address_standardizer_data_us | 2.3.2dev | 2.3.2dev
postgis | 2.3.2dev | 2.3.2dev
postgis_sfcgal | 2.3.2dev |
postgis_tiger_geocoder | 2.3.2dev | 2.3.2dev
postgis_topology | 2.3.2dev |
(6 rows)
詳細なインストール後のテストを実行するには、プロジェクトフォルダで次のコマンドを実行します。
make check
これは、生成されたライブラリを実際のPostgreSQLデータベースに対して使用して、さまざまなチェックとテストを実行します。
地理空間データベースの設定
新しい空のデータベースを作成するには、postgres-userとして実行します。
createdb [yourdatabase]
psql-sessionを使用してデータベースに接続する:
psql -d [yourdatabase]
psql-sessionの実行では次のようになります。
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
必要な地理空間拡張を作成します。これが完了すると、データベースは地理空間対応のデータベースであり、すぐに使用できます。
地理空間 "Hello World"
この例では、地理空間データベースをセットアップし、2つの異なるソースからデータをインポートし、QGISと呼ばれるアプリケーションで結果を表示します。このガイドはLinuxマシン用に明示的に書かれています。別のプラットフォームで動作させている場合、コマンドやパスが期待どおりに動作しない場合があります。
インポートされたデータを表示するために、 QGISというアプリケーションを使用します。このアプリケーションをお持ちでない場合は、 最初にインストールしてください。別のビューアまたはジオアプリケーション(ArcGISなど)を使用する場合は、QGISのインストールをスキップできます。
私たちの情報源は、ニューヨーク市の国会議事堂地区とニューヨーク市のライオンストリートマップデータベースです。リンク先から適切なファイルをダウンロードしてください。マテリアルのメタデータセクションも見てください。マテリアルのメタデータセクションは、これらのファイルが使用する座標参照システムに関する情報を提供するためです。
開始するには、作業フォルダ "nycgis"を作成し、ダウンロードしたファイルを場所にコピーし、アーカイブを解凍します。
mkdir nycgis
cd nycgis
cp ~/Downloads/nyad_16d.zip .
unzip ~/Downloads/nyad_16d.zip
cp ~/Downloads/nylion_16d.zip .
unzip ~/Downloads/nylion_16d.zip
"nycgis"フォルダには2つのフォルダがあります: "nyad_16d"、 "lion"、いくつかのファイル。
地理データを扱うときは、ソースデータと最終出力データの座標参照システム(CRS)を知ることが非常に重要です。リンク先ロケーションのメタデータセクション( メタデータ:アセンブリ区画 、 メタデータ:LIONデータベース )では、両方のファイルのCRSが米国北東部を参照する座標系であるEPSG:2263であることがわかります。
私たちのデータベースに異なるCRSを使用することを想定します。これにはさまざまな理由があります。たとえば、データベース上のWebベースのジオアプリケーションを使用したい場合があります。この種類のアプリケーションの一般的なCRSは、WGS:84(EPSG:4326)です。
座標系を変換するには、GDALパッケージの一部であるogr2ogrというツールを使用します。作業フォルダでは、再投影されたデータを表す2つのフォルダを作成し、次にデータを変換します。
mkdir nyad_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nyad_16d_proj_4326/nyad_4326.shp ./nyad_16d/nyad_16d.shp -s_srs EPSG:2263 -t_srs EPSG:4326
mkdir nylion_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nylion_16d_proj_4326/ny_str_4326.shp ./nylion_16d/lion/lion.gdb/a0000000d.gdbtable -s_srs EPSG:2263 -t_srs EPSG:4326
私たちの目的のためにLION-Databaseの "a0000000d.gdbtable"というファイルのみを使用していることに注意してください。 ogr2ogr -commandの構文は次のとおりです。
ogr2ogr -f [output-format] [output-file] [input-file] -s_srs [source crs] -t_srs [target crs]
正しいCRSに投影された2つのシェープファイルが作成されました。データベース内のデータを使用するには、シェープファイルをsql-statemensに変換する必要があります。このために、 shp2pgsqlというツールを使用します。作業ディレクトリで次のコマンドを実行します。
shp2pgsql ./nyad_16d_proj_4326/nyad_4326.shp > nyad_4326.sql
shp2pgsql ./nylion_16d_proj_4326/ny_str_4326.shp > ny_streets_4326.sql
これで、ファイルnyad_4326.sqlとny_streets_4326.sqlがnyad_4326.sqlで使用できるようになりました。続行し、データをインポートすると、空間的に使用可能なデータベースが作成されます。
sudo su - postgres
createdb nycgis
psql -d nycgis
psql-sessionで次のコマンドを実行します。
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
psql-とpostgres-user-sessionsを(CTRL + D)で終了します。そして、次のようにファイルをインポートします。
psql -f nyad_4326.sql -d nycgis
psql -f ny_streets_4326.sql -d nycgis
nycgis作成されたソースが正常にインポートされたnycgis 、データベースnycgisには2つのテーブルがあります。
これを確認するには:QGISを開きます
- レイヤーを 追加 > レイヤーを 追加 > PostGISレイヤー
- あなたのデータベースに接続する
- あなたのテーブルを選択する
- (オプション)新しく作成されたレイヤーのスタイリングを設定します。
Etvoilà:インポートされ再投影された地理データを持つ、空間的に有効なデータベースが作成されました。
