playwrightを利用して、OSMや地理院のタイルを平面直角座標系でタイリングする

はじめに

庁内などで OpenStreetMap(OSM)や 国土地理院 のタイル画像を背景として利用したい場合があります。しかし、これらのタイルは座標系が Web Mercator(EPSG:3857)であるため、平面直角座標系に変換しないと正しく表示されません。
※そのまま利用すると、最大700mのズレがありました。

そこで、QGIS の QMetaTiles プラグインを利用しましたが、Web Mercator(EPSG:3857)専用のプラグインであるため、平面直角座標系でエクスポートできないことが分かりました。さらに、「Generate XYZ Tiles」も期待どおりに動作しなかったため、自作することにしました。

以前、OpenLayers を利用して、平面直角座標系のマップ上にOSMや国土地理院の背景を表示した実績があり、正しく表示されることを確認していました。そのため、ブラウザを利用してタイル画像を生成する方法を採用することにしました。

処理概要は以下の通り

  • IISを用意し、OpenLayersが稼働する環境を準備する
  • 事前に座標系、タイリング対象の矩形範囲、ズームレベルを設定
  • ズームレベルおよびX・Y座標を順に変更しながらブラウザにアクセスし、表示結果を画像として保存
  • ブラウザ操作には Playwright を利用。Playwright は、ブラウザを自動操作するための C# ライブラリ

Program.cs

Playwright では、NetworkIdle = ネットワーク通信が落ち着くまで待ってくれます。画面で確認しましたが、タイリング画像がロードされるまで、保存処理が走らないので、画像の取りこぼしがありませんでした。

Tilling.js

引数の矩形に地図を移動させます。

OSMの表示イメージ

境界がほぼ一致しています。

地理院地図(標準地図)の表示イメージ

地理院地図(標準地図)でも境界がほぼ一致しています。

拡大しても、ズレがほぼないです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする