目次
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 1 – <–いまここ
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 1.5 –
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 2 –
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 3 –
- Ubuntu 16.04 で OpenStreetMap タイルサーバを構築 – 4 –
Google Map や Bing Map など で地図位置サービスを提供しているのはよく利用していますよね。
これらの地図情報について、単純に地図を使って場所を探す時や、行先案内のように使う場合には、
特にライセンスのことを気にしなくても問題はないのですが、
こと GPSなどの端末を取り付けて位置情報を拾っていく仕組みに採用しようとすると
フリーライセンスから大概のサービスが外れて、プレミアム 契約 に してね $500/月
という何とも 無情な サーバへの付加とか考慮すると妥当な金額を提示されるのです。
そこで、代替え方法はないかと いろいろつついてみると OpenStreetMap というサービスがあって
タイル サーバを自前で用意すれば地図情報提供するよ 的な使用方法が可能なようなのでトライしてみます。
元の内容はこちらから をほぼそのままやっています。
https://www.linuxbabe.com/linux-server/openstreetmap-tile-server-ubuntu-16-04
元記事の 更新日2016/07/22 By: Xiao Guoan 氏
OpenStreetMap、別名、OSM は自由に編集可能なユーザー貢献した世界地図です。 このチュートリアルでは、Ubuntu 16.04 で OpenStreetMap タイル サーバーを構築する方法を示します。 2 GB の RAM、40 GB のディスク容量は、OpenStreetMap サーバーの最小要件をする必要があります。
と言っているので、先ずは さくらVPS 上で Ubuntu 16.04 を用意しました。
RAM : 1GB ディスク100GB でも大丈夫でしょうか? 結果は後程。
ステップ1:
ソフトウェア アップデート
sudo apt update sudo apt upgrade
ステップ2:
PostgreSQL データベース サーバーと PostGIS
地図データの格納にPostgreSQL を使用します。
PostGIS は PostgreSQL に地理空間情報を拡張します。
それらをインストールするコマンドを次のように実行します。
sudo apt install postgresql postgresql-contrib postgis postgresql-9.5-postgis-2.2
postgres という名前のユーザーは、インストール プロセス中に作成されます。
これらは Peer 認証を使用します。
postgres ユーザー に切り替えます。
sudo -u postgres -i
osm という PostgreSQL データベースユーザーを作成します。
createuser osm
osm が所有者 で 文字コードエンコーディング がUTF8 のgis という名前のデータベースを作成します。
createdb -E UTF8 -O osm gis
・・失敗します。UTF8 なんてエンコーディング設定知らないって。
ここを参考に
pg_lsclusters コマンドでステータスを見る
pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.5 main 5433 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
pg_dropcluster コマンドでクラスタ削除
pg_dropcluster --stop 9.5 main
pg_createcluster コマンドで クラスタ作成
cd /var/lib/postgresql pg_createcluster --start --local C -e UTF8 9.5 main
設定ファイルの修正
cd /etc/postgresql/9.5/main vi postgresql.conf
postgresql.conf の修正
# - Connection Settings - listen_addresses = '*' #listen_addresses = 'localhost' # what IP address(es) to listen on;
postgres ユーザーを抜けます。
exit
PostgreSQL の再起動
sudo /etc/init.d/postgresql restart
もう一度 ステータス確認
pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.5 main 5432 down postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
なんか落ちてる・・。
postgres ユーザーを抜けて 再起動
sudo shutdown -r now
再起動したら
postgres ユーザー に切り替えます。
sudo -u postgres -i
もう一度 ステータス確認
pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.5 main 5432 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
osm が所有者 で 文字コードエンコーディング がUTF8 のgis という名前のデータベースを作成します。
createdb -E UTF8 -O osm gis
今度は成功
hstore と postgis エクステンションを作成します。
psql -c "CREATE EXTENSION hstore;" -d gis psql -c "CREATE EXTENSION postgis;" -d gis
postgres ユーザを抜けます
exit
タイルサービスを実行する osm ユーザーを作成します。
sudo adduser osm
ステップ3:
マップスタイルシートとマップデータのダウンロード
osm ユーザーに切り替えます。
su - osm
osm ユーザーの ホームディレクトリにCartoCSS マップ スタイスシートをダウンロードします。
wget https://github.com/gravitystorm/openstreetmap-carto/archive/v2.41.0.tar.gz
展開します
tar xvf v2.41.0.tar.gz
続いて、マップデータ を osm ユーザーの ホームディレクトリにダウンロードします。
マップデータ planet (32G)
wget -c http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf
必要な国・地域のでマップを取得するためには http://download.geofabrik.de または
BBBuke.org などから ダウンロードできます。
例として、日本のマップデータをダウンロードします (1G)
wget -c http://download.geofabrik.de/asia/japan-latest.osm.pbf
osm ユーザーから抜けます
exit
ステップ4:
PostgreSQL に マップデータをインポート
PostgreSQL データベースで postGIS を使えるように OpenStreetMap データをコンバートする osm2pgsql を インストールします。
sudo apt install osm2pgsql
osm ユーザーに切り替えます
su - osm
gis データーベースに マップスタイルシートと マップデータを読み込みます。
japan-latest.osm.pbf の部分はあなたの環境に読み替えてください。
osm2pgsql --slim -d gis -C 3600 --hstore -S openstreetmap-carto-2.41.0/openstreetmap-carto.style japan-latest.osm.pbf
osm2pgsql コマンドを実行するときのオプション指定には
-d で データベースを指定します
-C はキャッシュサイズです。 試している環境では 失敗しました
osm2pgsql --slim -d gis -C 1600 --hstore -S openstreetmap-carto-2.41.0/openstreetmap-carto.style japan-latest.osm.pbf
で 大丈夫そうです。
-s スタイルファイルを指定します
そして最後に 必要なマップデータファイルを指定します。
このインポート処理は非常に時間がかかります
先に SSH 接続保持時間の設定をsshの設定ファイルへ指定しておくことをお勧めします。
-- 2016/8/25 追記 --
Using 1 helper-processes
と表示されてから 24時間経過してもこのままなので
さすがに スペック不足ということで、この環境ではあきらめました。
今度は さくらクラウド 3GB 2コアで 挑戦してみます。
タグ: OpenStreetMap, OSM, タイルサーバ