はじめに
前回の投稿では、OpenLayersを使って平面直角座標系で表示する方法を説明したが、今回は、QGISで平面直角座標系でタイル画像を作成し、OpenLayersで表示してみる。
作業手順は以下の通り
・平面直角座標系のshpを作成
・QGISのQMetaTilesプラグインでタイル画像の作成
・OpenLayersでタイルレイヤの設定
QGISでタイル画像の作成
平面直角座標系でのタイル画像の作成方法をネットで探したところ、QMetaTilesというプラグインがあったので試してみた。
QGISのプラグインの管理画面からQMetaTilesをインストールする。
QMetaTilesを起動し、以下の設定を行う。
・Output…タイル画像の出力フォルダを選択
・Layer extent…タイル画像を生成するエリアの図形
・Zoom…タイル画像を生成するレベルの設定
・Tile width…タイル画像サイズ
今回は、高解像度印刷を可能にするため、タイル画像サイズを512にした(通常は256)512にする場合は、OpenLayersにも変更が必要になる。
OpenLayersでタイルレイヤの設定
OpenLayersでは、前回のproj4.jsの設定を追加し、TileレイヤのXYZソースにQMetaTilesで生成したURLを設定する。タイル画像は自動で生成され、パスなどの変更も一切必要なく、非常に便利である。
次に、TileレイヤのXYZソースのtilePixelRatio値を2に設定する。tilePixelRatioはタイルサービスで使用されるピクセル比で、デフォルトでは1が設定されている。タイル画像サイズが256の場合は1を、今回のようなタイル画像サイズが512(高解像対応)の場合は2を設定する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
var layer = new ol.layer.Tile({ name: 'l_douro', type: 'base', source: new ol.source.XYZ({ url: '../../Content/data/tilling/l_douro_512/{z}/{x}/{y}.png', crossOrigin: 'anonymous', tilePixelRatio: 2, imageSmoothing: true, }) }); var map = new ol.Map({ layers: [layer], target: 'map', controls: ol.control.defaults({ attributionOptions: { collapsible: false } }), view: new ol.View({ projection: "EPSG:2447", center: [54960,-143068], zoom: 18 }) }); |
まとめ
QGISのQMetaTilesプラグインで平面直角座標系のタイル画像が簡単に作成できることが分かった。これまでは、背景画像に、OSM(オープンストリートマップ)や地理院タイルしか選択肢がなかったが、平面直角座標系が使えることで、自治体の保有している道路や下水道などのインフラ情報がより正確に表現できることが可能になった。