ティソーの指標図 デモ
📚 ティソーの指標図とは
Tissot's Indicatrix(ティソーの指標図)は、地図投影による歪みを可視化するための手法です。
地球上の同じサイズの円を様々な場所に配置し、投影によってどのように変形されるかを示します。
- Mercator投影: 緯度が高くなるほど円が大きくなる
- Equal Area投影: 円の面積が保たれる
- Orthographic投影: 地球の端で楕円化が進む
地図表示
実装サンプル
Tissot's Indicatrixの実装例 (d3.geoCircle)
// Tissot円生成関数 (d3.geoCircleでkm単位の半径を扱う)
function generateTissotCircles(radiusInKm, gridSpacing) {
const features = [];
const earthCircumference = 6371 * Math.PI * 2;
const radiusInDegrees = (radiusInKm / earthCircumference) * 360;
const circle = d3.geoCircle().radius(radiusInDegrees).precision(10);
for (let lat = -80; lat <= 80; lat += gridSpacing) {
for (let lon = -180; lon < 180; lon += gridSpacing) {
const polygon = circle.center([lon, lat])();
features.push({
type: 'Feature',
properties: { lat, lon, radius: radiusInKm },
geometry: polygon
});
}
}
return { type: "FeatureCollection", features: features };
}
// Tissot円を生成
const tissotCircles = generateTissotCircles(300, 30); // 半径300km, 30度間隔
// 地図を作成
const map = new Thematika.Map({
container: '#map',
width: 800,
height: 600,
projection: d3.geoMercator()
});
// Tissot円レイヤーを追加
const tissotLayer = new Thematika.GeojsonLayer({
data: tissotCircles,
attr: {
"fill": 'rgba(239, 68, 68, 0.3)',
"stroke": '#dc2626',
"stroke-width": 1.5,
"opacity": 0.8
}
});
map.addLayer('tissot', tissotLayer);