如何利用邮政编码实现邻近搜索?
我必须使用带有澳大利亚邮政编码的邻近搜索。通过一些链接,例如 http://www.randommouse.com/rms/about/product/FNDRY/docs/tutorial/08/how-to-add-google-maps-to-your-review-site- intro.html
如果我没有记错的话,我发现我必须用纬度和经度来管理邮政编码。但我找不到如何实现这一点。任何人都可以建议我如何使用 php 执行此操作或提供一些链接,以便我可以看到更多相关内容。
提前致谢。
已编辑:
我已编辑了我的问题:
我可以使用 google api 来获取给定范围内的邮政编码吗?我找到了 drupal 的链接。那么我可以使用 google api 来获取邮政编码吗?随后的链接是 http ://svendecabooter.be/blog/implementing-location-proximity-search-for-belgium-with-drupal-and-google-maps
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要找到一个包含每个邮政编码的经度和纬度的数据库。获得经度和纬度后,您将使用半正弦公式 (http://www.codecodex.com /wiki/Calculate_Distance_Between_Two_Points_on_a_Globe)来计算点之间的距离。要进行邻近搜索,您必须计算从起点到数据集中所有点的距离。您还可以考虑使用边界框,然后搜索该边界框内的点。像 PostGIS 这样的地理空间数据库内置了可以帮助解决所有这些问题的功能。
You'll need to find a database that has the longitude and latitude of each postal code. Once you have the longitude and latitude you'll use the havesine formula (http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_Points_on_a_Globe) to calculate the distance between points. To do a proximity search you'll have to calculate the distance from your starting point to all the points in your dataset. You may also consider using a bounding box and then searching for points inside that bounding box. A geo spatial database like PostGIS has built in functions that can help with all this.
您可能还想看看 GeoHash 作为加速搜索长/纬度的方法在一个区域内(邻近)。有各种语言的“插件”,例如。 Ruby 中的 GeoHash 非常易于使用。
You might also want to look at GeoHash as a way to speed up searching for a long/lat within an area (proximity). There are 'plugins' in various languages eg. GeoHash in Ruby is very easy to use.
MySQL 还提供了执行简单地理距离计算的工具,这可能会有所帮助。
https://www.percona.com/blog/2013/10/21/using-the-new-spatial-functions-in-mysql-5-6-for-geo-enabled-applications/
获取最新的澳大利亚邮政编码数据可能是一个问题,因为 AusPost 不再免费提供最新列表。如果在 Google 地图中操作,则可以使用通过查询 Google 获取的数据来填充表。
我有一个带有邮政编码和纬度/经纬度的郊区列表,您可以在 下载http://www.computerpros.com.au/data/australian_suburbs.sql
这是一个具有以下表结构的 Mysql 转储:
MySQL also provides facility for performing simple Geo distance calculations which may help.
https://www.percona.com/blog/2013/10/21/using-the-new-spatial-functions-in-mysql-5-6-for-geo-enabled-applications/
Obtaining up-to-date Australian postcode data can be a problem since AusPost no longer provide the up-to-date list for free. If operating within Google Mapping then it should be OK to populate a table with data taken by querying the Google.
I have a list of suburbs with postcodes and lat/lngs that I use internally that you can download at http://www.computerpros.com.au/data/australian_suburbs.sql
This is a Mysql dump with the following table structure: