proj4 平面直角座標系
- epsg を指定することで proj4.js のスニペットを生成
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>epsg</title> | |
| <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0" /> | |
| <script src="https://code.jquery.com/jquery-3.6.0.slim.min.js"></script> | |
| <style> | |
| #input { | |
| width: 100%; | |
| } | |
| #result { | |
| background: black; | |
| color: white; | |
| padding: 5px; | |
| } | |
| #container { | |
| max-width: 1024px; | |
| margin: auto; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div id="container"> | |
| <form id="form"> | |
| <input type="text" value="2443-2461,6669-6687" id="input" /> | |
| </form> | |
| <pre id="result"></pre> | |
| </div> | |
| <script> | |
| $("#form").submit(function() { | |
| const epsg = []; | |
| $("#input").val().split(",").forEach(x => { | |
| if (x.match(/^([0-9]+)$/)) { | |
| epsg.push(x); | |
| } else if (x.match(/^([0-9]+)-([0-9]+)$/)) { | |
| const a = parseInt(RegExp.$1); | |
| const b = parseInt(RegExp.$2); | |
| for (let i = Math.min(a, b); i <= Math.max(a, b); i++) | |
| epsg.push(i); | |
| } | |
| epsg.sort(); | |
| const promises = epsg.map(key => { | |
| return fetch(`https://epsg.io/${key}.js`).then(a => a.ok ? a.text() : null); | |
| }); | |
| promises.unshift( | |
| fetch("https://raw.githubusercontent.com/maptiler/epsg.io/master/LICENSE") | |
| .then(a => a.text()) | |
| .then(a => `/*!\n${a.split("\n").map(x=>` * ${x}`).join("\n")}\n */`) | |
| ); | |
| Promise.all(promises).then(a => { | |
| $("#result").text(a.filter(x => x !== null).join("\n")); | |
| }); | |
| }); | |
| return false; | |
| }).submit(); | |
| </script> | |
| </body> | |
| </html> |