📌  相关文章
📜  如何使用Python查找地区或国家列表的经度和纬度

📅  最后修改于: 2022-05-13 01:54:28.786000             🧑  作者: Mango

如何使用Python查找地区或国家列表的经度和纬度

Geopy是一个Python 2 和 3 客户端,用于几个流行的地理编码 Web 服务。地理编码是识别给定城市/国家/地址的纬度和经度等地理坐标的过程。这在数据可视化中在地图上标记位置时非常有用。我们在下面的代码中使用geopy.execgeocodertimedoutgeolocatorsgeopy.geocoder来获取结果

安装

这个模块没有内置在Python中。要安装它,请在终端中键入以下命令。

pip install geopy 

示例:让我们创建一个包含地区或国家列表的 pandas 数据框。

# Import pandas package  
import pandas as pd 
import numpy as np
    
# Define a dictionary containing  data 
data = {'City':['Bangalore', 'Mumbai', 'Chennai', 'Delhi']} 
    
# Convert the dictionary into DataFrame 
df = pd.DataFrame(data) 
    
# Observe the result 
df 

输出:

查找地区/国家列表的经度和纬度

现在让我们找出以下地区或国家的经纬度。

from geopy.exc import GeocoderTimedOut
from geopy.geocoders import Nominatim
   
# declare an empty list to store
# latitude and longitude of values 
# of city column
longitude = []
latitude = []
   
# function to find the coordinate
# of a given city 
def findGeocode(city):
       
    # try and catch is used to overcome
    # the exception thrown by geolocator
    # using geocodertimedout  
    try:
          
        # Specify the user_agent as your
        # app name it should not be none
        geolocator = Nominatim(user_agent="your_app_name")
          
        return geolocator.geocode(city)
      
    except GeocoderTimedOut:
          
        return findGeocode(city)    
  
# each value from city column
# will be fetched and sent to
# function find_geocode   
for i in (df["City"]):
      
    if findGeocode(i) != None:
           
        loc = findGeocode(i)
          
        # coordinates returned from 
        # function is stored into
        # two separate list
        latitude.append(loc.latitude)
        longitude.append(loc.longitude)
       
    # if coordinate for a city not
    # found, insert "NaN" indicating 
    # missing value 
    else:
        latitude.append(np.nan)
        longitude.append(np.nan)

将生成的输出显示为数据框。

# now add this column to dataframe
df["Longitude"] = longitude
df["Latitude"] = latitude
  
df

输出:

查找地区/国家列表的经度和纬度