对于经纬度的操作也许也会在我们日常生活中使用到,这里简单的介绍一下如何使用geopy.geocoders这个库来得到对应地点的经纬度以及根据对应的经纬度得到它的地址的小工具。
from geopy.geocoders import Nominatim
import re
import time这是代码需要导入的三个python包,对应网上的教程install一下即可
geolocator = Nominatim()
首先利用Nominatim得到一个我们的定位器geolocator
假设接下来在txt文件中有这样一些经纬度
B0001 22.947097113.679983 114 6:30:00 67997.3868
B0002 22.577792113.966524 163 6:30:00 37926.5416
B0003 23.192458113.347272 139 6:30:00 27953.0363
B0004 23.255965113.31875 98 6:30:00 25085.6986
B0005 33.65205116.97047 66 6:30:00 20919.0667
B0006 22.262784112.79768 72 6:30:00 18237.6295
B0007 29.560903106.239083 15 6:30:00 15729.3601
B0008 23.143373113.376315 95 6:42:00 14868.4446
B0009 23.28528113.651842 110 6:36:00 13556.1555
B0010 23.099259113.488909 64 6:36:00 13327.9511
B0011 23.192462113.34726 89 6:42:00 11349.0899
B0012 22.548889113.955368 102 6:33:00 10957.5811
B0013 23.178845113.358177 90 6:45:00 10427.7392
B0014 23.054911113.768888 232 6:30:00 10210.6765
B0015 23.053426113.761634 217 6:33:00 10187.7506
如何才能得到对应的address呢
for count in range(0,1877):
f= open('c.txt',encoding='UTF-8')
line = f.readline()
rest = f.read()
f.close()
temp=line.split()
location = geolocator.reverse(str(temp[1])+","+str(temp[2]))
if '深圳' in location.address:
f2 = open('shenzhen.txt','r+')
f2.read()
f2.write(str(line))
f2.close()
elif '佛山' in location.address:
f2 = open('foshan.txt','r+')
f2.read()
f2.write(str(line))
f2.close()
elif '东莞' in location.address:
f2 = open('dongguan.txt','r+')
f2.read()
f2.write(str(line))
f2.close()
elif '广州' in location.address:
f2 = open('guangzhou.txt','r+')
f2.read()
f2.write(str(line))
f2.close()
else:
f2 = open('other.txt','r+')
f2.read()
f2.write(str(line))
f2.close()
f3 = open('count.txt','r+')
f3.read()
f3.write(str(line))
f3.close()
f= open('c.txt','w',encoding='UTF-8')
f.write(rest)
f.close()
time.sleep(1)
先无视一些我自己加入的处理,需要做的仅仅就是一句话,利用geolocator.reverse函数把输入的经纬度得到一个geopy.location.Location的一个object,里面有所有你想要的东西,都在各个attribute里面,具体的大家访问geopy查看object的结构即可。这里我们简简单单的要一个address。自己外加的一些处理简单的说说,就是把txt文件的每一行读入后用split分解成三个小string,后面两个就是我们要的经纬度,按照需要的格式把后面两个用逗号连接起来后作为参数传入reverse函数。然后我做了个分类,看看是这四个城市中哪个城市的就输出到对应的文件里。
所以,既然reserve这么简单,解析对应具体位置的经纬度也一样简单。使用geolocator.geocode传入你所要地名的字符串即可,任何语言应该都可以,比如
Location=geolocator.geocode(”北京天安门”);
然后使用location.latitude和location.longitude就得到经纬度了
that's all
本文介绍了如何使用geopy.geocoders库进行经纬度与具体地址之间的转换。通过创建Nominatim定位器,可以方便地根据经纬度获取地址,或者输入地址获取经纬度。示例中展示了从txt文件读取经纬度并分类到对应城市的过程,以及如何直接通过地名获取经纬度。
3150

被折叠的 条评论
为什么被折叠?



