本章では、PostGISのインストールに必要な手順について説明します。
全ての依存がパスに入っているとする場合、次のようにコンパイルします。
tar xvfz postgis-3.1.0.tar.gz cd postgis-3.1.0 ./configure make make install
PostGISがインストールされたら、使用したい個々のデータベースで有効にする (「空間テーブルの作成」)かアップグレード (「空間データベースのアップグレード」)する必要があります。
![]() | |
多くのOSで、ビルドされたPostgreSQL/PostGISパッケージがあります。多くの場合、コンパイルが必要なのは、最もひどい最先端の版が欲しい場合やパッケージメンテナンスを行う人ぐらいです。 本節では、一般的なコンパイル手順を示します。Windows用や他のOS用等にコンパイルするなら、PostGIS User contributed compile guidesやPostGIS Dev Wikiで、より詳細な助けが見つかるかも知れません。 多くのOS用のビルド済みパッケージの一覧はPostGIS Pre-built Packagesにあります。 Windowsユーザは、スタックビルダかPostGIS Windows download siteから安定したビルドを得ることができます。また、通常は週に1回か2回で、何かあったときはその都度ビルドするvery bleeding-edge windows experimental buildsもあります。これは、PostGISの進行中のリリースを試すのに使います。 |
PostGISモジュールは、PostgreSQLバックエンドサーバの拡張です。PostGIS 3.1.0では、コンパイルのために、完全なPostgreSQLサーバヘッダが必要です。PostgreSQL 3.1.0以上でビルドできます。古い版のPostgreSQLはサポートされません。
PostgreSQLをインストールしていないならPostgreSQLインストールガイドを参照して下さい。http://www.postgresql.org/にあります。
![]() | |
GEOS機能を有効にするために、PostgreSQLをインストール時に明示的に標準C++ライブラリに対する明示的なリンクが必要になる場合があります。 LDFLAGS=-lstdc++ ./configure [コンフィギュアオプション] これは、古い開発ツールとインチキC++例外との対話のための応急処置です。怪しい問題 (望んでいないのにバックエンドが閉じたりそれに近い挙動を起こす)を経験したなら、このトリックを試してみて下さい。もちろん、これを行うにはPostgreSQLをはじめからコンパイルし直す必要があります。 |
次のステップでは、PostGISソースのコンフィギュレーションとコンパイルに概要を記述します。これらは、Linuxユーザ用に書いてありますので、WindowsやMacでは動作しません。
ダウンロードサイトhttp://download.osgeo.org/postgis/source/postgis-3.1.0.tar.gzからソースのアーカイブを入手します。
wget http://download.osgeo.org/postgis/source/postgis-3.1.0.tar.gz tar -xvzf postgis-3.1.0.tar.gz
これで、カレントディレクトリの下にpostgis-3.1.0
ができます。
もしくは、 git レポジトリの https://git.osgeo.org/gitea/postgis/postgis/ からソースをチェックアウトします。
git clone https://git.osgeo.org/gitea/postgis/postgis.git postgis
新しく作られたpostgis
ディレクトトリに移動して、インストールを続けます。
PostGISのビルドと利用のために、次のものが必要です。
必須
PostgreSQL 9.6以上。PostgreSQLの完全なインストール (サーバヘッダを含む)が必要です。PostgreSQLは http://www.postgresql.org/にあります。
完全なPosgreSQL/PostGIS対応表とPostGIS/GEOS対応表についてはhttp://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGISをご覧ください。
GNU Cコンパイラ (gcc
)。ANSI Cコンパイラの中には、PostGISをコンパイルできるものもありますが、gcc
でコンパイルするのが最も問題が少ないと見ています。
GNU Make (gmake
またはmake
)。多くのシステムで、GNU makeがデフォルトのmakeになっています。make -v
を実行して版を確認して下さい。他版のmake
では、PostGISのMakefile
を完全に処理しきれないかもしれません。
投影変換ライブラリ Proj4。4.9以上が必要です。Proj4ライブラリは、PostGISの座標系投影変換機能に使われます。Proj4は、http://trac.osgeo.org/proj/からダウンロードできます。
ジオメトリライブラリGEOS、3.6版以降が必要ですが、新しい関数と機能の最大限に活用するためには3.9以上をお勧めします。GEOSは http://trac.osgeo.org/geos/ からダウンロード可能です。
LibXML2の2.5.x以上。LibXML2は現在取り込み関数 (ST_GeomFromGMLとST_GeomFromKML)で使っています。LibXML2はhttp://xmlsoft.org/downloads.htmlからダウンロード可能です。
JSON-C 0.9以上。JSON-Cは現在、ST_GeomFromGeoJsonによるGeoJSONの取り込みに使われます。JSON-Cはhttps://github.com/json-c/json-c/releases/からダウンロード可能です。
GDAL 2以上が必要ですが、3以上の方が良いです。ラスタ機能に必要です。http://trac.osgeo.org/gdal/wiki/DownloadSource/からダウンロード可能です。
PostgreSQL+JITでコンパイルする場合には、LLVM 6版以上が必要です。https://trac.osgeo.org/postgis/ticket/4125を参照して下さい。
オプション
GDAL (擬似的任意)ラスタが必要ない場合に限り不要です。「ラスタ機能の設定」の説明に従って使用したいドライバを有効にしてください。
GTK (GTK+2.0, 2.8+が必要)。シェープファイルのローダであるshp2pgsql-guiのコンパイル用です。http://www.gtk.org/にあります。
SFCGAL 1.1版以上。追加的な2次元や3次元の高度な解析関数をPostGISで使うために使用するものです。「SFCGAL関数」をご覧下さい。また、GEOSを使う2次元関数のうちいくつか (たとえばST_IntersectionやST_Area)は、GEOSでなくSFCGALを使用することができます。PostgreSQLコンフィギュレーション変数postgis.backend
によって、SFCGALがインストールされている場合にはエンドユーザがバックエンドを制御することができます (デフォルトではGEOS)。SFCGAL 1.2は少なくともCGAL 4.3とBoost 1.54 (http://oslandia.github.io/SFCGAL/installation.htmlをご覧下さい)が必要ですのでご注意下さい。https://github.com/Oslandia/SFCGALにあります。
「住所標準化」をビルドするには、PCRE http://www.pcre.org (Unix系システムには通常はインストール済みです)も必要です。parseaddress-stcities.h
内のエンコードしたデータを再構築したい場合には、Perl CPANのRegex::Assemble
パッケージのみ必要です。「住所標準化」は、PCREライブラリを検出するか、コンフィギュレーションで適切に--with-pcre-dir=/path/to/pcre
を指定すると、自動的にビルドされます。
ST_AsMVTを有効にするにはprotobuf-cライブラリ (使用時)とprotoc-cコンパイラ (ビルド時)が必要です。さらに、protobuf-cの正しい最小バージョンを確認するためにpkg-configが必要です。protobuf-cをご参照下さい。デフォルトでは、PostGISはMVTポリゴンの評価を速く行うためにWagyuを使いますが、C++11コンパイラが必要です。CXXFLAGSを使い、PostgreSQLのインストールと同じコンパイラを使います。これを無効にし、GEOSを代わりに使うには、コンフィギュア時に--without-wagyu
を付けます。
CUnit (CUnit
)。レグレッションテストに必要です。http://cunit.sourceforge.net/にあります。
DocBook (xsltproc
)。文書のビルドに必要です。http://www.docbook.org/にあります。
DBLatex (dblatex
)。文書をPDFでビルドするのに必要です。http://dblatex.sourcforge.net/にあります。
ImageMagick (convert
)。文書で使う画像を生成するのに必要です。http://www.imagemagick.org/にあります。
ほとんどのLinuxのインストールと同様に、最初のステップでは、ソースコードのビルドに使われるMakefileを生成します。これは、シェルスクリプトが行います。
./configure
パラメータを付けない場合には、このコマンドは自動で、PostGISのソースコードのビルドを行うのに必要なコンポーネントやライブラリをシステム上で探します。./configureとするのが一般的な使い方ですが、標準的でない位置に必要なライブラリやプログラムを置いてある場合のために、いくつかのパラメータを受け付けます。
次のリストで、共通して使われるパラメータを示します。 完全なリストについては、--helpまたは--help=shortパラメータを使って下さい。
PostGIS 3.0以降では、デフォルトではライブラリファイルのファイル名にマイナーバージョンが入らなくなりました。PostGIS 3のライブラリはpostgis-3
で終わります。pg_upgradeを簡単にするために実施された変更ですが、サーバにPostGIS 3シリーズは一つのマイナーバージョンのものだけしかインストールできません。postgis-3.0
といったようにマイナーバージョンをファイル名に含む古い振る舞いにしたいなら、コンフィギュレーション実行の際に次のスイッチを追加します。
これは、PostGISローダの実行ファイルと共有ライブラリがインストールされる位置です。デフォルトでは、この位置は、検出されたPostgreSQLのインストール先と同じです。
![]() | |
このパラメータは現在のところ壊れていて、PostgreSQLのインストール先にしかインストールされません。このバグのトラックについてはhttp://trac.osgeo.org/postgis/ticket/635をご覧ください。 |
PostgreSQLは、PostGISなどの拡張に対してPostgreSQLのインストール先ディレクトリを伝えるpg_configというユーティリティを持っています。PostGISの対象とする特定のPostgreSQLのインストール先を手動で指定する場合に、このパラメータ(--with-pgconfig=/path/to/pg_config)を使います。
必須ライブラリであるGDALは、ラスタ機能に必要な機能を提供します。GDALには、インストール先ディレクトリをインストールスクリプトに伝えるgdal-configがあります。PostGISのビルドに使う特定のGDALを手動で指定する場合に、このパラメータ (--with-gdalconfig=/path/to/gdal-config)を使います。
必須のジオメトリライブラリであるGEOSには、ソフトウェアのインストール時にGEOSのインストール先ディレクトリを伝えるgeos-configというユーティリティがあります。PostGISのビルドに使う特定のGEOSを手動で指定する場合に、このパラメータ (--with-geosconfig=/path/to/geos-config)を使います。
LibXMLはGeomFromKML/GML処理を行うのに必須のライブラリです。通常はlibxmlをインストールしているなら発見されますが、発見できない場合や特定の版を使用したい場合は、xml2-config
を指定してインストールスクリプトにLibXMLのインストール先ディレクトリを伝えます。PostGISのビルドに使う特定のLibXMLを手動で指定する場合に、このパラメータ (
>--with-xml2config=/path/to/xml2-config)を使います。
Proj4はPostGISに必須の投影変換ライブラリです。PostGISのビルドに使う特定のProj4のディレクトリを手動で指定する場合は、このパラメータ (--with-projdir=/path/to/projdir)を使います。
iconvのインストール先ディレクトリを指定します。
JSON-Cは、MITライセンスのJSONライブラリで、PostGISのST_GeomFromJSONに必須です。PostGISのビルドに使う特定のJSON-Cを手動で指定する場合に、このパラメータ (--with-jsondir=/path/to/jsondir)を使います。
PCREは、BSDライセンスのPerl互換正規表現ライブラリです。住所標準化エクステンションに必須です。PostGISのビルド対象としている特定のPCREを手動で指定する場合に、このパラメータ (--with-pcredir=/path/to/pcredir)を使います。
データインポートGUI (GTK+2.0が必要)をコンパイルします。このパラメータによって、shp2pgsql-guiという、shp2pgsqlのグラフィカルユーザインタフェースが作成されます。
ラスタ機能なしでコンパイルします。
トポロジ対応を無くしてコンパイルします。トポロジに必要なロジックは全てpostgis-3.1.0ライブラリ内に作られるので、関連ライブラリはありません。
デフォルトでは、gettextの検出とこれを用いたコンパイルを試みますが、ローダ破損を引き起こす非互換性問題のもとで実行する場合には、このコマンドで無効にできます。これを使ったコンフィギュレーションによって解決する問題の例はhttp://trac.osgeo.org/postgis/ticket/748にあります。ご注意: これを切ることで多くの機能がなくなるわけではありません。まだ文書化されていなくて試験段階であるGUIローダにおける内部のヘルプ/ラベル機能に使われています。
デフォルトでは、このスイッチなしではSFCGAL対応でインストールされません。PATH
は、sfcgal-configへのパスを指定することができる追加的な引数です。
MVT機能をビルドする時には、PostGISは、MVTポリゴンを抜き出したり評価したりするためにWagyuを使います。Wagyuは最も速い選択肢であり、また、この特殊な状況下にあっては、正しい値の生成が保証されます。ただし、C++11コンパイラが必要です。この任意引数で、このライブラリの使用を無効にし、代わりにGEOSを使うようにすることができます。
Gitレポジトリの現在のHEADに一致するように、postgis_revision.hの更新を無効にします。
![]() | |
コードレポジトリからPostGISを取得した場合には、最初のステップとしてスクリプトを実行します。 ./autogen.sh このスクリプトによってconfigureスクリプトが生成されます。これはPostGISのインストールに関するカスタマイズに使われます。 PostGISをアーカイブファイルで入手する場合には、configureが既に生成されているので./autogen.shは不要です。 |
Makefileが生成されたら、PostGISのビルドは、次のコマンドを実行するだけです。
make
出力の最後の行に"PostGIS was built successfully. Ready to install.
"と出れば終わりです。
PostGIS 1.4.0版からは、全ての関数に文書から生成されるコメントが付きます。これらのコメントを後からインストールするには、次のコマンドを実行しますが、docbookが必要です。アーカイブファイルからインストールする場合は、postgis_comments.sql, raster_comments.sql, topology_comments.sqlは、docフォルダにあるので、コメントを作成する必要はありません。コメントはCREATE EXTENSIONによるインストールの一部として取り込まれます。
make comments
PostGIS 2.0で導入されました。早見表に、または学習中の方のハンドアウトに適しているHTMLチートシートを生成します。xsltprocが必要で、topology_cheatsheet.html
, tiger_geocoder_cheatsheet.html
, raster_cheatsheet.html
, postgis_cheatsheet.html
の4ファイルが生成されます。
HTMLとPDFのビルド済みのものはPostGIS / PostgreSQL Study Guidesにあります。
make cheatsheets
PostgreSQL 9.1以上を使用している場合は、PostGISエクステンションが自動的にビルド、インストールされます。
ソースレポジトリからビルドしている場合は、関数の記述を最初にビルドする必要があります。これらは、docbookがインストールされている時にビルドされます。手動でインストールするには次のようにします。
make comments
アーカイブファイルからのビルドの場合は、ビルド済みのものがあるので、コメントのビルドは必須ではありません。
エクステンションはmake installの過程の一部として自動的にビルドされるはずです。必要ならエクステンションフォルダからビルドすることもできますし、他のサーバに必要ならファイルを複製することもできます。
cd extensions cd postgis make clean make export PGUSER=postgres #overwrite psql variables make check #to test before install make install # エクステンションのテスト make check RUNTESTFLAGS=--extension
![]() | |
|
エクステンションのファイルは、PostGISとPostgreSQLの同じバージョンでは、OSに関わらず、常に同じです。サーバにPostGISのバイナリがインストールされている限り、あるOSから他のOSにエクステンションファイルを上書き複製するのは問題ありません。
開発用と異なる別のサーバでエクステンションを手動でインストールしたい場合は、サーバにない時に必要となる通常のPostGISのバイナリだけでなく、次のファイルをextensionsフォルダからPostgreSQLインストール先のPostgreSQL / share / extension
フォルダに複写します。
指定されていない場合のインストールするエクステンションの版等の情報を示す制御ファイpostgis.control, postgis_topology.control
。
エクステンションごとの/sqlフォルダにあるファイル全て。extensions/postgis/sql/*.sql
, extensions/postgis_topology/sql/*.sql
はPostgreSQL share/extensionフォルダの最上位に複写する必要があることに注意して下さい。
以上を実行すると、PgAdmin -> extensionでpostgis
, postgis_topology
が有効なエクステンションとして見えます。
psqlを使う場合は、次のクエリを実行してエクステンションがインストールされていることを確認できます。
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 | 3.1.0 | 3.1.0 address_standardizer_data_us | 3.1.0 | 3.1.0 postgis | 3.1.0 | 3.1.0 postgis_raster | 3.1.0 | 3.1.0 postgis_sfcgal | 3.1.0 | postgis_tiger_geocoder | 3.1.0 | 3.1.0 postgis_topology | 3.1.0 | (6 rows)
クエリを行ったデータベースにエクステンションがインストールされている場合は、installed_version
カラムに記載が見えます。レコードが返ってこない場合は、PostGIS EXTENSIONがインストールされていないことになります。PgAdmin III 1.14以上では、データベースブラウザツリーのextensions
セクションで提供されていて、右クリックでアップグレードまたアンインストールできます。
有効なエクステンションがある場合、pgAdminエクステンションインタフェースまたは次のSQLの実行によって、選択したデータベースにPostGISエクステンションをインストールできます。
CREATE EXTENSION postgis; CREATE EXTENSION postgis_raster; CREATE EXTENSION postgis_sfcgal; --postgis_tiger_geocoderに必要です CREATE EXTENSION fuzzystrmatch; -- postgis_tiger_geocoderで使用しますが、スタンドアロンでも使えます CREATE EXTENSION address_standardizer; CREATE EXTENSION address_standardizer_data_us; CREATE EXTENSION postgis_tiger_geocoder; CREATE EXTENSION postgis_topology;
psqlでは、どの版が、どのスキーマにインストールされているかを見ることができます。
\connect mygisdb \x \dx postgis*
List of installed extensions -[ RECORD 1 ]------------------------------------------------- Name | postgis Version | 3.1.0 Schema | public Description | PostGIS geometry, geography, and raster spat.. -[ RECORD 2 ]------------------------------------------------- Name | postgis_raster Version | 3.0.0dev Schema | public Description | PostGIS raster types and functions -[ RECORD 3 ]------------------------------------------------- Name | postgis_tiger_geocoder Version | 3.1.0 Schema | tiger Description | PostGIS tiger geocoder and reverse geocoder -[ RECORD 4 ]------------------------------------------------- Name | postgis_topology Version | 3.1.0 Schema | topology Description | PostGIS topology spatial types and functions
![]() | |
エクステンションのテーブル |
素晴らしいエクステンション機構を使わずに3.1.0をインストールした場合には、それぞれのエクステンションが持つ関数をパッケージするためのコマンドを実行して、エクステンションに基づくように変更できます。
CREATE EXTENSION postgis FROM unpackaged; CREATE EXTENSION postgis_raster FROM unpackaged; CREATE EXTENSION postgis_topology FROM unpackaged; CREATE EXTENSION postgis_tiger_geocoder FROM unpackaged;
PostGISのテストを行うには、次のコマンドを実行します。
make check
このコマンドで、実際のPostgreSQLデータベースに対して生成したライブラリを使用した、様々なチェックとレグレッションテストを行います。
![]() | |
コンフィギュレーションを行ったPostGISが標準の場所に無いPostgreSQL、GEOSまたはProj4を使う場合には、これらのライブラリの位置を |
![]() | |
現在のところmake checkは、チェックを行う際に 環境変数 |
成功した場合は、テストの出力は次のようなかんじになります。
CUnit - A unit testing framework for C - Version 2.1-3 http://cunit.sourceforge.net/ Suite: algorithm Test: test_lw_segment_side ...passed Test: test_lw_segment_intersects ...passed Test: test_lwline_crossing_short_lines ...passed Test: test_lwline_crossing_long_lines ...passed Test: test_lwline_crossing_bugs ...passed Test: test_lwpoint_set_ordinate ...passed Test: test_lwpoint_get_ordinate ...passed Test: test_point_interpolate ...passed Test: test_lwline_interpolate_points ...passed Test: test_lwline_interpolate_point_3d ...passed Test: test_lwline_clip ...passed Test: test_lwpoly_clip ...passed Test: test_lwtriangle_clip ...passed Test: test_lwline_clip_big ...passed Test: test_lwmline_clip ...passed Test: test_geohash_point ...passed Test: test_geohash_precision ...passed Test: test_geohash ...passed Test: test_geohash_point_as_int ...passed Test: test_isclosed ...passed Test: test_lwgeom_simplify ...passed Test: test_lw_arc_center ...passed Test: test_point_density ...passed Test: test_kmeans ...passed Test: test_median_handles_3d_correctly ...passed Test: test_median_robustness ...passed Test: test_lwpoly_construct_circle ...passed Test: test_trim_bits ...passed Test: test_lwgeom_remove_repeated_points ...passed Suite: buildarea Test: buildarea1 ...passed Test: buildarea2 ...passed Test: buildarea3 ...passed Test: buildarea4 ...passed Test: buildarea4b ...passed Test: buildarea5 ...passed Test: buildarea6 ...passed Test: buildarea7 ...passed Suite: geometry_clean Test: test_lwgeom_make_valid ...passed Suite: clip_by_rectangle Test: test_lwgeom_clip_by_rect ...DEBUG1: lwgeom_clip_by_rect: GEOS Error: IllegalArgumentException: Invalid number of points in LinearRing found 3 - must be 0 or >= 4 passed Suite: force_sfs Test: test_sfs_11 ...passed Test: test_sfs_12 ...passed Test: test_sqlmm ...passed Suite: geodetic Test: test_sphere_direction ...passed Test: test_sphere_project ...passed Test: test_lwgeom_area_sphere ...passed Test: test_gbox_from_spherical_coordinates ...passed Test: test_gserialized_get_gbox_geocentric ...passed Test: test_clairaut ...passed Test: test_edge_intersection ...passed Test: test_edge_intersects ...passed Test: test_edge_distance_to_point ...passed Test: test_edge_distance_to_edge ...passed Test: test_lwgeom_distance_sphere ...passed Test: test_lwgeom_check_geodetic ...passed Test: test_gserialized_from_lwgeom ...passed Test: test_spheroid_distance ...passed Test: test_spheroid_area ...passed Test: test_lwpoly_covers_point2d ...passed Test: test_gbox_utils ...passed Test: test_vector_angle ...passed Test: test_vector_rotate ...passed Test: test_lwgeom_segmentize_sphere ...passed Test: test_ptarray_contains_point_sphere ...passed Test: test_ptarray_contains_point_sphere_iowa ...passed Test: test_gbox_to_string_truncated ...passed Suite: geos Test: test_geos_noop ...passed Test: test_geos_subdivide ...passed Test: test_geos_linemerge ...passed Test: test_geos_offsetcurve ...passed Test: test_geos_offsetcurve_crash ...passed Test: test_geos_makevalid ...passed Suite: clustering Test: basic_test ...passed Test: nonsequential_test ...passed Test: basic_distance_test ...passed Test: single_input_test ...passed Test: empty_inputs_test ...passed Test: multipoint_test ...passed Test: dbscan_test ...passed Test: dbscan_test_3612a ...passed Test: dbscan_test_3612b ...passed Test: dbscan_test_3612c ...passed Suite: clustering_unionfind Test: test_unionfind_create ...passed Test: test_unionfind_union ...passed Test: test_unionfind_ordered_by_cluster ...passed Test: test_unionfind_path_compression ...passed Test: test_unionfind_collapse_cluster_ids ...passed Suite: homogenize Test: test_coll_point ...passed Test: test_coll_line ...passed Test: test_coll_poly ...passed Test: test_coll_coll ...passed Test: test_geom ...passed Test: test_coll_curve ...passed Suite: encoded_polyline_input Test: in_encoded_polyline_test_geoms ...passed Test: in_encoded_polyline_test_precision ...passed Suite: geojson_input Test: in_geojson_test_srid ...passed Test: in_geojson_test_bbox ...passed Test: in_geojson_test_geoms ...passed Suite: iterator Test: test_point_count ...passed Test: test_ordering ...passed Test: test_modification ...passed Test: test_mixed_rw_access ...passed Test: test_cannot_modify_read_only ...passed Test: test_no_memory_leaked_when_iterator_is_partially_used ...passed Suite: twkb_input Test: test_twkb_in_point ...passed Test: test_twkb_in_linestring ...passed Test: test_twkb_in_polygon ...passed Test: test_twkb_in_multipoint ...passed Test: test_twkb_in_multilinestring ...passed Test: test_twkb_in_multipolygon ...passed Test: test_twkb_in_collection ...passed Test: test_twkb_in_precision ...passed Suite: serialization/deserialization Test: test_typmod_macros ...passed Test: test_flags_macros ...passed Test: test_serialized_srid ...NOTICE: SRID value -3005 converted to the officially unknown SRID value 0 passed Test: test_gserialized_from_lwgeom_size ...passed Test: test_gbox_serialized_size ...passed Test: test_lwgeom_from_gserialized ...passed Test: test_lwgeom_count_vertices ...passed Test: test_on_gser_lwgeom_count_vertices ...passed Test: test_geometry_type_from_string ...passed Test: test_lwcollection_extract ...passed Test: test_lwgeom_free ...passed Test: test_lwgeom_swap_ordinates ...passed Test: test_f2d ...passed Test: test_lwgeom_clone ...passed Test: test_lwgeom_force_clockwise ...passed Test: test_lwgeom_calculate_gbox ...passed Test: test_lwgeom_is_empty ...passed Test: test_lwgeom_same ...passed Test: test_lwline_from_lwmpoint ...passed Test: test_lwgeom_as_curve ...passed Test: test_lwgeom_scale ...passed Test: test_gserialized_is_empty ...passed Test: test_gserialized_peek_gbox_p_no_box_when_empty ...passed Test: test_gserialized_peek_gbox_p_gets_correct_box ...passed Test: test_gserialized_peek_gbox_p_fails_for_unsupported_cases ...passed Test: test_gbox_same_2d ...passed Test: test_signum_macro ...passed Suite: lwstroke Test: test_lwcurve_linearize ...passed Test: test_unstroke ...passed Suite: measures Test: test_mindistance2d_tolerance ...passed Test: test_mindistance3d_tolerance ...NOTICE: One or both of the geometries is missing z-value. The unknown z-value will be regarded as "any value" NOTICE: One or both of the geometries is missing z-value. The unknown z-value will be regarded as "any value" passed Test: test_rect_tree_contains_point ...passed Test: test_rect_tree_intersects_tree ...passed Test: test_lwgeom_segmentize2d ...NOTICE: ptarray.c:448 - ptarray_segmentize2d: Too many segments required (1.000000e+101) NOTICE: liblwgeom code interrupted NOTICE: liblwgeom code interrupted NOTICE: liblwgeom code interrupted NOTICE: liblwgeom code interrupted passed Test: test_lwgeom_locate_along ...passed Test: test_lw_dist2d_pt_arc ...passed Test: test_lw_dist2d_seg_arc ...passed Test: test_lw_dist2d_arc_arc ...passed Test: test_lw_arc_length ...passed Test: test_lw_dist2d_pt_ptarrayarc ...passed Test: test_lw_dist2d_ptarray_ptarrayarc ...passed Test: test_lwgeom_tcpa ...passed Test: test_lwgeom_is_trajectory ...NOTICE: Geometry is not a LINESTRING NOTICE: Line does not have M dimension NOTICE: Measure of vertex 1 (1) not bigger than measure of vertex 0 (1) NOTICE: Measure of vertex 1 (0) not bigger than measure of vertex 0 (1) NOTICE: Measure of vertex 2 (2) not bigger than measure of vertex 1 (3) passed Test: test_rect_tree_distance_tree ...passed Suite: effectivearea Test: do_test_lwgeom_effectivearea_lines ...passed Test: do_test_lwgeom_effectivearea_polys ...passed Suite: chaikin Test: do_test_chaikin_lines ...passed Test: do_test_chaikin_polygons ...passed Suite: filterm Test: do_test_filterm_single_geometries ...passed Test: do_test_filterm_collections ...passed Suite: minimum_bounding_circle Test: basic_test ...passed Test: test_empty ...passed Suite: miscellaneous Test: test_misc_force_2d ...passed Test: test_misc_simplify ...passed Test: test_misc_count_vertices ...passed Test: test_misc_area ...passed Test: test_misc_wkb ...passed Test: test_grid ...passed Test: test_grid_in_place ...passed Test: test_clone ...passed Test: test_lwmpoint_from_lwgeom ...passed Suite: noding Test: test_lwgeom_node ...passed Suite: encoded_polyline_output Test: out_encoded_polyline_test_geoms ...passed Test: out_encoded_polyline_test_srid ...passed Test: out_encoded_polyline_test_precision ...passed Suite: geojson_output Test: out_geojson_test_precision ...passed Test: out_geojson_test_dims ...passed Test: out_geojson_test_srid ...passed Test: out_geojson_test_bbox ...passed Test: out_geojson_test_geoms ...passed Suite: gml_output Test: out_gml_test_precision ...passed Test: out_gml_test_srid ...passed Test: out_gml_test_dims ...passed Test: out_gml_test_geodetic ...passed Test: out_gml_test_geoms ...passed Test: out_gml_test_geoms_prefix ...passed Test: out_gml_test_geoms_nodims ...passed Test: out_gml2_extent ...passed Test: out_gml3_extent ...passed Suite: kml_output Test: out_kml_test_precision ...passed Test: out_kml_test_dims ...passed Test: out_kml_test_geoms ...passed Test: out_kml_test_prefix ...passed Suite: svg_output Test: out_svg_test_precision ...passed Test: out_svg_test_dims ...passed Test: out_svg_test_relative ...passed Test: out_svg_test_geoms ...passed Test: out_svg_test_srid ...passed Suite: x3d_output Test: out_x3d3_test_precision ...passed Test: out_x3d3_test_geoms ...passed Test: out_x3d3_test_option ...passed Suite: ptarray Test: test_ptarray_append_point ...passed Test: test_ptarray_append_ptarray ...passed Test: test_ptarray_locate_point ...passed Test: test_ptarray_isccw ...passed Test: test_ptarray_signed_area ...passed Test: test_ptarray_insert_point ...passed Test: test_ptarray_contains_point ...passed Test: test_ptarrayarc_contains_point ...passed Test: test_ptarray_scale ...passed Suite: printing Test: test_lwprint_default_format ...passed Test: test_lwprint_format_orders ...passed Test: test_lwprint_optional_format ...passed Test: test_lwprint_oddball_formats ...passed Test: test_lwprint_bad_formats ...passed Suite: sfcgal Test: test_sfcgal_noop ...passed Suite: split Test: test_lwline_split_by_point_to ...passed Test: test_lwgeom_split ...passed Suite: stringbuffer Test: test_stringbuffer_append ...passed Test: test_stringbuffer_aprintf ...passed Suite: surface Test: triangle_parse ...passed Test: tin_parse ...passed Test: polyhedralsurface_parse ...passed Test: surface_dimension ...passed Suite: spatial_trees Test: test_tree_circ_create ...passed Test: test_tree_circ_pip ...passed Test: test_tree_circ_pip2 ...passed Test: test_tree_circ_distance ...passed Test: test_tree_circ_distance_threshold ...passed Suite: triangulate Test: test_lwgeom_delaunay_triangulation ...passed Test: test_lwgeom_voronoi_diagram ...passed Test: test_lwgeom_voronoi_diagram_expected_empty ...passed Test: test_lwgeom_voronoi_diagram_custom_envelope ...passed Suite: twkb_output Test: test_twkb_out_point ...passed Test: test_twkb_out_linestring ...passed Test: test_twkb_out_polygon ...passed Test: test_twkb_out_multipoint ...passed Test: test_twkb_out_multilinestring ...passed Test: test_twkb_out_multipolygon ...passed Test: test_twkb_out_collection ...passed Test: test_twkb_out_idlist ...passed Suite: varint Test: test_zigzag ...passed Test: test_varint ...passed Test: test_varint_roundtrip ...passed Suite: wkb_input Test: test_wkb_in_point ...passed Test: test_wkb_in_linestring ...passed Test: test_wkb_in_polygon ...passed Test: test_wkb_in_multipoint ...passed Test: test_wkb_in_multilinestring ...passed Test: test_wkb_in_multipolygon ...passed Test: test_wkb_in_collection ...passed Test: test_wkb_in_circularstring ...passed Test: test_wkb_in_compoundcurve ...passed Test: test_wkb_in_curvpolygon ...passed Test: test_wkb_in_multicurve ...passed Test: test_wkb_in_multisurface ...passed Test: test_wkb_in_malformed ...passed Suite: wkb_output Test: test_wkb_out_point ...passed Test: test_wkb_out_linestring ...passed Test: test_wkb_out_polygon ...passed Test: test_wkb_out_multipoint ...passed Test: test_wkb_out_multilinestring ...passed Test: test_wkb_out_multipolygon ...passed Test: test_wkb_out_collection ...passed Test: test_wkb_out_circularstring ...passed Test: test_wkb_out_compoundcurve ...passed Test: test_wkb_out_curvpolygon ...passed Test: test_wkb_out_multicurve ...passed Test: test_wkb_out_multisurface ...passed Test: test_wkb_out_polyhedralsurface ...passed Suite: wkt_input Test: test_wkt_in_point ...passed Test: test_wkt_in_linestring ...passed Test: test_wkt_in_polygon ...passed Test: test_wkt_in_multipoint ...passed Test: test_wkt_in_multilinestring ...passed Test: test_wkt_in_multipolygon ...passed Test: test_wkt_in_collection ...passed Test: test_wkt_in_circularstring ...passed Test: test_wkt_in_compoundcurve ...passed Test: test_wkt_in_curvpolygon ...passed Test: test_wkt_in_multicurve ...passed Test: test_wkt_in_multisurface ...passed Test: test_wkt_in_tin ...passed Test: test_wkt_in_polyhedralsurface ...passed Test: test_wkt_in_errlocation ...passed Test: test_wkt_double ...passed Suite: wkt_output Test: test_wkt_out_point ...passed Test: test_wkt_out_linestring ...passed Test: test_wkt_out_polygon ...passed Test: test_wkt_out_multipoint ...passed Test: test_wkt_out_multilinestring ...passed Test: test_wkt_out_multipolygon ...passed Test: test_wkt_out_collection ...passed Test: test_wkt_out_circularstring ...passed Test: test_wkt_out_compoundcurve ...passed Test: test_wkt_out_curvpolygon ...passed Test: test_wkt_out_multicurve ...passed Test: test_wkt_out_multisurface ...passed Suite: wrapx Test: test_lwgeom_wrapx ...passed Run Summary: Type Total Ran Passed Failed Inactive suites 44 44 n/a 0 0 tests 300 300 300 0 0 asserts 4215 4215 4215 0 n/a Elapsed time = 0.229 seconds PostgreSQL 12devel on x86_64-w64-mingw32, compiled by gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0, 64-bit Postgis 3.0.0dev - r17081 - 2018-11-28 18:50:02 scripts 3.0.0dev r17081 GEOS: 3.7.0-CAPI-1.11.0 673b9939 PROJ: Rel. 5.2.0, September 15th, 2018 Running tests ../loader/Point .............. ok ../loader/PointM .............. ok ../loader/PointZ .............. ok ../loader/MultiPoint .............. ok ../loader/MultiPointM .............. ok ../loader/MultiPointZ .............. ok ../loader/Arc .............. ok ../loader/ArcM .............. ok ../loader/ArcZ .............. ok ../loader/Polygon .............. ok ../loader/PolygonM .............. ok ../loader/PolygonZ .............. ok ../loader/TSTPolygon ......... ok ../loader/TSIPolygon ......... ok ../loader/TSTIPolygon ......... ok ../loader/PointWithSchema ..... ok ../loader/NoTransPoint ......... ok ../loader/NotReallyMultiPoint ......... ok ../loader/MultiToSinglePoint ......... ok ../loader/ReprojectPts ........ ok ../loader/ReprojectPtsGeog ........ ok ../loader/Latin1 .... ok ../loader/Latin1-implicit .... ok ../loader/mfile .... ok ../dumper/literalsrid ....... ok ../dumper/realtable ....... ok affine .. ok bestsrid .. ok binary .. ok boundary .. ok chaikin .. ok filterm .. ok cluster .. ok concave_hull .. ok concave_hull_hard .. ok ctors .. ok curvetoline .. ok dump .. ok dumppoints .. ok empty .. ok estimatedextent .. ok forcecurve .. ok geography .. ok geometric_median .. ok in_geohash .. ok in_gml .. ok in_kml .. ok in_encodedpolyline .. ok iscollection .. ok legacy .. ok long_xact .. ok lwgeom_regress .. ok measures .. ok minimum_bounding_circle .. ok normalize .. ok operators .. ok orientation .. ok out_geometry .. ok out_geography .. ok polygonize .. ok polyhedralsurface .. ok postgis_type_name .. ok quantize_coordinates .. ok regress .. ok regress_bdpoly .. ok regress_gist_index_nd .. ok regress_index .. ok regress_index_nulls .. ok regress_management .. ok regress_selectivity .. ok regress_lrs .. ok regress_ogc .. ok regress_ogc_cover .. ok regress_ogc_prep .. ok regress_proj .. ok relate .. ok remove_repeated_points .. ok removepoint .. ok reverse .. ok setpoint .. ok simplify .. ok simplifyvw .. ok size .. ok snaptogrid .. ok split .. ok sql-mm-serialize .. ok sql-mm-circularstring .. ok sql-mm-compoundcurve .. ok sql-mm-curvepoly .. ok sql-mm-general .. ok sql-mm-multicurve .. ok sql-mm-multisurface .. ok swapordinates .. ok summary .. ok temporal .. ok tickets .. ok twkb .. ok typmod .. ok wkb .. ok wkt .. ok wmsservers .. ok knn_recheck .. ok temporal_knn .. ok hausdorff .. ok regress_buffer_params .. ok frechet .. ok offsetcurve .. ok relatematch .. ok isvaliddetail .. ok sharedpaths .. ok snap .. ok node .. ok unaryunion .. ok clean .. ok relate_bnr .. ok delaunaytriangles .. ok clipbybox2d .. ok subdivide .. ok voronoi .. ok minimum_clearance .. ok oriented_envelope .. ok in_geojson .. ok regress_brin_index .. ok regress_brin_index_3d .. ok regress_brin_index_geography .. ok regress_spgist_index_2d .. ok regress_spgist_index_3d .. ok regress_spgist_index_nd .. ok mvt .. ok geobuf .. ok mvt_jsonb .. ok uninstall .. ok (4643) Run tests: 134 Failed: 0 -- if you build with SFCGAL PostgreSQL 12devel on x86_64-w64-mingw32, compiled by gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0, 64-bit Postgis 3.0.0dev - r17081 - 2018-11-28 18:50:02 scripts 3.0.0dev r17081 GEOS: 3.7.0-CAPI-1.11.0 673b9939 PROJ: Rel. 5.2.0, September 15th, 2018 SFCGAL: 1.3.2 Running tests regress_sfcgal .. ok empty .. ok geography .. ok legacy .. ok measures .. ok regress_ogc_prep .. ok regress_ogc .. ok regress .. ok tickets .. ok concave_hull .. ok wmsservers .. ok approximatemedialaxis .. ok uninstall .. ok (4643) Run tests: 13 Failed: 0 -- if you built with raster support CUnit - A unit testing framework for C - Version 2.1-2 http://cunit.sourceforge.net/ Suite: pixtype Test: test_pixtype_size ...passed Test: test_pixtype_alignment ...passed Test: test_pixtype_name ...passed Test: test_pixtype_index_from_name ...passed Test: test_pixtype_get_min_value ...passed Test: test_pixtype_compare_clamped_values ...passed Suite: raster_basics Test: test_raster_new ...passed Test: test_raster_empty ...passed Test: test_raster_metadata ...passed Test: test_raster_clone ...passed Test: test_raster_from_band ...passed Test: test_raster_replace_band ...passed Suite: band_basics Test: test_band_metadata ...passed Test: test_band_pixtype_1BB ...passed Test: test_band_pixtype_2BUI ...passed Test: test_band_pixtype_4BUI ...passed Test: test_band_pixtype_8BUI ...passed Test: test_band_pixtype_8BSI ...passed Test: test_band_pixtype_16BUI ...passed Test: test_band_pixtype_16BSI ...passed Test: test_band_pixtype_32BUI ...passed Test: test_band_pixtype_32BSI ...passed Test: test_band_pixtype_32BF ...passed Test: test_band_pixtype_64BF ...passed Test: test_band_get_pixel_line ...WARNING: Limiting returning number values to 1 WARNING: Attempting to get pixel values with out of range raster coordinates: (5, 5) passed Test: test_band_new_offline_from_path ...passed Suite: raster_wkb Test: test_raster_wkb ...SRID value -1 converted to the officially unknown SRID value 0 SRID value -1 converted to the officially unknown SRID value 0 SRID value -1 converted to the officially unknown SRID value 0 SRID value -1 converted to the officially unknown SRID value 0 SRID value -1 converted to the officially unknown SRID value 0 SRID value -1 converted to the officially unknown SRID value 0 passed Suite: gdal Test: test_gdal_configured ...passed Test: test_gdal_drivers ...passed Test: test_gdal_rasterize ...passed Test: test_gdal_polygonize ...passed Test: test_raster_to_gdal ...Warning 6: PNG driver doesn't support data type Float64. Only eight bit (Byte) and sixteen bit (UInt16) bands supported. Defaulting to Byte passed Test: test_gdal_to_raster ...passed Test: test_gdal_warp ...passed Suite: raster_geometry Test: test_raster_envelope ...passed Test: test_raster_envelope_geom ...passed Test: test_raster_convex_hull ...passed Test: test_raster_surface ...INFO: Ring Self-intersection at or near point 2 -2 INFO: Ring Self-intersection at or near point 3 -3 passed Test: test_raster_perimeter ...passed Test: test_raster_pixel_as_polygon ...passed Suite: raster_misc Test: test_raster_cell_to_geopoint ...passed Test: test_raster_geopoint_to_cell ...passed Test: test_raster_from_two_rasters ...passed Test: test_raster_compute_skewed_raster ...passed Suite: band_stats Test: test_band_stats ...passed Test: test_band_value_count ...passed Suite: band_misc Test: test_band_get_nearest_pixel ...passed Test: test_band_get_pixel_of_value ...passed Test: test_pixel_set_to_array ...passed Suite: mapalgebra Test: test_raster_iterator ...passed Test: test_band_reclass ...passed Test: test_raster_colormap ...passed Suite: spatial_relationship Test: test_raster_geos_overlaps ...passed Test: test_raster_geos_touches ...passed Test: test_raster_geos_contains ...passed Test: test_raster_geos_contains_properly ...passed Test: test_raster_geos_covers ...passed Test: test_raster_geos_covered_by ...passed Test: test_raster_within_distance ...passed Test: test_raster_fully_within_distance ...passed Test: test_raster_intersects ...passed Test: test_raster_same_alignment ...passed Suite: misc Test: test_rgb_to_hsv ...passed Test: test_hsv_to_rgb ...passed Test: test_util_gdal_open ...passed Run Summary: Type Total Ran Passed Failed Inactive suites 12 12 n/a 0 0 tests 65 65 65 0 0 asserts 45896 45896 45896 0 n/a Elapsed time = 0.499 seconds Loading Raster into 'postgis_reg' PostgreSQL 12devel on x86_64-w64-mingw32, compiled by gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0, 64-bit Postgis 3.0.0dev - r17081 - 2018-11-28 18:50:02 scripts 3.0.0dev r17081 raster scripts 3.0.0dev r17081 GEOS: 3.7.0-CAPI-1.11.0 673b9939 PROJ: Rel. 5.2.0, September 15th, 2018 GDAL: GDAL 2.3.1, released 2018/06/22 Running tests check_gdal .. ok load_outdb ... ok check_raster_columns .. ok check_raster_overviews .. ok rt_io .. ok rt_bytea .. ok rt_wkb .. ok box3d .. ok rt_addband .. ok rt_band .. ok rt_tile .. ok rt_dimensions .. ok rt_scale .. ok rt_pixelsize .. ok rt_upperleft .. ok rt_rotation .. ok rt_georeference .. ok rt_set_properties .. ok rt_isempty .. ok rt_hasnoband .. ok rt_metadata .. ok rt_rastertoworldcoord .. ok rt_worldtorastercoord .. ok rt_convexhull .. ok rt_envelope .. ok rt_band_properties .. ok rt_set_band_properties .. ok rt_pixelaspolygons .. ok rt_pixelaspoints .. ok rt_pixelascentroids .. ok rt_setvalues_array .. ok rt_summarystats .. ok rt_count .. ok rt_histogram .. ok rt_quantile .. ok rt_valuecount .. ok rt_valuepercent .. ok rt_bandmetadata .. ok rt_pixelvalue .. ok rt_neighborhood .. ok rt_nearestvalue .. ok rt_pixelofvalue .. ok rt_polygon .. ok rt_setbandpath .. ok rt_utility .. ok rt_fromgdalraster .. ok rt_asgdalraster .. ok rt_astiff .. ok rt_asjpeg .. ok rt_aspng .. ok rt_reclass .. ok rt_gdalwarp .. ok rt_asraster .. ok rt_dumpvalues .. ok rt_makeemptycoverage .. ok rt_createoverview .. ok rt_mapalgebraexpr .. ok rt_mapalgebrafct .. ok rt_mapalgebraexpr_2raster .. ok rt_mapalgebrafct_2raster .. ok rt_mapalgebrafctngb .. ok rt_mapalgebrafctngb_userfunc .. ok rt_intersection .. ok rt_clip .. ok rt_mapalgebra .. ok rt_mapalgebra_expr .. ok rt_mapalgebra_mask .. ok rt_union .. ok rt_invdistweight4ma .. ok rt_4ma .. ok rt_setvalues_geomval .. ok rt_elevation_functions .. ok rt_colormap .. ok rt_grayscale .. ok rt_gist_relationships .. ok rt_intersects .. ok rt_samealignment .. ok rt_geos_relationships .. ok rt_iscoveragetile .. ok bug_test_car5 .. ok permitted_gdal_drivers .. ok tickets .. ok loader/Basic .. ok loader/Projected ... ok loader/BasicCopy .. ok loader/BasicFilename .. ok loader/BasicOutDB .. ok loader/Tiled10x10 .. ok loader/Tiled10x10Copy .. ok loader/Tiled8x8 .. ok clean .. ok uninstall .. ok (4643) Run tests: 101 Failed: 0 -- topology regress PostgreSQL 12devel on x86_64-w64-mingw32, compiled by gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0, 64-bit Postgis 3.0.0dev - r17081 - 2018-11-28 18:50:02 scripts 3.0.0dev r17081 GEOS: 3.7.0-CAPI-1.11.0 673b9939 PROJ: Rel. 5.2.0, September 15th, 2018 Running tests regress/legacy_validate .. ok regress/legacy_predicate .. ok regress/legacy_invalid .. ok regress/sqlmm .. ok regress/legacy_query .. ok regress/addnode .. ok regress/addedge .. ok regress/addface .. ok regress/addface2.5d .. ok regress/addtopogeometrycolumn .. ok regress/polygonize .. ok regress/st_addisoedge .. ok regress/st_addisonode .. ok regress/st_addedgemodface .. ok regress/st_addedgenewfaces .. ok regress/st_changeedgegeom .. ok regress/st_createtopogeo .. ok regress/st_getfacegeometry .. ok regress/st_getfaceedges .. ok regress/st_modedgeheal .. ok regress/st_modedgesplit .. ok regress/st_newedgeheal .. ok regress/st_newedgessplit .. ok regress/st_remedgenewface .. ok regress/st_remedgemodface .. ok regress/st_simplify .. ok regress/topoelement .. ok regress/topoelementarray_agg .. ok regress/topogeo_addlinestring .. ok regress/topogeo_addpoint .. ok regress/topogeo_addpolygon .. ok regress/topogeom_edit .. ok regress/topogeometry_type .. ok regress/topojson .. ok regress/topologysummary .. ok regress/topo2.5d .. ok regress/totopogeom .. ok regress/droptopology .. ok regress/droptopogeometrycolumn .. ok regress/copytopology .. ok regress/createtopogeom .. ok regress/createtopology .. ok regress/gml .. ok regress/getnodebypoint .. ok regress/getedgebypoint .. ok regress/getfacebypoint .. ok regress/getringedges .. ok regress/gettopogeomelements .. ok regress/layertrigger .. ok regress/validatetopology .. ok uninstall .. ok (4643) Run tests: 51 Failed: 0 -- if you built --with-gui, you should see this too CUnit - A unit testing framework for C - Version 2.1-2 http://cunit.sourceforge.net/ Suite: Shapefile Loader File shp2pgsql Test Test: test_ShpLoaderCreate() ...passed Test: test_ShpLoaderDestroy() ...passed Suite: Shapefile Loader File pgsql2shp Test Test: test_ShpDumperCreate() ...passed Test: test_ShpDumperDestroy() ...passed Run Summary: Type Total Ran Passed Failed Inactive suites 2 2 n/a 0 0 tests 4 4 4 0 0 asserts 4 4 4 0 n/a
postgis_tiger_geocoder
とaddress_standardizer
は、現在は、標準的なPostgreSQLインストールチェックにのみ対応しています。これらをテストするには、次のようにします。ご注意: PostGISコードフォルダのルートでmake installを既に行っている場合には、make installは重要ではありません。
address_standardizer用:
cd extensions/address_standardizer make install make installcheck
出力は次のようなかんじになります。
============== dropping database "contrib_regression" ============== DROP DATABASE ============== creating database "contrib_regression" ============== CREATE DATABASE ALTER DATABASE ============== running regression test queries ============== test test-init-extensions ... ok test test-parseaddress ... ok test test-standardize_address_1 ... ok test test-standardize_address_2 ... ok ===================== All 4 tests passed. =====================
Tiger Geocodeを使う場合には、使用するPostgreSQLインスタンス内にPostGISとfuzzystrmatchのエクステンションが必要です。PostGISをaddress_standardizer機能付きでビルドした場合は、address_standardizerのテストも行います。
cd extensions/postgis_tiger_geocoder make install make installcheck
出力は次のようなかんじになります。
============== dropping database "contrib_regression" ============== DROP DATABASE ============== creating database "contrib_regression" ============== CREATE DATABASE ALTER DATABASE ============== installing fuzzystrmatch ============== CREATE EXTENSION ============== installing postgis ============== CREATE EXTENSION ============== installing postgis_tiger_geocoder ============== CREATE EXTENSION ============== installing address_standardizer ============== CREATE EXTENSION ============== running regression test queries ============== test test-normalize_address ... ok test test-pagc_normalize_address ... ok ===================== All 2 tests passed. =====================
PostGISをインストールするには、次のコマンドを実行します。
make install
これにより、PostGISのインストールファイルが、--prefixパラメータで指定した、適切なサブディレクトリに複写されます。次に特筆すべきサブディレクトリを示します。
ローダとダンパのバイナリのインストール先は[prefix]/bin
です。
postgis.sql
などのSQLファイルのインストール先は[prefix]/share/contrib
です。
PostGISライブラリのインストール先は[prefix]/lib
です。
先にmake commentsを実行してpostgis_comments.sql
, raster_comments.sql
を生成していた場合は、次のコマンドを実行すると、これらのSQLファイルがインストールされます。
make comments-install
![]() | |
|
address_standardizer
エクステンションは、別途ダウンロードする必要がある別パッケージとしていました。PostGIS 2.2からは同梱されています。address_standardizeの追加情報、できること、および、コンフィギュレーション方法については、「住所標準化」をご覧下さい。
標準化エクステンションは、Normalize_Addressの後継で、PostGISに入っているTigerジオコーダエクステンションに使うことができます。この場合の使い方については「TigerジオコーダをPostGISデータベースで有効にする: エクステンションを使用」を参照して下さい。また、ユーザ自身がつくるジオコーダの要素として使用したり、住所の比較を簡単にするために住所を標準化するために使うことができます。
住所標準化エクステンションはPCREに依存しています。PCREは多くのUNIX系システムにインストールされていますが、http://www.pcre.orgから最新版をダウンロードできます。「ビルドコンフィギュレーション」の際にPCREを発見すると、住所標準化エクステンションが自動的にビルドされます。使用したいPCREのインストールが独自なものである場合は、configureに--with-pcredir=/path/to/pcre
を渡します。/path/to/pcre
は、PCREのincludeとlibのあるルートフォルダです。
Windowsでは、PostGIS 2.1以上に住所標準化エクステンションが同梱されているので、コンパイルを行わずに、すぐにCREATE EXTENSION
に行くことができます。
インストールしたら、対象データベースに接続して次のSQLが実行できます。
CREATE EXTENSION address_standardizer;
次のテストでは、rules, gaz, lexテーブルは必要ありません。
SELECT num, street, city, state, zip FROM parse_address('1 Devonshire Place PH301, Boston, MA 02109');
出力は次のようになります。
num | street | city | state | zip -----+------------------------+--------+-------+------- 1 | Devonshire Place PH301 | Boston | MA | 02109
PerlのRegex::Assembleは、ソースツリーの一部がこれで作られていますが、住所標準化エクステンションではもはや不要です。ただし、usps-st-city-orig.txt
またはusps-st-city-orig.txt usps-st-city-adds.tx
を編集する必要がある場合は、parseaddress-stcities.h
のリビルドでRegex:Assembleが必要です。
cpan Regexp::Assemble
Ubuntu / Degianの場合には、次のようにしなければならないかも知れません。
sudo perl -MCPAN -e "install Regexp::Assemble"
Tigerジオコーダのような拡張機能はPostGISディストリビューションに同梱されていません。Tigerジオコーダエクステンションが無かったり、インストールしているものより新しい版のものが欲しい場合には、Windows Unreleased Versions節でPostgreSQLの版に合ったパッケージにあるshare/extension/postgis_tiger_geocoder.*
ファイルを使います。これらのパッケージはWindows用ですが、postgis_tige_geocoderエクステンションファイルは、SQLとPL/pgSQLだけですので、他のOSでも動作します。
PostgreSQL 9.1以上とPostGIS 2.1.0を使用している場合は、Tigerジオコーダのインストールで、新しいエクステンションモデルの利点を得ることができます。次のようにします。
まず、通常の方法で、PostGIS 2.1.0のバイナリを取得するか、コンパイルしてインストールします。これにより重要なエクステンションファイルとTigerジオコーダのファイルがインストールされます。
psql、pgAdminまたは他のツールでデータベースに接続して、次のSQLコマンドを実行します。既にPostGISを持っているデータベースにインストールする場合は、一つ目の手順は不要です。fuzzystrmatch
エクステンションが既にインストールされている場合は、二つ目の手順は不要です。
CREATE EXTENSION postgis; CREATE EXTENSION fuzzystrmatch; CREATE EXTENSION postgis_tiger_geocoder; -- 規則を基にした住所標準化 (pagc_normalize_address)を使いたい場合の任意実行 CREATE EXTENSION address_standardizer;
既にpostgis_tiger_geocoderエクステンションをインストールしていて、最新版に更新するだけの場合には、次を実行します。
ALTER EXTENSION postgis UPDATE; ALTER EXTENSION postgis_tiger_geocoder UPDATE;
独自のエントリを生成した場合や、tiger.loader_platform
とtiger.loader_variables
に変更を加えた場合には、これらをアップデートしなければならないことがあります。
正しくインストールされたかを確認するために、インストール対象データベース内で次のSQLを実行します。
SELECT na.address, na.streetname,na.streettypeabbrev, na.zip FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na;
出力は次のようになります。
address | streetname | streettypeabbrev | zip ---------+------------+------------------+------- 1 | Devonshire | Pl | 02109
tiger.loader_platform
テーブルの、実行ファイルやサーバのパスを持つ新しいレコードを生成します。
sh
コンベンションのあとにdebbieというプロファイルを生成する例として、次のコマンドを実行します。
INSERT INTO tiger.loader_platform(os, declare_sect, pgbin, wget, unzip_command, psql, path_sep, loader, environ_set_command, county_process_command) SELECT 'debbie', declare_sect, pgbin, wget, unzip_command, psql, path_sep, loader, environ_set_command, county_process_command FROM tiger.loader_platform WHERE os = 'sh';
それから、declare_sectカラム内のパスを編集して、Debbieのpg, unzip, shp2pgsql, psql他のパス位置に適応するようにします。
loader_platform
テーブルを編集しない場合は、一般的なアイテムの位置を持っているので、スクリプトが生成された後で、スクリプトを編集しなければなりません。
PostGIS 2.4.1からは、ZTCA5
(Zip Code 5 digit Tabulation Area)のロード手順が変更され、有効になった時にLoader_Generate_Nation_Scriptの一部として現在のZCTA5データをロードするようになりました。デフォルトでは切られています。ロードにかなりの時間 (20から60分)が取られ、かなりのディスクスペースを占有するのに、そんなに頻繁には使わないためです。
有効にするには、次のようにします。
UPDATE tiger.loader_lookuptables SET load = true WHERE table_name = 'zcta510';
境界のフィルタが追加され、ちょうど境界内のZIPに制限された場合に、Geocode関数は、ZCTA5が存在するなら使います。Reverse_Geocode関数は、返された住所にZIPコードが無い場合に (しばしば高速道路での逆ジオコーディングで発生します)、これを使います。
サーバまたはローカル (サーバへのネットワーク接続が早い場合)のルートにgisdata
というフォルダを作成します。このフォルダはTigerファイルがダウンロードされ、処理される場所です。サーバのルートにフォルダを作ると不幸になる場合や、単に他のフォルダに移したい場合には、tiger.loader_variables
テーブルのstaging_fold
フィールドを編集します。
gisdata
フォルダ内にtempというフォルダを作成します。もしくは、staging_fold
で示されたフォルダを作成します。ローダがダウンロードしたTigerデータを展開する場所です。
そして、SQL関数Loader_Generate_Nation_Scriptを実行して、独自のプロファイルの名前を使うか確認し、.shまたは.batファイルにスクリプトを複写します。たとえば、新しいプロファイルで国のロードを行う場合には、次のようにします。
psql -c "SELECT Loader_Generate_Nation_Script('debbie')" -d geocoder -tA > /gisdata/nation_script_load.sh
生成された国データをロードするコマンドラインスクリプトを実行します。
cd /gisdata sh nation_script_load.sh
国スクリプトを実行した後、tiger_data
スキーマに三つのテーブルが作られ、データが格納されています。次のクエリをpsqlかpgAdminから実行して、確認します。
SELECT count(*) FROM tiger_data.county_all;
count ------- 3233 (1 row)
SELECT count(*) FROM tiger_data.state_all;
count ------- 56 (1 row)
デフォルトではbg
, tract
, tabblock
に対応するテーブルはロードされません。ジオコーダはこれらのテーブルを使いませんが、一般に、人口統計に使います。州データのロードの一部としてロードするには、次の手続きを実行して有効にします。
UPDATE tiger.loader_lookuptables SET load = true WHERE load = false AND lookup_name IN('tract', 'bg', 'tabblock');
もしくは、Loader_Generate_Census_Scriptを使って州のデータをロードした後に、これらのテーブルだけをロードできます。
データをロードしたい州ごとに、Loader_Generate_Scriptで州スクリプトを作ります。
![]() | |
国データのロードを完了する前に*州スクリプトを作ってはなりません*。州スクリプトは国スクリプトでロードされる国リストを利用するためです。 |
psql -c "SELECT Loader_Generate_Script(ARRAY['MA'], 'debbie')" -d geocoder -tA > /gisdata/ma_load.sh
生成されたコマンドラインスクリプトを実行します。
cd /gisdata sh ma_load.sh
全てのデータのロードが完了するか中断ポイントに達した後に、全てのtigerテーブルに対してanalyzeを実行して、(継承されたものも含めて)状態を更新するのは良いことです。
SELECT install_missing_indexes(); vacuum (analyze, verbose) tiger.addr; vacuum (analyze, verbose) tiger.edges; vacuum (analyze, verbose) tiger.faces; vacuum (analyze, verbose) tiger.featnames; vacuum (analyze, verbose) tiger.place; vacuum (analyze, verbose) tiger.cousub; vacuum (analyze, verbose) tiger.county; vacuum (analyze, verbose) tiger.state; vacuum (analyze, verbose) tiger.zip_lookup_base; vacuum (analyze, verbose) tiger.zip_state; vacuum (analyze, verbose) tiger.zip_state_loc;
エクステンションモデルを使わずにTigerジオコーダをインストールしている場合に、次のようにして、エクステンションモデルに変換できます。
「Tigerジオコーダのアップグレード」の指示に従って非エクステンションモデルのアップグレードを行います。
psqlまたはpgAdminでデータベースに接続して、次のコマンドを実行します。
CREATE EXTENSION postgis_tiger_geocoder FROM unpackaged;
まず、上述の手順でPostGISをインストールします。
extrasフォルダが無い場合、http://download.osgeo.org/postgis/source/postgis-3.1.0.tar.gzをダウンロードします。
tar xvfz postgis-3.1.0.tar.gz
cd postgis-3.1.0/extras/tiger_geocoder
tiger_loader_2015.sql
(違う年のものをロードしたくないならば最新のローダファイル)をあなたの実行サーバ等のパスに編集します。もしくはloader_platform
がインストールされた後に一度これを更新します。このファイルもloader_platform
も編集しない場合には、一般的なアイテムの位置を持っているだけなので、Loader_Generate_Nation_ScriptとLoader_Generate_Scriptを実行した後に、生成されたスクリプトを編集しなければなりません。
初めてTigerジオコーダをインストールする場合は、Windowsではcreate_geocode.bat
を、またLinux/Unix/Mac OSXではcreate_geocode.sh
を、使用するPostgreSQLにとって独自の設定に変更したうえで、コマンドラインから対応するスクリプトを実行します。
データベースにtiger
スキーマがあることを確認します。もし無い場合は、次の行を参考に、コマンドを実行します。
ALTER DATABASE geocoder SET search_path=public, tiger;
住所正規化機能は、トリッキーな住所を除いて、大体データなしで動作します。テストを実行して次のように見えることを確認して下さい。
SELECT pprint_addy(normalize_address('202 East Fremont Street, Las Vegas, Nevada 89101')) As pretty_address; pretty_address --------------------------------------- 202 E Fremont St, Las Vegas, NV 89101
皆さんが問題と思われるの多くのことのひとつに、ジオコーディング前の準備に住所を正規化する関数Normalize_Addressがあります。住所正規化は万全と言うにはほど遠く、パッチをあてようとすると膨大な資源を費やします。よって、より良い住所標準化エンジンを持つ他のプロジェクトに統合しました。この新しい住所標準化を使うには、「PAGC住所標準化ツールのインストールと使用」で記述するようにエクステンションをコンパイルし、使用するデータベースにインストールします。
このエクステンションをpostgis_tiger_geocoder
をインストールしているデータベースにインストールすると、Pagc_Normalize_Address文字列のストリート住所を与えると、道路後置辞、前置辞、標準タイプ、番地、ストリート名等を複数フィールドに分解して持つnorm_addy
複合型を返します。この関数は、tiger_geocoder同梱のルックアップテーブルだけを使います (Tigerデータは不要です)。住所標準化エクステンションが必要です。を、Normalize_Addressの代わりに使うことができます。このエクステンションはTigerジオコーダからは見えないので、国際的な住所といった他のデータソースでも使えます。Tigerジオコーダエクステンションは、その版の規則テーブル (tiger.pagc_rules
), gaz table (tiger.pagc_gaz
), lexテーブル (tiger.pagc_lex
)を同梱しています。これらは、必要に応じて標準化の改善のために追加や更新ができます。
データロードの説明の詳細はextras/tiger_geocoder/tiger_2011/README
にあります。これは一般的な手順を示しています。
ロードプロセスによって、米センサスウェブサイトから個々の国ファイル、リクエストされた州のデータをダウンロードし、ファイルを展開し、個別の州をそれぞれの州テーブルの集合にロードします。各州のテーブルは、tiger
スキーマで定義されたテーブルを継承しているので、これらのテーブルに対して全てのデータにアクセスするためのクエリを出すことができますし、州の再読み込みが必要となったり、州が必要ない場合には、Drop_State_Tables_Generate_Scriptで、いつでも州テーブルの集合を削除するクエリを出すことができます。
データのロードを可能にするためには次のツールが必要です。
センサスウェブサイトから取得するZIPファイルを展開するツール。
Unix系システムでは、unzip
実行ファイルです。通常は、ほとんどのUnix系プラットフォームで既にインストールされています。
Windowsでは7-zipです。http://www.7-zip.org/からダウンロードできる無償の圧縮解答ツールです。
shp2pgsql
コマンド。PostGISインストール時にデフォルトでインストールされます。
wget
コマンド。通常はほとんどのUnix/Linuxシステムにインストールされている、ウェブ取得ツールです。
Windows用については、コンパイル済みのバイナリをhttp://gnuwin32.sourceforge.net/packages/wget.htmから取得できます。
tiger_2010からアップグレードする場合には、最初にDrop_Nation_Tables_Generate_Scriptを生成、実行する必要があります。州データをロードする前に、Loader_Generate_Nation_Scriptで国データをロードする必要があります。これによって、環境に合ったローダスクリプトが生成されます。Loader_Generate_Nation_Scriptは、一度の操作で、(2010からの)アップグレードと、新しいインストールが行われます。
州データをロードするには、Loader_Generate_Scriptを参照して、手持ちのプラットフォームで動作する、求める州データをロードするデータロードスクリプトを生成します。州データはひとつずつダウンロードできることに注意して下さい。一度に必要な州の全てについてデータをロードする必要はありません。必要なだけダウンロードできます。
求める州データをロードした後は、Install_Missing_Indexesに示すように、
SELECT install_missing_indexes();
を実行するようにして下さい。
行うべきことができたかをテストするために、Geocodeを使用する州の中の住所についてジオコーダを実行してみます。
2.0以上に含まれるTigerジオコーダがインストールされている場合には、どうしても必要な訂正があるときは、いつでも臨時のアーカイブファイルからでも機能のアップグレードができます。 これは、エクステンションでインストールされていないTigerジオコーダで動作します。
extrasフォルダが無い場合、http://download.osgeo.org/postgis/source/postgis-3.1.0.tar.gzをダウンロードします。
tar xvfz postgis-3.1.0.tar.gz
cd postgis-3.1.0/extras/tiger_geocoder/tiger_2011
Windowsの場合はupgrade_geocoder.bat
スクリプト、Linux/Unix/MacOS Xの場合はupgrade_geocoder.sh
スクリプトの位置を特定します。 PostGISデータベースの資格情報を持つように編集します。
2010または2011からアップグレードする場合には、確実にローダスクリプトのコメントアウトを消すと、2012データのロードのための最新のスクリプトを得ます。
対応するスクリプトをコマンドラインから実行します。
次に、全ての国テーブルを削除し、新しい国テーブルをロードします。Drop_Nation_Tables_Generate_Scriptに詳細がある通り、このSQLステートメントを使った削除スクリプトを生成します。
SELECT drop_nation_tables_generate_script();
生成した削除SQLステートメントを実行します。
Loader_Generate_Nation_Scriptに詳細がある通り、このSELECTステートメントを使った削除スクリプトを生成します。
Windows向け
SELECT loader_generate_nation_script('windows');
Unix/Linux向け
SELECT loader_generate_nation_script('sh');
生成したスクリプトの実行方法に関する説明は、「Tigerデータのロード」を参照して下さい。これは一度だけ実行する必要があります。
![]() | |
2010/2011州テーブルを混在させることができ、それぞれの州について個別にアップグレードできます。2011にアップグレードする前に、まず、Drop_State_Tables_Generate_Scriptを使って、2010州テーブルを削除します。 |
インストールやアップグレードが思うようにいかない時にチェックすることがいくつかあります。
PostgreSQL 9.6以上をインストールしているか、実行中のPostgreSQLと同じ版のソースでコンパイルしているか、をチェックします。(Linuxの)ディストリビューションによって既にPostgreSQLがインストールされている時や、 PostgreSQLを以前にインストールして忘れた場合に、 混乱が発生することがあります。PostGISはPostgreSQL 9.6以上で動作します。古い版のものを使った場合には、おかしな予想外のエラーメッセージが表示されます。実行中のPostgreSQLの版をチェックするには、psqlを使ってデータベースを接続して、次のクエリを実行して下さい。
SELECT version();
RPMベースのディストリビューションを実行している場合、 プリインストールされたパッケージが存在するかのチェックは、rpm コマンドを使ってrpm -qa | grep postgresqlでチェックできます。
アップグレードに失敗する場合、既にPostGISがインストールされているデータベースにリストアしているか確認して下さい。
SELECT postgis_full_version();
また、コンフィギュアが正しくPostgreSQL、Proj4ライブラリ、GEOSライブラリのインストール先を検出したかチェックして下さい。
コンフィギュアからの出力でpostgis_config.h
ファイルが作られます。POSTGIS_PGSQL_VERSION
、POSTGIS_PROJ_VERSION
およびPOSTGIS_GEOS_VERSION
変数が正しくセットされたかをチェックして下さい。