OpenStreetMapを自分でホストする

OpenStreetMap (OSM) は、世界中の人々が協力して作成した、無料、オープン、独立した世界地図です。市場リーダーであるGoogle マップはデジタル マップの第一選択肢となることが多いですが、OSM はまったく異なる原則、つまり地理データを無料で収集、改善、提供するための共同コミュニティに基づいています。


なぜこれが重要なのでしょうか?なぜなら地図は知識であり、知識は無料であるべきだからです。個々のアプリケーションでは、カスタマイズされたマップ ソリューションを開発し、データとその表示を制御するために、OSM データを自分でホストすると便利な場合があります。セルフホスティングOSMにはいくつかの利点がある:

  • 独立: 外部サービスに依存せず、カードデータを完全に制御できます。
  • 適応力: 必要に応じて、マップのスタイルと表示されるデータをカスタマイズできます。
  • データ保護: すべてのデータはローカルでホストされます。外部 API は呼び出されません。

地図を表示する方法は主に2つあります:

  • グリッドタイル: さまざまなズーム レベル用に事前に作成された画像ファイル。実装は簡単ですが、マップ スタイルをカスタマイズする際の柔軟性は低くなります。
  • ベクタータイル: クライアント側でレンダリングされるベクトル形式 (ポイント、線、ポリゴン) の地理データが含まれます。これにより、マップ デザインを柔軟に調整し、すべてのズーム レベルで鮮明な表示が可能になります。ただし、レンダリングにはクライアント デバイス上でより多くの計算能力が必要になります。

ベクター タイルは、より多くのカスタマイズ オプションを提供し、より効率的であるため、セルフホスティングに特に適しています。より小さなエリアの地域マップの場合、約 1 GB のハードディスク容量で十分な場合がよくあります。タイル読み込み時に速度上の利点が得られるため、SSD を使用するのは理にかなっています。静的ベクター タイルは、実行中のマップ サーバー (TileServer GL や Mapnik など) を必要とせず、メンテナンス要件が低く、サーバー負荷も少ないため、固定マップ セクションを持つ小規模プロジェクトに最適です。

私の小さな荷物 osmヘルパー ベクタータイルの作成と展開のプロセスを容易にします .osm.pbfファイル。カスタム境界ボックスを使用すると、開発者は特定の地理的領域を抽出し、サーバーに直接アップロードできる一致する定型句ファイルを生成できます。これにより、OSM データを Web プロジェクトに統合することがはるかに簡単になります。 osmhelper を使用するには、いくつかの準備が必要です。このライブラリは次のようなツールに基づいています。 オスミウム, mbutilタイル職人 インストールする必要があります。

オスミウムの設置

osmium はOSM データを処理するための強力なツールです。

mkdir osmium
cd osmium
wget https://github.com/osmcode/osmium-tool/archive/refs/tags/v1.16.0.tar.gz
tar -xzf v1.16.0.tar.gz
cd osmium-tool-1.16.0
apt-get install libosmium2-dev libprotozero-dev nlohmann-json3-dev libboost-program-options-dev libbz2-dev zlib1g-dev liblz4-dev libexpat1-dev cmake pandoc
mkdir build
cd build
cmake ..
make
make install
cd ..
cd ..
rm -rf ./osmium
exec env -i HOME=$HOME bash -l
osmium --version

Mbutilのインストール

mbutil は、MBTiles を操作するための Python ベースのツールです。

git clone https://github.com/mapbox/mbutil.git
cd mbutil
python setup.py install
cd ..
rm -rf ./mbutil
exec env -i HOME=$HOME bash -l
mb-util --version

タイルメーカーの設置

tilemaker は、 OSM データをベクター タイルに直接変換するオープン ソース ツールです。

apt install build-essential libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-system-dev lua5.1 liblua5.1-0-dev libshp-dev libsqlite3-dev rapidjson-dev
git clone https://github.com/systemed/tilemaker.git
cd tilemaker
make
make install
cd ..
rm -rf ./tilemaker
exec env -i HOME=$HOME bash -l
tilemaker --help

変換スクリプトをダウンロードする

mkdir openstreetmap
cd openstreetmap
wget -O ./convert.sh https://raw.githubusercontent.com/vielhuber/osmhelper/refs/heads/master/convert.sh
chmod +x convert.sh

Osmhelperの使用

必要なツールをインストールしたら、osmhelperを使用してベクタータイルを生成し、ホスティング用に準備することができます。:

./convert.sh \
    --url https://download.geofabrik.de/europe/germany-latest.osm.pbf \
    --lat-min 47.27 \
    --lon-min 8.97 \
    --lat-max 50.57 \
    --lon-max 13.84 \
    --compress

このプロセスにより、動的マップ サーバーを必要とせずに、カスタマイズされたマップ セクションを効率的に配信できるようになります。 OpenStreetMap データを独自のプロジェクトに統合することは、特にホスティングと展開に関しては複雑になる可能性があります。 Google マップはマッピング ソリューションを独占しているため、多くの開発者が代替手段を探しています。 osmhelper を使用すると、独自の OpenStreetMap データのホスティングを簡単に開始できます。これにより、マップを完全に制御できるようになり、API 制限がなくなり、独自のデータ レイヤーを追加できるようになります。

ほとんどの人は、Google マップがデジタル マップの標準的なソリューションであることを知っています。しかし、OpenStreetMap が商業上の制限や隠れたコストのない優れた代替手段であることを知っている人はほとんどいません。 Google マップは API 使用料を請求し、ユーザー データを収集しますが、OSM は無料でオープンであり、世界中のコミュニティによってサポートされています。 OSM は地図の世界の Wikipedia です。誰でも貢献でき、道路、ハイキング コース、POI (興味のある地点) を追加して、無料の世界地図を改善できます。

バック