UbuntuまたはDebianでのOSMデータに基づいたタイルジェネレーターのインストールと構成

Openstreetmap 最近では、地図作成タイルを生成するためのソフトウェアを作成するという課題が生じました。 基礎として、選択はmapnikにかかっていました (それに代わるものはほとんどありません)。 判明したように、途中で多くの困難と予期しないエラーがありましたが、すべてを「ターンキー」に設定する方法について、多少なりとも明確なドキュメントを見つけることができませんでした。 しばらくいじくり回していた私は、発生する可能性のある多くのレーキを収集し、問題を勝利の終わりに導くことができました。 これと記事について。

UbuntuとDebianでインストールが行われました。 リポジトリにない場合もあるソフトウェア製品の最新バージョンを使用する方が良いとすぐに言います。 必要に応じて、公式サイトから手動でダウンロードできます。

必要な依存関係は別として、一般的な場合には必要です


PostgreSQLのインストール


最初に、リポジトリにあるPostgreSQLのバージョンを確認します。
$ apt-cache show postgresql 

バージョン8.4以上の場合は、パッケージをインストールします。
 $ sudo apt-get install postgresql 

それ以外の場合は、公式Webサイトwww.postgresql.org/download/linuxからパッケージをダウンロードしてインストールします。 次に、データベースを構成する必要があります。 デフォルトでは、そのユーザーはpostgresであり、OC自体を使用して彼からのみログインできます。 ただし、少し異なる方法で動作し、最初にpg_hba.confファイルを開きます。 ロケートユーティリティを使用してその場所を見つけることができます

 $ sudo updatedb $ sudo locate pg_hba.conf 

このユーティリティがインストールされていない場合は、設定します
 $ sudo apt-get install findutils locate 

上記のコマンドを繰り返します。 たとえば、このファイルは/etc/postgresql/8.4/main/pg_hba.confにあります。 開いて編集します。

 $ sudo vi "/etc/postgresql/8.4/main/pg_hba.conf" 

交換:
 $ locate all all ident #    


 $ locate all all password #    

ファイルを保存し、PostgreSQLを再起動します。
 $ sudo "/etc/init.d/postgresql-8.4 restart" 

これで、データベースの任意のユーザーを作成し、暗号化なしで通常のパスワードとしてログインできます(スーパーセキュリティは重要ではありません)。 また、OSMデータ用の新しいデータベースが必要です。
PostgreSQL管理コンソールに移動します。
 $ su postgres $ psql postgres=# CREATE ROLE osm WITH SUPERUSER PASSWORD 'my_password' LOGIN; CREATE ROLE postgres=# CREATE DATABASE osm; CREATE DATABASE postgres=# \q 

ユーザーとデータベースが作成されました。
次のコマンドを使用して、新しいユーザーの操作性を確認できます。
 $ psql -U osm -d osm -W 

パスワードを入力した後、PostgreSQLコンソールにアクセスすると、すべてがうまくいきました。

PostGISのインストール


PostGISが必要になります。 リポジトリにバージョン1.4がありました。 インストールした後、何らかの理由でpostgis.sqlファイルが見つからなかったため、このバージョンを破棄し、公式サイトからバージョン1.5をダウンロードしました。 したがって、この記事では同じことを行います。
 $ wget "http://postgis.refractions.net/download/postgis-1.5.4.tar.gz" 

アーカイブを解凍し、アセンブルしてインストールします。
 $ tar xvfz "./postgis-1.5.4.tar.gz" $ cd "./postgis-1.5.4" $ sudo ./configure $ sudo make install 

必要なライブラリがない場合は、それらをインストールします。
次に、osmデータベースに特別な言語をインストールします。
 $ createlang plpgsql osm -U osm -W 

次に、osmデータベースでpostgis.sqlと900913.sqlの2つのSQLスクリプトを実行する必要があります。
Locateユーティリティを使用して、それらの場所を見つけて実行します。
 $ psql -U osm -d osm -W -f "/usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql" $ psql -U osm -d osm -W -f "/usr/share/osm2pgsql/900913.sql" 

練習からわかるように、このコマンドはPostgreSQLのスーパーユーザー権限を持つユーザーから実行する必要があります。 ERRORプランに問題やエラーがある場合:「geometry」タイプが存在しない場合は、sqlファイルを実行する前に実行してみてください。
 $ sudo ldconfig 

sqlファイル起動コマンドを再発行します。
それだけです! PostgreSQLのセットアップが完了しました。 Mapnikのインストールに進みます。

Mapnikをインストールする


 $ sudo add-apt-repository ppa:mapnik/nightly-trunk $ sudo apt-get update $ sudo apt-get install libmapnik mapnik-utils python-mapnik 

