您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python中使用Bing或Google API获取位置坐标

在Python中使用Bing或Google API获取位置坐标

您确实有两个问题:

我可以帮助解决第二个问题。(但请参阅下面的编辑以获取有关第一个问题的帮助。)

使用旧的Google Maps API(仍在运行),您可以将地理编码缩减为一行(丑陋的一行):

def geocode(address):
    return tuple([float(s) for s in list(urllib.urlopen('http://maps.google.com/maps/geo?' + urllib.urlencode({'output': 'csv','q': address})))[0].split(',')[2:]])

查看Google Maps API地理编码文档

这是可读的7行版本以及一些包装器代码(从命令行调用时,请记住将地址括在引号中):

import sys
import urllib

googleGeocodeUrl = 'http://maps.google.com/maps/geo?'

def geocode(address):
    parms = {
        'output': 'csv',
        'q': address}

    url = googleGeocodeUrl + urllib.urlencode(parms)
    resp = urllib.urlopen(url)
    resplist = list(resp)
    line = resplist[0]
    status, accuracy, latitude, longitude = line.split(',')
    return latitude, longitude

def main():
    if 1 < len(sys.argv):
        address = sys.argv[1]
    else:
        address = '1600 Amphitheatre Parkway, Mountain View, CA 94043, USA'

    coordinates = geocode(address)
    print coordinates

if __name__ ==  '__main__':
    main()

解析CSV格式很简单,但是XML格式具有更好的错误报告功能

我望着nltk。这并非易事,但我可以推荐自然语言工具包文档CH 7-从文本中提取信息,特别是7.5 Named Entity Recognition。在本节的最后,他们指出:

NLTK提供了一个已经过训练的识别器,可以识别通过函数nltk.ne_chunk()访问的命名实体。如果我们设置参数binary = True,那么命名实体将被标记为NE;否则,分类添加类别标签,例如PERSON,ORGANIZATION和GPE。

您要指定True,但可能需要类别标签,因此:

chunked_sentences = nltk.batch_ne_chunk(tagged_sentences)

这提供了类别标签(命名实体类型),这似乎很有希望。但是在对文本和带有位置的几个简单短语进行尝试之后,很显然需要更多规则。阅读文档以获取更多信息。

python 2022/1/1 18:41:52 有284人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