Leafletは地図を表現するためのJavaScriptのライブラリです。これはよく次のコードの様にタイルレイヤーとして様々な世界地図を読み込ませることで動かされます。
Leaflet
var mymap = L.map('id-of-map-div').setView([51.505, -0.09], 13); L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', { attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>', maxZoom: 18, id: 'mapbox.streets', accessToken: 'your.mapbox.access.token' }).addTo(mymap);
このLeafletですがmapに登録できるものには任意の画像もあります。次の様にmapのサイズと背景画像設定のコードを入れるだけで地図=単体の画像となり自由に加工できます。
// 画像サイズ兼地図サイズ const height = 354; const width = 663; const bounds = [[0,0], [height,width]]; // leafletに地図として画像を登録 const map = L.map('map', {crs: L.CRS.Simple});// {crs: L.CRS.Simple}で座標系が決まるため忘れるととてもめんどくさい L.imageOverlay('https://i2.wp.com/cpoint-lab.co.jp/wp-content/uploads/2019/03/storm_diagram_00.png?ssl=1', bounds).addTo(map); // 画像をboundsの大きさとして地図に追加 map.fitBounds(bounds); // 描画領域をboundsに設定
この地図は左下を原点、右方向がXの正、上方向がYの正となるXY座標系です。第一象限ですね。これに従って加工すると次のJSFiddleみたいなことができます。