Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coordinates 米勒投影到像素_Coordinates_Map Projections - Fatal编程技术网

Coordinates 米勒投影到像素

Coordinates 米勒投影到像素,coordinates,map-projections,Coordinates,Map Projections,我试图用米勒投影把坐标转换成像素。 我的方法如下所示: function millerProjection(lat, lng) { // Create sec() function // function sec(value) { return 1/Math.cos(value); } // Create fucntion to change degree to radian // fun

我试图用米勒投影把坐标转换成像素。 我的方法如下所示:

function millerProjection(lat, lng) {

        // Create sec() function //
        function sec(value) {
            return 1/Math.cos(value);
        }

        // Create fucntion to change degree to radian //
        function toRadian(value) {
            return value * Math.PI / 180;
        }

        lng = toRadian(lng);
        lat = toRadian(lat);

        // Miller Projection
        // var x = lng;
        // var y = 1.25 * Math.log(Math.tan(Math.PI / 4 + 0.4 * (lat)));

        // Mercator Projection
        // var x  = lng;
        // var y = Math.log(Math.tan(lat) + sec(lat));

        var mapSet = {
            leftLong: toRadian(-180),
            rightLong: toRadian(180),
            topLat: toRadian(90),
            bottomLat: toRadian(-90),
            imageWidth: 2057,
            imageHeight: 1512,
        }

        var x = (lng - mapSet.leftLong) * (mapSet.imageWidth / (mapSet.rightLong - mapSet.leftLong));
        var y = (mapSet.topLat - lat) * (mapSet.imageHeight / (mapSet.topLat - mapSet.bottomLat));

        console.log(`Miller Projection X: ${x} -- Y: ${y}`);

        return { x: x,  y: y };

    }
我将此图片用作地图:

显然,如果我使用0,0坐标,它会标记正确的位置。 如果我给它任何其他坐标,它就不工作了。地图是否有问题,或者我使用的逻辑是否有问题?

这:

  var x = (lng - mapSet.leftLong) * (mapSet.imageWidth / (mapSet.rightLong - mapSet.leftLong));
  var y = (mapSet.topLat - lat) * (mapSet.imageHeight / (mapSet.topLat - mapSet.bottomLat));
假设纬度和经度均为线性x和y变换,但这仅适用于经度。您可以在参考的图像中看到纬度之间的不同间距


让我们回到注释掉的投影并使用它,因为它是正确的,但需要缩放和转换:

功能磨机项目(lat、lng){
//Create sec()函数
函数秒(值){
返回1/Math.cos(值);
}
//创建功能以将度更改为弧度
函数toRadian(值){
返回值*Math.PI/180;
}
lng=托拉迪安(lng);
拉特=托拉迪安(拉特);
//米勒投影
var x=液化天然气;
var y=1.25*Math.log(Math.tan(Math.PI/4+0.4*(lat));
返回[x,y];
}
控制台日志(MillerProject(90180));

控制台日志(MillerProject(-90,-180))安德鲁!非常感谢!!:)