最初に論より証拠、実例を示します。下の図は中山間集落の地番参考図です。
これらの図においては、いわゆる「番地」で示される土地区画のポリゴンがその番地をラベルとして表示されているのですが、ラベルが見やすいように、次の点で工夫をしています。
- ラベルをポリゴンの「見た目の中心」に配置
- ラベルをポリゴンの「方向」に合わせて回転
- 縮尺とポリゴンの面積にあわせてフォント・サイズを調整
どれも簡単な計算式で実現できます。
1. ラベルの配置
Q-GIS の場合の設定方法を説明します。
- ラベル配置を「データによる定義」で制御する
- 点(Point)を次のように定義
pole_of_inaccessibility(@geometry, 0.5)
- 整列は、水平方向は
'Center'
、垂直方向は'Half'
- 回転を次のように定義
main_angle(@geometry)-90
- 点(Point)を次のように定義
これだけです。
pole_of_inaccessibility()
は、ポリゴン外縁部から最も遠いポリゴン内部の点を求める関数です。これによって、ポリゴンの「見た目の中心」をかなり高精度に指定することが出来ます。
第二の引数は計算の精度を指定するものですが、0.5 もあれば実用上は十分です。
場合によっては centroid()
というポリゴンの重心を求める関数を使うことを検討しても良いでしょう。ただし、三日月型のポリゴンなどでは、重心がポリゴンの外に出ることがあるので要注意です。
main_angle()
は、ポリゴン全体の傾きを求める関数です。90度を引くことで、ポリゴンの長さ方向に文字が表示されるようにしています。
2. ラベルのフォント・サイズ
ラベルのフォント・サイズは次の計算式によって制御しています。
clamp(最小値, 基準値 * sqrt(基準縮尺 / @map_scale * sqrt($area) / sqrt(基準面積), 最大値)
例えば、
clamp(8, 10 * sqrt(3000 / @map_scale * sqrt($area) / sqrt(1000)), 20)
この場合、縮尺 3000 で面積 1000 ㎡ のポリゴンのラベルが 10 ポイントになります。これを基準として、縮尺が大きく(縮尺の分母が小さく)なればなるほど、また、面積が大きくなればなるほどフォント・サイズが大きくなります。逆に、縮尺が小さくなればなるほど、面積が小さくなればなるほど、フォント・サイズが小さくなります。ただし、sqrt
を使っているため、変化率はゆるやかなものになります。また、clamp
によって、最小サイズを 8 ポイント、最大サイズを 20 ポイントに制限しています。
面積については sqrt
が二重にかかっています。内側の sqrt
は、二次元(面積)の増減率を一次元(長さ)の増減率に置き換えるためであり、外側の sqrt
は、縮尺の増減率とあわせてフォント・サイズの変化をゆるやかにするためです。
基準値となる縮尺と面積は地図の内容によって調整が必要です。
- 基準縮尺 : ラベル表示を開始する最小縮尺
- 基準面積 : 地物の面積の中央値
というあたりを一応の目安にして、表示結果を確認しながら調整するのが良いでしょう。