システムが「add-apt-repository:command not found」と表示した場合、
 $ sudo apt-get install python-software-properties 

上記の3つのコマンドを繰り返します。 Mapnikがインストールされます。 Pythonをインストールする必要性については書きませんでした。ほとんどの場合、Pythonは常に既にインストールされているからです。 mapnikの動作を確認します。
 $ python >>> import mapnik 

エラーが発生しなければ、すべてがうまくいきました。 osm2pgsqlのインストールに移りましょう

Osm2pgsqlをインストールする


 $ sudo apt-get install osm2pgsql 

重要な点が1つ残っています。 実際には、osmデータをデータベースにエクスポートするためにosm2pgsqlが提供するdefault.styleファイルは、何らかの理由で最新のOSM形式に対応していません。 (おそらく誰かがその理由を知っていますか?)。 正しい形式でファイルをダウンロードしてください。
 $ wget "http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/default.style" 

次に、osm2pgsqlにデフォルトで付属しているものを置き換えます
 $ sudo cp "./default.style" "/usr/share/osm2pgsql/default.style" 


OpenStreetMapからスクリプトをインストールしてタイルを生成する


OpenStreetMap svn.openstreetmap.orgリポジトリには、多くのスクリプトと地図作成ユーティリティが含まれています。 pythonで記述されたアプリケーションの1つが必要になります。これには、mapnikで作業するために必要なすべてのスクリプトが既に含まれています。 ダウンロードするには、Subversionをインストールする必要があります。
 $ sudo apt-get install subversion 

これで、OSMアプリケーションを安全にダウンロードできます。 その場所のフォルダーを作成します。 たとえば、この/ home / osm / mapnikがあり、チェックアウトを行います。
 $ mkdir "/home/osm/mapnik" $ svn co "http://svn.openstreetmap.org/applications/rendering/mapnik" "/home/osm/mapnik" 

次に、アプリケーションにあるスクリプトを実行します。
 $ bash /home/osm/mapnik/get-coastlines.sh 

彼は私たちに世界の形で必要なファイルをダウンロードします。
次に、XMLスタイルシートを作成する必要があります。 これは、次のコマンドで実行されます。
 $ python /home/osm/mapnik/generate_xml.py osm.xml my_osm.xml --dbname osm --user osm --password my_password --accept-none 

PostgreSQLに接続するためのデータを含むmy_osm.xmlファイルが作成されます。

フェザーテスト


そのため、OSMファイルをダウンロードして、それに基づいてタイルを生成できるようになりました。 OSMファイルは、 wiki.openstreetmap.org / wiki / Planet.osmにリストされているサイトからダウンロードできます。
もちろん、Planet.osmファイル全体をダウンロードできますが、必要ですか? 開梱すると、重量が250 GBを超えます。

スケール17のモスクワタイルを生成するとします。
必要なOSMファイルをダウンロードします。
 $ wget "http://download.bbbike.org/osm/bbbike/Moscow/Moscow.osm.gz" 

これでデータベースにエクスポートできます。
 $ sudo osm2pgsql -U osm -d osm Moscow.osm.gz 

それだけです! タイル生成スクリプトを実行するためだけに残ります。 しかし、その前に、取得したいタイルの希望のスケールと座標を示すために、少し編集する必要があります。 ファイル/home/osm/mapnik/generate_tiles.pyを開きます。 my_osm.xmlを指すようにmapfile変数を設定します。
 mapfile = "/home/osm/mapnik/my_osm.xml" 

次に、タイルを追加する場所を示す変数を再定義します。
 tile_dir = "/home/osm/mapnik/all_tiles" 

ダウンロードしたMoscow.osmファイルには、ベクターデータの座標が含まれています
 xMin = 37.32000 yMin = 55.57000 xMax = 37.88000 yMax = 55.92000 

スクリプトにそのような行があります
 bbox = (-180.0,-90.0, 180.0,90.0) render_tiles(bbox, mapfile, tile_dir, 0, 5, "World") 

そして、それらの前に(既存のコードを上書きしないように)書きます:
 bbox = (37.32000, 55.57000, 37.88000, 55.92000) render_tiles(bbox, mapfile, tile_dir, 17, 17, "Moscow") exit() 

モスクワでタイルを生成した後のスクリプトが全世界の生成に違反しないように、exit()を記述することをお勧めします。
4と5の場合、render_tiles関数のパラメーターは、タイルの生成元となるスケールを設定します。 この場合、17スケールのみを選択しました。

保存して実行します。
 $ python /home/osm/mapnik/generate_tiles.py 

タイルを生成するプロセスが進みます。

[UPD] switch2osm.org/serving-tiles/manually-building-a-tile-serverにも素晴らしいマニュアルがあります

Source: https://habr.com/ru/post/J144675/


All Articles