geopy

一、geopy 简介及安装

可以使用geopy库来查询地址,国家,城市,地标,geopy使用的是第三方的geo解析器(包括谷歌地图,必应地图,Nominatim等)和一些数据源来获取地理信息。

安装 geopy:

pip3 install geopy
二、geopy 使用
1、从地址字符串获取 Location 对象

也就是将字符串转换为地理位置。

# coding=utf-8
from geopy.geocoders import Nominatim

geolocator = Nominatim()
location = geolocator.geocode('故宫')
print(location.address)
# 故宫, 故宫东门外, 崇文, 北京市, 东城区, 北京市, 100010, 中国

print(location.latitude, location.longitude)  # 输出故宫的纬度、经度
# 39.91727565 116.390769405773

# 输出 Location 的所有信息
print(location.raw)
# {
#     'place_id': 259835570, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 
#      'osm_type': 'relation', 'osm_id': 9511883, 'boundingbox': ['39.9116214', 
#                                                                 '39.9211913', 
#                                                                 '116.386202', 
#                                                                 '116.3953903'], 
#      'lat': '39.91727565', 
#      'lon': '116.390769405773', 
#      'display_name': '故宫, 故宫东门外, 崇文, 北京市, 东城区, 北京市, 100010, 中国', 
#      'class': 'tourism', 'type': 'attraction', 'importance': 0.545487227980481, 
#      'icon': 'https://nominatim.openstreetmap.org/images/mapicons/poi_point_of_interest.p.20.png'
#  }
2、从经纬度获取 Location 对象

也就是将经纬度转换为地理位置。

# coding=utf-8
from geopy.geocoders import Nominatim


# 将经纬度转换为地理位置
gelocator = Nominatim()
location = gelocator.reverse("39.9073285, 116.391242416486")
print(location.address)
# # 天安门, 1, 西长安街, 崇文, 北京市, 东城区, 北京市, 100010, 中国
#
print(location.raw)
#
# {
#   'place_id': 242516302,
#   'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright',
#   'osm_type': 'relation',
#   'osm_id': 8847697,
#   'lat': '39.907359',
#   'lon': '116.391263017795',
#   'display_name': '天安门, 1, 西长安街, 崇文, 北京市, 东城区, 北京市, 100010, 中国',
#   'address': {
#     'address29': '天安门',
#     'house_number': '1',
#     'road': '西长安街',
#     'suburb': '崇文',
#     'city': '东城区',
#     'state': '北京市',
#     'postcode': '100010',
#     'country': '中国',
#     'country_code': 'cn'
#   },
#   'boundingbox': [
#     '39.9071482',
#     '39.9075289',
#     '116.3905678',
#     '116.3919619'
#   ]
# }
3、计算两点距离

单位可以为

  • meters 米(简写m)
  • kilometers 千米(简写km)
  • miles 英里(简写mi)
  • nautical 海里(简写nm)
  • feet 英尺(简写ft)
计算经纬度距离 Vincenty distance
from geopy.distance import vincenty


tiananmen = (39.9073285, 116.391242416486)
xiaozhai = (34.2253171, 108.9426205)
print(vincenty(tiananmen, xiaozhai).meters)
# 913925.3164971863
计算球面距离 great-circle distance
## 计算球面距离
from geopy.distance import great_circle


tiananmen = (39.9073285, 116.391242416486)
xiaozhai = (34.2253171, 108.9426205)
print(great_circle(tiananmen, xiaozhai).meters)
# 913657.4596518736

geopy 的官网地址为:https://geopy.readthedocs.io/en/latest/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值