使用纬度和经度列从MySql表中获取国家/城市数据

使用纬度和经度列从MySql表中获取国家/城市数据,mysql,geolocation,latitude-longitude,Mysql,Geolocation,Latitude Longitude,这是我的样品台 table name: activitylog id | activity | lat | long ---+--------------+-------------+------------- 1 | activity1 | 11.2742848 | 75.8013801 2 | activity2 | 11.2742848 | 75.8013801 3 | activity3 | 11.2742848 | 75

这是我的样品台

table name: activitylog

id |    activity  |  lat        |   long
---+--------------+-------------+-------------
 1 |  activity1   | 11.2742848  |  75.8013801
 2 |  activity2   | 11.2742848  |  75.8013801
 3 |  activity3   | 11.2742848  |  75.8013801
 4 |  activity4   | 11.2742848  |  75.8013801
我必须从上面选择属于特定国家/城市的条目。国家或城市没有单独的栏目。我很担心谷歌的地理定位API。但对于一个长表,检查每个条目是否属于我的区域是一个非常缓慢的过程

我是否需要将所有Lat和Long详细信息存储在另一个表中?哪一种是最佳实践


编辑:在我的情况下,无法将城市或国家信息存储在表格上方。

为什么要这样做

有一个免费的谷歌地理编码API通过HTTP REST API提供这项服务。注意,API的使用和速率是有限的,但您可以为无限访问付费

尝试此链接以查看输出示例(这是json格式的,输出也可以是XML格式的)

有一个web服务返回国家代码,并将lat和long作为参数

以下是一个例子:

我还发现了一些描述:

任何给定点的iso国家代码

  • Web服务类型:REST

  • Url:ws.geonames.org/countryCode

  • 参数:lat、lng、类型、lang、, 半径(沿海地区最近国家的缓冲区,单位为km)

  • 结果: 返回给定纬度/经度的iso国家代码

和 参数type=xml此服务返回包含iso的xml文档 国家代码和国家名称。可以使用可选参数lang 指定国家名称应使用的语言。JSON输出为 使用type=JSON生成


请注意,您应该在创建一个用户帐户以使用该服务。

如何将此API应用于长表?我认为如果我对每个条目都使用这个API需要很长时间。我只想选择属于特定城市或国家的条目。在表中存储活动日志时,为什么不将此信息也存储在表中。通过这种方式,您可以直接获取数据。虽然有免费的DB availbale包含lat,long和city mapping..但我不建议使用它,因为在我的情况下,更改表是不可能的。因此,我正在寻找另一种方式。