使用googlemaps在Python中进行地理编码

2024-10-02 14:25:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚写的这些代码有几个问题。代码是以下:在

from googlemaps import GoogleMaps
import urllib, json
import csv

def geocode(addr):
url = "http://maps.googleapis.com/maps/api/geocode/json?address=%s&sensor=false" %    (urllib.quote(addr.replace(' ', '+')))
data = urllib.urlopen(url).read()
info = json.loads(data).get("results")[0].get("geometry").get("location")

return info

with open('addtest.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
    row_count = sum(1 for row in reader)
    for i in range(0, row_count):
        r = geocode(row[i])
        print ("%s %s" % (r['lat'], r['lng']))
        csv_out = open('addtest_c.csv', 'wb')
        mywriter = csv.writer(csv_out)
        mywriter.writerows("%s %s" % (r['lat'], r['lng']))

我要做的是获取地址(一行一行),对它们进行地理编码,然后在另一个csv文件中写入坐标。如果找不到该位置的坐标,则脚本将改为在输出csv文件中写入“not found”。在

我尝试了上面的脚本,但是输出变成这:在

^{pr2}$

我的测试文件中有12行(名为添加测试.csv),示例以下:在

Kg Sg Nibong,Lubuk,Semerah,Parit Sulong,Batu Pahat,Johor
Kg Parit Bentong,Spg Kiri,Sri Medan,Parit Sulong,Batu Pahat,Johor
Ldg B-1, Yong Peng,Tg Semberong,Yong Peng,Ayer Hitam,Batu Pahat,Johor
Kg Sri Belahan,Sg Kluang,Rengit,Batu Pahat,Batu Pahat,Johor
Parit Besar,Bagan,Semerah,Parit Sulong,Batu Pahat,Johor
Spg Tiga Bagan,Bagan,Semerah,Parit Sulong,Batu Pahat,Johor
Parit Besar,Bagan,Semerah,Parit Sulong,Batu Pahat,Johor
Parit Selulon,Linau,Parit Yaani,Sri Gading,Batu Pahat,Johor
Parit Khalil,Sri Gading,Semarang,Ayer Hitam,Batu Pahat,Johor
Kg Parit Dalam,Sri Medan,Sri Medan,Parit Sulong,Batu Pahat,Johor
Kg Parit Jatuh,Tg Semberong,Yong Peng,Ayer Hitam,Batu Pahat,Johor
Parit Orang Kaya,Bagan,Semerah,Parit Sulong,Batu Pahat,Johor

任何帮助都将不胜感激。如果你需要更多的信息,请评论。我在Windows上使用python2.7.8。在


Tags: csvimportjsonurllibreaderrowkgsri