当前位置: 首页 > 知识库问答 >
问题:

是否将LAT/LON转换为像素坐标?

暴向笛
2023-03-14

我正在尝试将lat/lon对转换为像素坐标。我找到了这个墨卡托投影,但我不懂代码。因子x_adj,y_adj变量是多少?当我运行没有这些常数的代码时,我的lat/lon对不在我的地图上,x和y像素坐标也不是我想要的。

function get_xy(lat, lng)
{
var mapWidth=2058;
var mapHeight=1746;
var factor=.404;
var x_adj=-391;
var y_adj=37;
var x = (mapWidth*(180+lng)/360)%mapWidth+(mapWidth/2);
var latRad = lat*Math.PI/180;
var mercN = Math.log(Math.tan((Math.PI/4)+(latRad/2)));
var y = (mapHeight/2)-(mapWidth*mercN/(2*Math.PI));
return { x: x*factor+x_adj,y: y*factor+y_adj}
}

来源:http://webdesignerwall.com/tutorials/interactive-world-javascript-map/comment-page-1?replytocom=103225

[2]隐蔽纬度/经度点指向墨卡托投影上的像素(x,y)

共有1个答案

濮阳奇逸
2023-03-14

选择这些变量是为了将计算出的坐标与地图的背景图像相匹配。如果地图的投影参数已知,就可以计算它们。但我相信更有可能的是,它们是通过反复试验获得的。

如果您想要一个更通用的方法来描述给定的(不是横向的)墨卡托地图所显示的世界的剖面,您可以使用以下代码:

// This map would show Germany:
$south = deg2rad(47.2);
$north = deg2rad(55.2);
$west = deg2rad(5.8);
$east = deg2rad(15.2);

// This also controls the aspect ratio of the projection
$width = 1000;
$height = 1500;

// Formula for mercator projection y coordinate:
function mercY($lat) { return log(tan($lat/2 + M_PI/4)); }

// Some constants to relate chosen area to screen coordinates
$ymin = mercY($south);
$ymax = mercY($north);
$xFactor = $width/($east - $west);
$yFactor = $height/($ymax - $ymin);

function mapProject($lat, $lon) { // both in radians, use deg2rad if neccessary
  global $xFactor, $yFactor, $west, $ymax;
  $x = $lon;
  $y = mercY($lat);
  $x = ($x - $west)*$xFactor;
  $y = ($ymax - $y)*$yFactor; // y points south
  return array($x, $y);
}

该代码的演示运行可在http://ideone.com/05ohg6上获得。

 类似资料:
  • 我有一个由世界各地的城市组成的lat/lon值的坐标列表。我已经拼凑了一张美国的SVG地图,我想把世界上的主要城市作为别针显示在SVG地图的顶部。到目前为止,我已经弄清楚了,我所显示的地图投影是美国的墨卡托投影,那么下一步是,我如何获得每个城市地图的x/y坐标?一旦我从lat/lon得到墨卡托投影,那么如何将它转换为x/y值,然后根据地图的大小转换为相对x/y值呢?

  • 我正在使用PDFBox的在Java中显示PDF页面。我正试图基于页面中的(即AcroForm字段)在PDF页面的图像上创建可点击的区域。问题是PDF似乎使用了一个完全不同的坐标系: 收益率 如果我要估计图像上字段矩形的实际尺寸,它将是40,40,50,10(x,y,宽度,高度)。这两者之间没有明显的相关性,我似乎找不到任何关于这一点的信息与谷歌。 如何确定PDPage的cosobects的像素位置

  • 问题内容: 我正在尝试将经纬度对转换为像素坐标。我发现了这种墨卡托投影,但我不理解代码。x_adj,y_adj变量是什么因素?当我在没有这些常量的情况下运行代码时,我的经/纬对就不在地图上,并且x和y像素坐标也不是我想要的。 问题答案: 这些变量从何而来 选择这些变量以使计算出的坐标与地图的背景图像匹配。如果知道地图的投影参数,则可以计算它们。但是我相信,它们很可能是通过反复试验而获得的。 如何计

  • 我有一个简单的<code>csv<code>文件,它有4个字段,serial_num、post_code、lat、lon,例如: 我需要批量插入到< code>elasticsearch中。lat lon字段需要在单个geo_point字段中定义,因此我创建了如下映射: > 索引为串行数据 类型为widget }} 我试图使用来插入数据,因为我认为我有一个定义的映射。如果我将lat定义为双精度或l

  • 我有一张以色列地图。 我需要创建一个获得两个双参数(经度和纬度)的函数,该函数应该在地图图像中的那个区域上画一个小圆圈。 我有以下关于地图的信息: null 截图: https://gyazo.com/5a19dece37ebace496c6b8d68eb9ec3c

  • 我有很大的NetCDF文件(~23GB),我从这些文件中提取点数据,并通过xarray加载到numpy数组中。在一个循环中,这个过程运行得很完美——但是当我尝试用一个更小的单个文件(3.8GB)运行时,代码永远不会运行完。 我不想问这个关于堆栈的问题,因为它是特定于数据的,所以示例代码并没有真正的帮助。然而,xarray中的文件有一个结构“Time,stid”-stid表示站点ID,这个维度只是命