2012-05-14 48 views
1

不幸的是,数学从来不是我的强项,我正在努力使用最佳方法/公式(我将需要交给PHP代码):将地理区域划分为一系列较小的区域(可控大小)并计算给定经纬度的哪个区域

1)。从一个大的区域开始(例如覆盖整个欧洲)

2)。将这个区域分解成一系列较小的块(即将其变成各种网格)

3)。每个网格块的宽度应该大致相当于75km的距离(考虑到地球曲率)。 4)。计算每个网格块的中央纬度/经度点

5)。对于每个网格块的中心点,针对独立的经纬度点(代表感兴趣的地点)的数据库运行搜索,以找出每个网格块最多感兴趣的5个关注点。最远的兴趣点距离电网中心不超过150公里。

一旦完成了上述所有工作,我将最终得到一个网格块数据库及其相应的5个最近感兴趣的地方。

我的希望是,我应该能够采取任何随机纬度/长点并计算(使用有效的数学公式)预先计算的网格块落入其中,从而能够立即返回5个最接近的点而不必进行任何昂贵的计算。

[注:基于高性能马克的有益以下响应编辑为清楚起见]

+0

我想你想根据球面坐标(两个角度的范围)来定义你的正方形,所以它们都是大致相同的大小,并找到球形坐标和经纬度之间转换的方式。谷歌应该能够告诉你如何做到这一点,它可以很容易地告诉哪个点在哪个方块等,并测量距离等。 – Helen

+0

感谢这个海伦。我首先会去探索高性能马克的想法,因为它似乎略微超出我的意思(维基百科对于“球坐标”的条目让我感到困惑......) – corford

回答

1

我认为你最好的选择是要么使用,或跟随的,现有方法的例子,以网格的面积,一个如UTM。既然你承认你的数学很弱,在这个阶段使用可能是更好的方法。

UTM会给你1和2

没有任何事物会给你3个以上的面积一样大欧洲。你将无法定义一个75平方公里的方阵,这个方阵的总和等于一个正方形,但地球在这么大的范围内不够平坦。

UTM为您提供了4

一旦你得到了你的头圆这一切,你不应该有太多的麻烦,5,但后一个问题,当你到达那里,你是有困难的。

编辑

要扩大3点。我建议你找到你感兴趣的区域的中纬度,即北纬中途(在角度测量)北部和南部之间您感兴趣的领域的限制。然后谷歌周围的公式将纬度经度的长度转换为纬度的公里。沿中纬度以75km为间隔的垂直线将成为您网格的基础。这些线将在角度测量中等距分布。

接下来,计算出感兴趣区域北部和南部的垂直线之间的距离(以公里为单位) - 相同的公式。如果线性度量仍然在灵活性的范围内,那么您已完成此步骤。如果他们不是(a)我很惊讶,并且(b)你将不得不解决一些棘手的数学和编程问题。

接下来,再次牢记您的中纬度地区,找出符合纬度75km(纬度)的角度测量值。这会给你2个水平线(即与赤道平行)的网格线。由于纬度75km的弧度测量值远小于纬度变化的线性经度测量值,因此您可能会用相同的角度测量值标记出其他方块。

+0

感谢您的快速响应!除了我的数学能力之外,我也缺乏与地理相关的编程经验。例如,我没有意识到UTM(我现在要读的是这个)。点3(或类似的东西)对我来说很不幸是至关重要的,也就是说我需要能够粗略地控制每个网格正方形的大小(它不必像75km那样固定,但它确实需要适合边界,例如不小于不超过50公里,不超过100公里)。 – corford

+0

为了进一步阐述第3点。是否可能有一个公式或一组公式可用于研究一个球体的截面并将其分解为更小的截面(理想可控尺寸)? – corford

+0

那么,只要你不希望每边都有75公里的正方形,但是如你所示,准备灵活地适应地球是一个球体(近乎足够)的事实,你不应该“没有任何问题。但有一件事是肯定的,你将必须是灵活的,地球表面将保持(近似)球形。 –