自前のWebサイトに地図を使いたいけど、GoogleMapsを避けたいときなどは、OpenStreetMapを使うことが多いと思います。
その時に必要となるタイル画像を事前生成する手順のメモです。
地図サーバーを構築する
Webに公開されているサーバーからデータを取得すると、負荷をかけるし、重いし、そもそもアクセス制限されているのかエラーになったりするので、自前でサーバーを用意する。
地図用のデータを取得する
OpenSteetMapの地図データであるPBFファイルをどこかから取得する。
を使うと、必要なエリアの地図データのみ取得できる。
サーバーを立てる
神Dockerfile
が公開されているので、簡単に構築できる。
$ docker volume create osm-data # データ領域を作る
$ docker run -v [取得したPBFファイルのフルパス]:/data/region.osm.pbf -v osm-data:/data/database overv/openstreetmap-tile-server import # データインポート
$ docker run -p 8080:80 -v osm-data:/data/database -d overv/openstreetmap-tile-server run # サーバー起動
http://localhost:8080
にアクセスして、地図の動作確認ができる。
タイル画像を生成する
downloadosmtilesを利用する。
実行したディレクトリの直下にタイル画像が生成されるので、適当なディレクトリを作成して、その中から実行する。
モジュールGeo/OSM/Tiles.pm
が必要なので、事前に入れておく。
$ mkdir map_images
$ cd map_images
$ wget https://fastapi.metacpan.org/source/ROTKRAUT/Geo-OSM-Tiles-0.04/downloadosmtiles.pl
$ cpan install Geo/OSM/Tiles.pm
$ perl downloadosmtiles.pl --lat=[開始緯度]:[終了緯度] --lon=[開始経度]:[終了経度] --zoom=[開始ズームレベル]:[終了ズームレベル] --baseurl=http://localhost:8080/tile
以上。