こんにちは松田です。
OpenStreetMapを使ってみる1でPostgreSQLに地図データを投入が完了しましたので、
今回は地図画像の生成とブラウザでの表示までやりたいと思います。

各バージョン

  • CentOS 7.4(前回と同じ)
  • PostgreSQL 9.4.19(前回と同じ)
  • Mapnik 3.0.10
  • Apache 2.4

前提パッケージのインストール

Mapnikのインストール

地図画像生成ライブラリのインストール

以下のファイルができたことを確認
※PostgreSQLがインストールされていないとpostgis.inputが生成されないので注意

共有ライブラリ設定

mapnik-stylesheetsのインストール

mapnik-stylesheetsのインストール

設定用XMLファイルの生成

/usr/local/src/mapnik-stylesheets/inc/datasource-settings.xml.incのホスト名、DB名、ユーザ名、パスワード、ポートが正しいことを確認。

apacheのインストール

/usr/bin/apxsが必要な為、develもインストールします。

mod_tileのインストール

mod_tileのインストール

以下のファイルができたことを確認

mod_tileの設定

ディレクトリ作成

設定ファイル /etc/renderd.conf の作成

httpdの設定

/etc/httpd/conf.d/tile.confの作成

httpdの起動

renderdの起動

renderdの起動

しかし起動に失敗する。
/var/log/renderd.logに以下のエラーが出ていた。

どうやらXMLのエンティティ参照が原因のようです。以下のコマンドでエラー解消。(かなりハマりました)

こんどこそ起動

ちなみにPostgreSQLが起動していなかったり、接続情報に誤りがあると以下のエラーになります。

htmlファイル用意

/var/www/html/index.html

ブラウザで確認

http://サーバのIP/index.html

GoogleMapと同じようにマウスで移動やズームができます。
地図画像は都度生成しているので画面内のすべての画像が表示されるまで30秒程度かかります。

日本語フォント導入

デフォルトだと日本語の地名が文字化けしちゃっています。

ので日本語フォントを導入します。

/usr/local/src/mapnik-stylesheets/osm.xmlのフォント部分を以下のように修正

renderdを再起動

日本語が表示されるようになりました。

終わりに

ブラウザで地図画像の表示までできました。
前回と同様に今回も依存関係やエラーの解消にかなり苦労しました。
この記事が誰かの役に立てば幸いです。

TOP
TOP