maemaewaterの日記

エンジニア兼ゲーマーの人の日記です。PHP/Python/JavaScript/C#/C++などによるプログラムに関することを主に書いています。

OpenStreetMapのスタイルでDBの接続先を変更する

OpenStreetMapをnode.jsからレンダリングする時にスタイルのXMLを用意しますが、ここに書かれているDB(PostgreSQL)への接続先を変更する方法についてです。実際の運用では、接続先が変わると思いますので(PostgreSQLを別のサーバーで動かしたりなど)、接続先の変更についてになります。

接続先自体は、読み込むスタイルファイルのLayerタグの中のDatasourceで指定している箇所に変更を加えればよいのですが数も多いためXMLのスタイルを生成するタイミング(cartoを実行するタイミング)で変更ができると良さそうでした。

調べてみたところ、cartoのプログラムの引数でこれらを設定することはできないようでしたがproject.mmlでDBへの接続先情報を扱っていることが分かりました。openstreetmap-cartoプロジェクトでのproject.mmlを例にみていきます。

project.mmlの次の箇所を変更することになります。 https://github.com/gravitystorm/openstreetmap-carto/blob/7d478be24f150363e020c723b17b5fb697f22b51/project.mml#L31

ここで接続先情報が書かれていますので、以下のような項目を追加することで変換したときのXMLに書き込まれるようになります。

  • host : 接続先のサーバーのホスト
  • user : 接続のときに利用するユーザー名
  • password: パスワード

このファイルに変更を加えることで生成されたXMLにこれらの情報が追加されます。