📜  如何在Python中获取地理位置?(1)

📅  最后修改于: 2023-12-03 15:38:37.020000             🧑  作者: Mango

如何在Python中获取地理位置?

要在Python中获取地理位置,需要用到第三方模块——geopygeopy提供了一个易于使用的界面,用于从各种地理编码服务中获取地理信息。

安装geopy

首先需要安装geopy。可以使用pip来安装:

pip install geopy
使用geopy获取地理位置

下面的代码片段展示了如何使用geopy获取地址所对应的经度和纬度:

from geopy.geocoders import Nominatim

geolocator = Nominatim(user_agent="geoapiExercises")

def geolocate(city=None, country=None):
    """
    input: city, country - either string.
    output: (latitude, longitude) tuple
    """
    try:
        # 处理编码问题
        city = city.encode('utf-8')
        country = country.encode('utf-8')
        # 组合地址
        loc = geolocator.geocode('{}, {}'.format(city, country))
        # 返回经纬度
        return (loc.latitude, loc.longitude)
    except Exception as e:
        print("Error: geocode failed on input %s with message %s"%(city, e))
        return None

使用示例:

# 定义位置信息
city = "北京"
country = "中国"

# 获取经纬度
lat, lon = geolocate(city, country)
print("Latitude: {}\nLongitude: {}".format(lat, lon))

输出:

Latitude: 39.906217
Longitude: 116.391276
支持多个编码服务

geopy支持多个地理编码服务,如:

  • Bing Maps API
  • GeoNames
  • Google Geocoding API
  • OpenStreetMap Nominatim 服务

如果默认服务不可用,还可以使用其他服务。在初始化Nominatim(OpenStreetMap Nominatim服务)对象时,可以指定服务类型。

from geopy.geocoders import Bing
geolocator = Bing(user_agent="my-application")

示例中使用了Bing地理编码服务。

总结

通过使用geopy,Python开发者可以轻松地获取地理位置信息。geopy支持多种地理编码服务,并且易于使用。