我需要计算英国邮政编码之间的距离。我不想使用网络 API。是否存在为此的python模块/库?还是我必须使用来自OrdnanceSurvey的数据来整理我自己的一些东西?
谢谢,
我需要计算英国邮政编码之间的距离。我不想使用网络 API。是否存在为此的python模块/库?还是我必须使用来自OrdnanceSurvey的数据来整理我自己的一些东西?
谢谢,
1/您可以使用任何其他地理定位 API,例如谷歌地图,它会根据密码为您提供准确的距离。
2/您可以使用任何具有邮政编码和纬度/经度信息的更新数据库,并使用该信息来计算两点之间的距离。
有用的网址:
i) http://blog.acmultimedia.co.uk/2008/03/uk-post-code-distance-calculator-using-phpmysql/
这个问题现在有点老了,但也许值得指出谷歌和 SatNavs 使用的极坐标(Long/Lat)与 Ordnance Survey 提供的 Eastings & Northings 之间的差异,它显示了给定的邮政编码质心与给定的基准点之间的距离锡利群岛西南的某个地方。
如果您只想计算距离,那么它是使用毕达哥拉斯的单线。EG巨石阵到国会大厦
>>> # Coordinates of Stonehenge and Westminster in E/Northings
... s = (412183, 142346)
... p = (530268, 179545)
... d = ((s[0] - p[0]) ** 2 + (s[1] - p[1]) ** 2) ** 0.5
... print (d)
123805.62517914927
我正在寻找一个库来从极坐标转换为笛卡尔坐标,即使在世界上最肯定不是的完美球体上,这也相对棘手。我目前正在尝试解决这个问题,但大部分都失败了: https ://scipython.com/book/chapter-2-the-core-python-language-i/additional-problems/converting-between-an -os-grid-reference-and-longitudelatitude/
有关使用 python 的postcodes 模块以及google maps distance matrix API的简单代码,请参见下文。
from postcodes import PostCoder
import requests
import json
import pprint
pc = PostCoder()
origin_postcode = str.upper(raw_input("Enter origin PostCode:"))
dest_postcode = str.upper(raw_input("Enter destination PostCode:"))
origin = str(pc.get('%s' % origin_postcode)['geo']['lat'])+','+str(pc.get('%s' % origin_postcode)['geo']['lng'])
dest = str(pc.get('%s' % dest_postcode)['geo']['lat'])+','+str(pc.get('%s' % dest_postcode)['geo']['lng'])
data = requests.get('https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=%s&destinations=%s&key=AIzaSyDfTip2PrdaRkF1muCLP8REAk3FsLjmBrU' % (origin, dest))
new = json.loads(data.text)
miles = str(new['rows'][0]['elements'][0]['distance']['text']).replace('mi','miles')
duration = str((new['rows'][0]['elements'][0]['duration']['text']))
print '\n\nThe distance from %s to %s is %s, taking approximately %s (driving).' % (origin_postcode, dest_postcode, miles, duration)