現在のズームレベルの確認

2,125 views
Skip to first unread message

フリード・ティンクス

unread,
Apr 27, 2020, 1:03:28 AM4/27/20
to QGIS初心者質問グループ
フリードです。
お疲れ様です。
QGISで現在のズームレベル(ズーム14や15など)を簡単に確認する方法はありますでしょうか?
キャンパスの下のほうに座標と縮尺は記載されているので、そのように簡単に確認する方法はないものでしょうか?

キタ

unread,
Apr 27, 2020, 7:48:20 AM4/27/20
to QGIS初心者質問グループ
「Zoomlevel」プラグインをインストールすると、画面下にズームレベルが表示されます。
ただし、何故か数字に小数点がつきます。レベル8だと「7.39」などと表示されます。切り上げると実際のズームレベルになるようです。
地理院地図などで確認するといいです。地理院の標準地図ではレベル8、レベル12、レベル15で地図の表現が変わります。

キタ

sakuya_izayoi

unread,
Apr 29, 2020, 9:54:08 PM4/29/20
to QGIS初心者質問グループ
キタ さま
こちらizayoiです。
プラグインのZoomlevelですが、キャンパス上の縮尺に対してズームレベルを小数点まで計算してくれているようですね。
の時は
ですし、
の時は
となります。

つまり、倍率によって10レベルから11レベルまでの間を内挿補間してくれている感じです。
(タイルとしては11レベルになるんので、小数は意味なくなってしまいますが。)

まとめてみると、このような感じになります。
(もしかしたらQGISの仕様として座標系によって変わってしまう可能性もありますが、JGD2011では下記の倍率で平面直角系も緯度経度でも同じとなった)
キタさまが書いてくださっているように、地理院地図の表現変化点である、8レベル、12レベルと15レベルあたりの縮尺を覚えておくと、ズームレベルはすんなりわかりますので便利そうです。

ズームレベル.xlsx

フリード・ティンクス

unread,
Apr 29, 2020, 10:58:29 PM4/29/20
to QGIS初心者質問グループ
きた さん
izayoiさん
お疲れ様です。

情報ありがとうございます。インストールしてみます。

ありた

unread,
Apr 30, 2020, 10:06:52 AM4/30/20
to QGIS初心者質問グループ
こんにちは

Zoom Level プラグインを見てみると ZL = 29.1402 - log2(scale) で計算していますね。
小数点以下2桁程度であれば十分に正確であるとコメントにあります。
https://github.com/kgjenkins/qgis-zoom-level/blob/master/zoom_level/zoom_level.py#L48



式の根拠は書かれていませんでしたので、ちょっと考えてみました。

レイアウトの印刷や画像のエクスポートで DPI を設定すると読み込まれるタイルのレベルが
変化しますので、 DPI が何かしら関連してると思われます。
そこで DPI が 96 dpi のとき 96 dpi = 96 dots/inch = 3.77952 dots/mm = 3779.52 dots/m と
換算できますので、 1 m あたりのドット数は 3779.52 dots ということがわかります。

次にタイル画像は 256 px 四方の画像ですので、 256 px / 3779.52 dots/m = 0.067733 m より
DPI が 96 dpi の場合、画像の大きさは 0.067733 m 四方に相当します。
(ここではピクセル=ドットとして考えることとします。)

ここで、たとえば ZL = 10 の場合、1枚のタイル画像がカバーするエリアは EPSG:3857 での
座標値において 2 * pi * 6378137 m / (2^10) = 39135.75848 m となりますので、タイル画像を
拡大縮小なく(256 px のまま)表示するには、 GIS として必要なスケールは
39135.75848 m / 0.067733 m = 577791.70987 より 1 : 577791.70987 となります。

変数を使ってスケールとズームレベルを式として整理すると以下のようになります。
ZL = log2(2 * pi * 6378137 * DPI * 1000 / 25.4) - log2(256) - log2(scale)

ここで DPI が 96 dpi のときは、 ZL = 29.14018998 - log2(scale) となります。
これで精度は異なりますが、プラグインの式と一致することがわかりました。

ありた

unread,
May 2, 2020, 3:02:03 AM5/2/20
to QGIS初心者質問グループ
こんにちは

表示するズームレベル(小数点を含む)と、実際に取得した画像のズームレベルは
一致しません(画像を拡大したり縮小したりして対応)。

そこで、実際に読み込んでいる画像のズームレベルを確認するためのタイル画像を
作成してみました。 XYZ Tiles に以下の URL を登録してみてください。

フリード・ティンクス

unread,
May 3, 2020, 4:34:13 AM5/3/20
to QGIS初心者質問グループ
フリードです。
おつかれさまです。

ありたさん
情報ありがとうございます。
また、ZOOMレベルのtileありがとうございます。
このようなtileはどのように作成すれば良いのでしょうか?方法があれば教えてください。

ありた

unread,
May 3, 2020, 6:06:55 AM5/3/20
to QGIS初心者質問グループ
こんにちは

今回は ImageMagick という画像処理ツールを使って、自動生成しました。
(繰り返しのためだけに Ruby 言語を使っていますが、) convert コマンドを
使って各ズームレベルの画像を生成しています。

