首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用校准点将地图上的经度和纬度转换为X、Y

使用校准点将地图上的经度和纬度转换为X、Y
EN

Stack Overflow用户
提问于 2009-09-02 18:54:30
回答 8查看 69.8K关注 0票数 32

如果我有一个大小为sizeX,sizeY的jpeg贴图

和地图上的一些校准点(X,Y,Lon,Lat)

在给定经度/纬度对的情况下,计算地图中相应的XY点的算法是什么?

EN

回答 8

Stack Overflow用户

发布于 2010-12-31 03:24:07

这是对我有效的方法,没有太多的废话。

代码语言:javascript
复制
int x =  (int) ((MAP_WIDTH/360.0) * (180 + lon));
int y =  (int) ((MAP_HEIGHT/180.0) * (90 - lat));

最新的经纬度坐标是Android设备给我的。因此,它们应该采用所有Google Earth/Map产品所使用的相同标准。

票数 22
EN

Stack Overflow用户

发布于 2010-05-26 17:00:35

如果使用Equidistant Cylindrical Projection type map,则需要执行以下操作:

  1. 在此处查找您的位置的纬度和经度教程:

将该信息

  • Input到以下公式中:

X=(图像总宽度,单位为px) * (180 +纬度)/ 360

Y=(图像总高度,单位为px) * (90 -经度)/ 180

注意:使用负经度纬度时,请确保添加或减去负数,即+( -92 )或-(-35),这实际上是-92和+35

  1. 您现在可以在图像上绘制X和Y了

有关此公式和映射类型的更多信息,请单击此处:

票数 14
EN

Stack Overflow用户

发布于 2009-09-02 19:08:59

互联网上有大量关于计算两对经纬度之间距离的信息。我们在我们的公共网站上使用这些计算,它们并不容易理解/讨论(所以我不会在这里讨论它们)。也就是说,它们很容易实现。

一旦你有了一个返回距离的函数,你就应该能够根据角之间的距离来计算地图的宽度和高度。

然后,您可以计算点与左上角的水平和垂直距离。

现在你找到了地图宽度的比率是由左侧和你的点之间的距离表示的,将这个比率应用于像素宽度,你就得到了左侧和你的点之间的像素数。对y轴重复此操作。

(从左侧开始的像素)=(总宽度,以像素为单位)*((对左侧和您的点之间的距离进行地理编码)/(对左侧和右侧之间的距离进行地理编码))

(从顶部开始的像素)=(总高度(以像素为单位)*(对顶部和点之间的距离进行地理编码)/(对顶部和底部之间的距离进行地理编码)

编辑:当您进一步研究这一点时,您会注意到,由于您是在球面上近似两点之间的距离并将其映射到平面上,因此某些解决方案会比其他解决方案提供更准确的结果。随着距离的增加,精度会降低。给你的最好的建议是先试一试,看看它是否满足你的需求。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1369512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档