请耐心等待我,因为我对地理编码很陌生,不确定自己有什么需要实现我的目标。
我希望用户选择墨尔本市的郊区。当他们选择郊区时,我想在所选择的一英里范围内显示周围的郊区。所以,我的数据库表将如下所示:
郊区LattLong
FITZROY 37°47'S / 144°58'E
COLLINGWOOD 37°48'S / 144°59'E
ABBOTSFORD 37°48'S / 144°59'E
CLIFTON HILL 37°47'S / 144°59'E
FITZROY NORTH 37°47'S / 144°59'E
CARLTON 37°48'S / 144°58'E
因此,假设用户选择FITZROY作为其郊区。我认为这些是1英里范围内的一些郊区。
我的问题是我不理解LattLong字段中的数据。这是否足以进行我的计算?
是否有一个示例可以告诉我如何从MySQL数据库中选择1英里范围内的郊区?
我不知道从哪里开始谷歌帮助我,所以任何指导将不胜感激。
亲切的问候, 约翰
答案 0 :(得分: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十进制度。所以你需要精确到小数点后第二位,但你在这个相同的小数位上四舍五入。因此,您所需的分辨率是您所拥有数字的准确性的极限。
所以,不幸的是,没有。实际上,您需要至少一个精度的十进制小数才能以一定的合理精度定位一英里内的事物。因此,除了几分钟之外,您还需要经度和纬度。