また、今回は作成済みの画像を読み込んでいますが、全タイルを生成すると、
処理時間もディスク容量も膨大になるため、 x / y に関わらず同一の画像を
呼び出しています。



ディスク容量を節約するため、必要なタイル画像をサーバ側で動的に生成するという
方法も考えられます。 PHP (+ php-gd )が動作するサーバが必要ですが、
下記にスクリプトを公開しています。

フリード・ティンクス

unread,
May 13, 2020, 11:01:46 PM5/13/20
to QGIS初心者質問グループ
ありた 様
フリードです。お疲れ様です。

出張先で待機でなかなかネット環境のある場所に行けず、返信が遅れてしまい申し訳ありませんでした。
ズームレベルのタイル画像、本日使用させていただこうと思っておりました。

繰り返し何度もすみません。教えてください。
githubというところの紹介いただいたゾームレベルのサイトを見ました。
QGISのXYZタイル部分にしているるアドレスは
と、{z}.png
の部分はズームレベルを表しているんだとわかるのですが、
raw/master/
の部分は何になるのでしょうか?
といいますのも、現在の環境ですと何も表示されなく、接続先のセキュリティの問題か、アドレスが違うのかどちらか迷っております。
(地理院タイルは問題なく表示できます)

https://github.com/tohka/tile_z/{z}.png

かなとも思って実験しても変わらず。

上記の部分でアドレスが違うのかなとか思ったのですが、ほかの方から何もないのでそうではないですよね。

ちょっと細かいところですが、ファイルをオフラインで使えないかと思ってrubyコマンドを読んでいました。
githubにアップロードしていただいた、rubyプログラムをサーバー内で動かすことによってタイルを配置してくれていると思っていたのですが、ruby内にQGISでの表示倍率を取得するコードはないような気もします。このrubyコマンドは
 ImageMagick
というソフトウェア専用に組まれたものでしょうか?

オフラインで作成していただいたファイルをタイル表示する方法はありますでしょうか?

ありた

unread,
May 14, 2020, 9:14:50 AM5/14/20
to QGIS初心者質問グループ
こんにちは

うまく表示されないとのことですが、次の URL だといかがでしょうか。
https://raw.githubusercontent.com/tohka/tile_z/master/{z}.png



XYZ Tiles としては、タイル画像の座標から目的のタイル画像を読み込むものです。
たとえば、タイル座標が 2/3/1 つまり z=2, x=3, y=1 のとき、仮に URL のルールが
https://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png
であれば、
https://cyberjapandata.gsi.go.jp/xyz/pale/2/3/1.png
という URL に存在するタイル画像を取得し、表示しています。


https://github.com/tohka/tile_z/raw/master/{z}.png
の場合であれば、タイル座標が 2/3/1 のとき、 z=2 より
https://github.com/tohka/tile_z/raw/master/2.png
を読み込むことなります。つまり x, y に関わらず、ズームレベルに従って同じ画像を表示しています。
(このようにすることで全画像を用意する必要がなくなります。)
raw/master はそういうディレクトリに画像があるという意味で、それ以上でも以下でもありません。
画像ファイルがある場所を示してやればよいのです。



ローカル(オフライン)で使いたい場合は以下のページの Clone or download から Download ZIP を
選択して画像をダウンロードします。
https://github.com/tohka/tile_z/

たとえば、ダウンロードした zip ファイルを、次の場所に展開した場合
C:\Users\username\Downloads\tile_z-master
次のような URL を指定することで、ローカル(オフライン)で使うことができます。
file:///C:/Users/username/Downloads/tile_z-master/{z}.png



既に画像は生成済みなので、 Ruby や ImageMagick を使って新たに画像生成を行う必要はありませんが、
色や文字の大きさなどを変更したい場合などは ImageMagick を用意し、パスを通す、フルパスを記載する、
エイリアスを設定するなど、 convert コマンドを実行できる環境を用意します。
以下のコマンドを(目的に応じ修正し)、実行すると画像は生成されます。
(以下は ZL=12 の例。テキストを 'ZL=12' とし、 12.png を出力します。)
convert -size 256x256 xc:transparent -stroke "#ff0000" -strokewidth 1 -draw "line 0,0 255,0" -draw "line 255,0 255,255" -draw "line 255,255 0,255" -draw "line 0,255 0,0" -font Tahoma -pointsize 16 -fill "#ff0000" -stroke none -draw "text 4,250 'ZL=12'" 12.png

ズームレベルごとのコマンド実行の繰り返しとして Ruby を使っているだけですので、 Ruby を使う
必要はなく、単に複数回(~20回程度)コマンドを実行しても構いません。

フリード・ティンクス

unread,
May 18, 2020, 3:22:45 AM5/18/20
to QGIS初心者質問グループ
ありた様
こちらフリードです。
お疲れ様です。

色々とありがとうございました。
上手く表示することができました。

raw/master
に関してはそういうものなのですね。自分もgithubに登録すれば、そのようなディレクトリが割り振られるってことなのかなと。
と試しに取得してみたのですが。raw/master の記述は見当たらず。
githubも使い方が分かるようになると、ありた様みたいにタイルを素早く作れるようになれそうで、情報提供できそうですね。
Reply all
Reply to author
Forward
0 new messages