PHP - 将纬度和经度转换为 x 和 y 坐标,而不使用任何库
Posted
技术标签:
【中文标题】PHP - 将纬度和经度转换为 x 和 y 坐标,而不使用任何库【英文标题】:PHP - Convert latitude and longitude to x and y cordinate, without using any library 【发布时间】:2012-02-08 07:06:08 【问题描述】:这个问题已经被问过很多次了,但我想要一个可以在 php 应用程序中使用的答案。
我找到的最接近的答案是这个
int x = (int) ((MAP_WIDTH/360.0) * (180 + lon));
int y = (int) ((MAP_HEIGHT/180.0) * (90 - lat));
我不需要展示地图什么的。我只需要计算一下。
如果我使用上述公式,MAP_WIDTH 和 MAP_HEIGTH 应该是多少?
【问题讨论】:
你想要实现什么?地球没有“自然”x
和 y
坐标。 X 和 Y 通常用于投影地图,但你刚才说你不需要地图...
谁能解释一下标记为负数的原因?
因为我有一个程序使用 x,y 坐标遍历地图,然后告诉附近的城市。
好吧,如果你计算任意投影的x
、y
上的欧几里得距离,你的结果将是不正确的......
感谢@Anony-Mousse 的回答。所以现在我需要使用 lat long 来查找附近的城市。
【参考方案1】:
没有x
和y
这样的地球坐标。最多可以计算x
、y
和z
。请注意,欧几里得距离将穿过地球表面。
很明显,任何基于x-y
的系统都会在极点附近和日期变更线附近产生完全不准确的结果...
保持数据原样 - 以纬度、经度(和高度,如果有的话) - 而不是计算欧几里德距离,而是使用大圆距离。除非你有关于地球实际形状的详细信息,否则用球体进行常见的大圆近似是你能做的最好的。而且实际上很容易使用。
http://en.wikipedia.org/wiki/Great-circle_distance
【讨论】:
以上是关于PHP - 将纬度和经度转换为 x 和 y 坐标,而不使用任何库的主要内容,如果未能解决你的问题,请参考以下文章