Imposm は OpenStreetMap データのインポーターです。 PBF ファイルを読み取り、データを PostgreSQL/PostGIS にインポートします。 OSM からの最新の変更でデータベースを自動的に更新することもできます。
これは、レンダリング (つまり、タイルの生成または WMS サービス) 用に最適化されたデータベースを作成するように設計されています。
Imposm >=3 は Go で書かれており、以前の Python 実装を完全に書き直したものです。構成/マッピングおよびキャッシュ ファイルは Imposm 2 と互換性がありませんが、同様のアーキテクチャを共有しています。
Imposm の開発は Omniscale によって後援されています。
Imposm は作者によって実稼働環境で使用されています。これは、PostGIS などの依存関係との将来の非互換性を解決することに焦点を当てて、積極的に保守されています。ただし、エンドユーザーをサポートする能力はなく、既存の範囲を超える新機能は開発されません。
高性能: 根本から平行。解析と処理を利用可能なすべての CPU コアに分散します。
カスタム データベース スキーマ: さまざまなデータ型のテーブルを作成します。これにより、WMS またはタイル サービスでのレンダリングのスタイルが簡単になり、パフォーマンスが向上します。
値の統一: たとえば、ブール値1
、 on
、 true
、およびyes
すべてTRUE
になります。
タグと値によるフィルター: レンダリング/使用するデータのみをインポートします。
効率的なノード キャッシュ: 方法と関係を構築するには、すべてのノードを保存する必要があります。 Imposm は、ファイルベースのキーと値のデータベースを使用してこのデータをキャッシュします。
一般化されたテーブル: 空間解像度が低いテーブルを自動的に作成します。これは、大規模な道路網を低解像度でレンダリングするのに最適です。
ポリゴンに制限: 都市/州/国のインポートの場合、インポートされるジオメトリを GeoJSON からのポリゴンに制限します。
簡単な導入: 共通ライブラリ (GEOS および LevelDB) へのランタイム依存関係のみを含む単一バイナリ。
OSM の自動更新: 最新の OSM 変更を自動的にダウンロードしてインポートするバックグラウンド サービス ( imposm run
) が含まれています。
ルート関係: ルートを含むすべての関係タイプをインポートします。
テーブル名前空間 (PostgreSQL スキーマ) のサポート
COPY FROM
を使用して PostgreSQL への一括挿入を使用しますHetzner AX102 サーバー (AMD Ryzen 9 7950X3D、256GB RAM、NVMe ストレージ) 上で、一般化されたテーブルや空間インデックスなどを含む 78GB Planet PBF (2024-01-29) の差分モードでのインポートには、約 7:30 時間かかります。これは、分単位の更新に対応できるインポート用です。非差分モードはさらに高速です。
サーバーのメモリ サイズは、インポートする PBF 抽出のサイズのおよそ 2 倍にすることをお勧めします。例: 現在 (2024 年) の 78 GB のプラネット ファイルには 192 GB 以上の RAM、4 GB の地域抽出には 8 GB などの必要があります。回転ディスクを使用したインポートには大幅に時間がかかるため、お勧めできません。
バイナリ リリースは GitHub で入手できます。
これらのビルドは x86 64 ビット Linux 用であり、それ以上の依存関係は必要ありません。 imposm
ダウンロードして解凍し、起動します。バイナリは、Debian 10 および 2022 年以降の他のディストリビューションと互換性があります。古いディストリビューションをサポートする必要がある場合は、ソースからビルドできます。
いくつかの依存関係があります。
ゴーが必要です。 1.17以上を推奨します。
その他の依存関係は、libleveldb と libgeos です。 Imposm はこれらのライブラリの最新バージョンでテストされましたが、古いバージョンでも成功する可能性があります。無効なジオメトリを処理する際の堅牢性が大幅に向上したため、GEOS >=3.2 を推奨します。
Imposm をインストールする最も簡単な方法は、次を呼び出すことです。
go install github.com/omniscale/imposm3/cmd/imposm@latest
これにより、Imposm が~/go/bin/imposm
にダウンロード、コンパイル、インストールされます。 GOBIN
環境を設定することで場所を変更できます。
推奨されるインストール方法は次のとおりです。
git clone https://github.com/omniscale/imposm3.git
cd imposm3
make build
make build
Imposm をローカル パスにビルドし、バイナリにバージョン情報を追加します。
go to build を直接使用したり、 go build ./cmd/imposm
を使用して imposm をインストールしたりすることもできます。ただし、これではバージョン情報は設定されません。
Go は静的バイナリにコンパイルされるため、Imposm には Go へのランタイム依存関係がありません。導入するには、 imposm
バイナリをサーバーにコピーするだけです。ただし、上記の C/C++ ライブラリは依然として必要です。
Linux 用のバイナリ パッケージを構築する方法については、 packaging.sh
も参照してください。
パフォーマンスを向上させるには、LevelDB >1.21 を使用する必要があります。 go build -tags="ldbpre121"
またはLEVELDB_PRE_121=1 make build
使用すると、1.21 のサポートを使用してビルドできます。
imposm
複数のサブコマンドがあります。基本的なインポートにはimposm import
使用します。
単純なインポートの場合:
imposm import -connection postgis://user:password@host/database
-mapping mapping.json -read /path/to/osm.pbf -write
ターゲット データベース マッピングを含む JSON ファイルが必要です。マッピングで何ができるかについては、 example-mapping.json
を参照してください。
Imposm は、 import
テーブル スキーマ内にすべての新しいテーブルを作成します。したがって、 import.osm_roads
などができます。テーブルをpublic
スキーマに変更できます。
imposm import -connection postgis://user:passwd@host/database
-mapping mapping.json -deployproduction
いくつかのオプションを JSON 構成ファイルに書き込むことができます。
{
"cachedir": "/var/local/imposm",
"mapping": "mapping.json",
"connection": "postgis://user:password@localhost:port/database"
}
その構成を使用するには:
imposm import -config config.json [args...]
その他のオプションについては、以下を参照してください。
imposm import -help
注: Go の TLS 実装には再ネゴシエーション サポートがないため、TLS/SSL サポートはデフォルトで無効になっています。暗号化を再度有効にするには、 PGSSLMODE
環境変数またはsslmode
接続オプションをrequire
またはverify-full
に設定します (例: -connect postgis://host/dbname?sslmode=require
)。大規模なインポートでの接続エラーを防ぐために、サーバーで再ネゴシエーションのサポートを無効にする必要があります。これを行うには、PostgreSQL サーバー構成でssl_renegotiation_limit
を 0 に設定します。
最新のドキュメントは次の場所にあります: http://imposm.org/docs/imposm3/latest/
Google グループにはあらゆる質問に対応するメーリング リストがあります。購読するには、 [email protected]
にメールを送信してください。
商用サポートについては、Omniscale にお問い合わせください。
ソース コードは https://github.com/omniscale/imposm3/ から入手できます。
問題がある場合は、https://github.com/omniscale/imposm3/issues で報告できます。
Imposm は、Apache License 2.0 に基づいてオープン ソースとしてリリースされています。 「ライセンス」を参照してください。
ソース コードとして含まれるすべての依存関係は、BSD 風のライセンスに基づいてリリースされます。 LICENSE.dep を参照してください。
バイナリ リリースに含まれるすべての依存関係は、GEOS パッケージを除き、BSD 風のライセンスに基づいてリリースされます。 GEOS パッケージは LGPL3 としてリリースされ、動的にリンクされます。 LICENSE.bin を参照してください。
すべての単体テストを実行するには:
make test-unit
OSM データをインポートおよび更新し、データベースの内容を検証するシステム テストがあります。テスト PBF ファイルを作成するにはosmosis
必要です。必要に応じてすべてのテスト ファイルを作成し、テスト自体を実行する Makefile があります。
make test
make test-system
呼び出して単体テストをスキップします。
警告: ローカルの PostgreSQL データベース ( imposm_test_import
、 imposm_test_production
、およびimposm_test_backup
スキーマ) を使用します。標準のPGDATABASE
、 PGHOST
などの環境変数を使用してデータベースを変更します。