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 应该是多少?

【问题讨论】:

你想要实现什么?地球没有“自然”xy 坐标。 X 和 Y 通常用于投影地图,但你刚才说你不需要地图... 谁能解释一下标记为负数的原因? 因为我有一个程序使用 x,y 坐标遍历地图,然后告诉附近的城市。 好吧,如果你计算任意投影的xy 上的欧几里得距离,你的结果将是不正确的...... 感谢@Anony-Mousse 的回答。所以现在我需要使用 lat long 来查找附近的城市。 【参考方案1】:

没有xy 这样的地球坐标。最多可以计算xyz。请注意,欧几里得距离将穿过地球表面。

很明显,任何基于x-y 的系统都会在极点附近和日期变更线附近产生完全不准确的结果...

保持数据原样 - 以纬度、经度(和高度,如果有的话) - 而不是计算欧几里德距离,而是使用大圆距离。除非你有关于地球实际形状的详细信息,否则用球体进行常见的大圆近似是你能做的最好的。而且实际上很容易使用。

http://en.wikipedia.org/wiki/Great-circle_distance

【讨论】:

以上是关于PHP - 将纬度和经度转换为 x 和 y 坐标,而不使用任何库的主要内容,如果未能解决你的问题,请参考以下文章

将游戏的 x,y 坐标转换为 Google 地球纬度/经度

从纬度,经度转换为x,y

如何在 Java 中将纬度和经度转换为 x,y?

在 SQL Server 中将经纬度转换为 UTM X 和 UTM Y 坐标的函数

经纬度转换成XYZ坐标

散景地图情节。纬度/经度到 x 和 y