python 根据地址求经纬度 谷歌_Python 根据地址获取经纬度及求距离

方法一:

使用Geopy包 : https://github.com/geopy/geopy (仅能精确到城镇,具体街道无结果返回)

from geopy.geocoders importNominatim#使用geopy查询

defgeocodeN(address):

gps=Nominatim()

location=gps.geocode(address)return location.longitude,location.latitude

方法二:

使用高德地图或百度地图API,key可去官网申请替换

importrequests#使用高德API

defgeocodeG(address):

par= {'address': address, 'key': 'cb649a25c1f81c1451adbeca73623251'}

base= 'http://restapi.amap.com/v3/geocode/geo'response=requests.get(base, par)

answer=response.json()

GPS=answer['geocodes'][0]['location'].split(",")return GPS[0],GPS[1]#使用百度API

defgeocodeB(address):

base= url = "http://api.map.baidu.com/geocoder?address=" + address + "&output=json&key=f247cdb592eb43ebac6ccd27f796e2d2"response=requests.get(base)

answer=response.json()return answer['result']['location']['lng'],answer['result']['location']['lat']

计算两个经纬度间距离:

from math importradians, cos, sin, asin, sqrt#计算两点间距离-m

defgeodistance(lng1,lat1,lng2,lat2):

lng1, lat1, lng2, lat2=map(radians, [lng1, lat1, lng2, lat2])

dlon=lng2-lng1

dlat=lat2-lat1

a=sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2dis=2*asin(sqrt(a))*6371*1000

return dis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python的geopy库来根据地址查找经纬度。以下是实现步骤: 1. 安装geopy库。可以使用pip命令在命令行中安装:`pip install geopy` 2. 读取Excel文件中的地址信息。可以使用pandas库读取Excel文件中的数据,并将地址信息保存在一个列表中。 3. 使用geopy库中的geocoders对象来查找地址经纬度。geopy库支持多种geocoder,包括谷歌地图、百度地图、OpenStreetMap等。在本例中,使用了Nominatim geocoder,它是一个免费的开源geocoder。 4. 将获取到的经纬度信息保存到Excel文件中。 下面是完整的代码实现: ```python import pandas as pd from geopy.geocoders import Nominatim # 读取Excel文件中的地址信息 df = pd.read_excel('address.xlsx') address_list = df['Address'].tolist() # 初始化Nominatim geocoder geolocator = Nominatim(user_agent='my-application') # 遍历地址列表,查找经纬度 lat_list = [] lon_list = [] for address in address_list: location = geolocator.geocode(address) if location is not None: lat_list.append(location.latitude) lon_list.append(location.longitude) else: lat_list.append(None) lon_list.append(None) # 将经纬度信息保存到Excel文件中 df['Latitude'] = lat_list df['Longitude'] = lon_list df.to_excel('address_with_latlon.xlsx', index=False) ``` 其中,address.xlsx是包含地址信息的Excel文件,Address是地址信息所在的列名。执行完上述代码后,会生成一个新的Excel文件address_with_latlon.xlsx,其中包含了每个地址对应的经纬度信息。如果某个地址无法查找到对应的经纬度,则相应的经纬度值为None。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值