You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

已知地理边界框与图像尺寸,如何将地图坐标转换为像素并绘制?

地理坐标转图像像素点的计算方法

我来帮你一步步把地理坐标转换成图像上的像素位置,核心是把坐标在边界框里的相对位置映射到图像尺寸上,还要注意图像y轴和地理纬度的方向差异哦~

先明确已知参数

  • 图像对应的地理边界框:
    minX = 26.078158345222278,minY = 44.48150993466972
    maxX = 26.079370252344233,maxY = 44.48398544389815
  • 图像尺寸:宽度155像素,高度299像素
  • 要绘制的目标坐标:(26.07896575, 44.484298499999994)

计算步骤

1. 计算坐标在边界框内的相对比例

因为图像的y轴是从上到下递增的,而地理纬度是数值越大越靠北(对应图像的上方),所以y方向的比例要反过来计算:

  • X方向相对比例(目标X - minX) / (maxX - minX)
  • Y方向相对比例(maxY - 目标Y) / (maxY - minY) (用maxY减目标Y,把地理纬度的方向转换成图像y轴的方向)

2. 代入数值计算

先算X像素:

# 计算分子分母
x_diff = 26.07896575 - 26.078158345222278  # ≈ 0.000807404777722
x_range = 26.079370252344233 - 26.078158345222278  # ≈ 0.001211907121955
x_ratio = x_diff / x_range  # ≈ 0.6662
x_pixel = round(x_ratio * 155)  # ≈ 103

所以X方向的像素位置是103

再算Y像素:

这里要注意,你的目标纬度44.4842985比边界框的maxY44.4839854还要大,说明这个点在图像的范围之外:

# 计算分子分母
y_diff = 44.48398544389815 - 44.484298499999994  # ≈ -0.000313056101844
y_range = 44.48398544389815 - 44.48150993466972  # ≈ 0.00247550922843
y_ratio = y_diff / y_range  # ≈ -0.1265
y_pixel = round(y_ratio * 299)  # ≈ -38

得到的Y像素是负数,说明这个点在图像的顶部之外,正常情况下无法在当前图像上显示出来。

补充说明

如果你的目标坐标确实需要落在图像内,可能需要调整边界框的范围(把maxY设得更大),或者确认坐标是否输入有误哦~

内容的提问来源于stack exchange,提问作者Cristina Nicolae

火山引擎 最新活动