2

我有一张从我​​的数据库中的数据渲染的图像。我需要使用墨卡托投影方法将此图像转换为扭曲的图像,当我用它包裹一个 3d 球体时,它看起来会很逼真。

有谁知道我需要使用什么公式来制作扭曲的图像?

我正在使用带有 GD 的 PHP。

谢谢。

4

2 回答 2

1

如果您打算使用普通图形技术将其包裹在球体周围,我认为您不会严格使用墨卡托投影,因为这在两极不起作用。

球体的正常 3D 纹理映射只是一个纵横比为 2:1 的位图,其中 X 轴直接映射到[0, 360)经度,Y 轴直接映射到[-90, +90]纬度。

因此,只需从数据库中获取纬度/经度值并将它们线性缩放到像素坐标,例如(假设 [0, 0] 位于左上角, [w, h] 是位图的大小):

x = (longitude + 180) * w
y = (90 - latitude) * h

编辑- 我误读了这个问题,没有意识到你已经有了一张图片。如果 AIUI 原始图像是墨卡托投影中的图像,那么您的问题只是撤消该图像垂直轴的非线性缩放。水平轴可以保持不变,因为墨卡托对经度使用线性刻度。

于 2011-04-03T09:21:29.363 回答
0

如果您的图像是地理参考的,那么也许应该将其移至https://gis.stackexchange.com/

对于这种重投影,您可以查看免费+开源地理空间数据抽象库 GDAL。有一个可用的 PHP 绑定,称为 PHP mapscript。不过,我认为可用的文档很少。

为了使用 PHP 地图脚本,您还必须设置一个 UMN 地图服务器(作为网络服务器的 cgi 脚本运行)并让它进行重新投影。您需要做很多工作来设置和配置它,然后将其推向极限以满足您的需求。

于 2011-04-03T09:13:29.490 回答