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

Posted

技术标签:

【中文标题】使用纬度和经度列从 MySql 表中获取国家/城市明智的数据【英文标题】:Fetch Country/City wise data from MySql table using Latitude and Longitude colomns 【发布时间】:2015-12-05 10:07:42 【问题描述】:

这是我的示例表

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

我必须从上面选择属于特定国家/城市的条目。国家或城市没有单独的列。我对 google 的 Geolocation API 感到困扰。但是对于一张长表,检查每个条目是否属于我的区域是非常缓慢的过程

我需要将所有经纬度详细信息存储在另一个表中吗?哪个是最佳做法?

编辑:就我而言,无法在表格上方存储城市或国家/地区信息。

【问题讨论】:

【参考方案1】:

你为什么要这么做……

有一个免费的 Google Geocoding API 通过 HTTP REST API 提供此服务。请注意,API 的使用量和速率受到限制,但您可以为无限制访问付费。

试试这个链接看看输出的例子(这是在 json,输出也可以在 XML 中)

http://maps.googleapis.com/maps/api/geocode/json?latlng=11.2742848,75.8013801&sensor=true

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

这里是一个例子:http://api.geonames.org/countryCode?lat=49.03&lng=10.2&username=demo

我也找到了一点说明:

任何给定点的iso国家代码。

网络服务类型:REST

网址:ws.geonames.org/countryCode?

参数:lat, lng, type, lang, 半径(沿海地区最近国家的缓冲区,单位为公里)

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

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

请注意,您应该在http://www.geonames.org/login 创建一个用户帐户才能使用该服务。

【讨论】:

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

以上是关于使用纬度和经度列从 MySql 表中获取国家/城市明智的数据的主要内容,如果未能解决你的问题,请参考以下文章

在谷歌地图 api v3 中将地区、城市、州、国家/地区转换为纬度和经度?

从国家、州、城市和每个城市纬度/经度的数据库查询构建 JSON

给定纬度/经度坐标,我们如何找出城市/国家?

如何使用地址和纬度/经度获取世界上所有的公园

如何从R中的州边界获取纬度和经度数据

位置数据,用于我自己的数据库 - mysql