0

请耐心等待,因为我对地理编码非常陌生,并且不确定我是否拥有实现目标所需的东西。

我希望用户选择墨尔本市的郊区。当他们选择郊区时,我想显示所选郊区一英里内的周边郊区。因此,我的数据库表将如下所示:

郊区 LattLong
FITZROY 37° 47' S / 144° 58' E

科林伍德 37° 48' S / 144° 59' E

阿伯茨福德 37° 48' S / 144° 59' E

克利夫顿山 37° 47' S / 144° 59' E

菲茨罗伊北 37° 47' S / 144° 59' E

卡尔顿 37° 48' S / 144° 58' E

因此,假设用户选择 FITZROY 作为其郊区。这些是我认为1英里半径范围内的一些郊区。

我的问题是我不了解 LattLong 字段中的数据。这是足够的数据来进行我的计算吗?

有没有一个例子可以告诉我如何从 MySQL 数据库中选择 1 英里内的郊区?

我不知道从哪里开始在谷歌上帮助我解决这个问题,所以任何指导都将不胜感激。

亲切的问候,约翰

4

1 回答 1

0

如果将纬度和经度转换为十进制度,则使用数据库中的地理数据和使用数学公式会容易得多。这会给你像“80.012345”这样的数字。然后您可以根据两个数字的简单差异编写查询,例如编写一个查询,其中两个经纬度的十进制度数之差小于 0.02 等等。

谷歌十进制度以了解更多信息并获得转换技术。这是一个简单的公式,您还必须使用 E、W.N 和 S 将十进制数指定为正数或负数。

在您的情况下,您只有几分钟的数据。例如,转换你所拥有的,144° 58' E = 144 + 58/60。58/60 = 0.9666666666... 但是,您只有 2 个有效数字 - 58 是两个 sig 数字,60 是两个 sig 数字。所以结果是 144.97 现在,简而言之,一英里大约是赤道的 0.02 十进制度。所以你需要精确到小数点后第二位,但你在同一个小数位上四舍五入。因此,您所需的分辨率是您所拥有数字准确性的极限。

所以,不幸的是,没有。实际上,您至少需要小数点的精度才能以任何合理的精度定位一英里内的事物。因此,除了分钟之外,您还需要以秒为单位的经度和纬度。

于 2011-05-21T20:11:35.443 回答