我的图像是根据我的数据库中的数据呈现的。 我需要使用Mercator Projection方法将此图像转换为扭曲图像,当我用它包裹3d球体时,它看起来很逼真。
有谁知道我需要用什么公式来制作扭曲的图像?
我在PHP中使用PHP。
感谢。
答案 0 :(得分:1)
如果你打算使用普通的图形技术将它包裹在一个球体周围,我认为你并不想使用墨卡托投影,因为它在极点不起作用。
球体的普通3D纹理映射只是一个2:1宽高比位图,其中X轴直接映射到经度[0, 360)
,Y轴直接映射到[-90, +90]
纬度。< / p>
所以只需从数据库中取出lat / long值并将它们线性缩放到像素坐标,例如(假设[0,0]位于左上角,[w,h]是位图的大小):
x = (longitude + 180) * w
y = (90 - latitude) * h
编辑 - 我误解了这个问题并没有意识到你已经已经拥有了一张图片。如果AIUI原始图像是墨卡托投影中的那个,那么你的问题就是撤消该图像垂直轴的非线性缩放。水平轴可以保持不变,因为墨卡托使用线性标度表示经度。
答案 1 :(得分:0)
如果您的图片具有地理位置,那么可能应该将其移至https://gis.stackexchange.com/。
你可以看看这种重投影的免费+开源地理空间数据抽象库GDAL。有一个PHP绑定可用,称为PHP mapscript。我认为现有的文件很少。
为了使用PHP mapscript,您还必须设置UMN地图服务器(作为网络服务器的cgi脚本运行)并让它进行重新投影。你需要做很多工作来设置和配置它,然后将它推到极限以满足你的需求。