📅  最后修改于: 2023-12-03 15:08:25.767000             🧑  作者: Mango
在很多数据分析和地理信息系统(GIS)的工作中,经度和纬度信息都是非常重要的。然而,在收集和处理数据时,可能需要把一些地区或国家的经度和纬度进行标注,但是这些信息可能并不好获取。本文将介绍如何使用Python查找地区或国家列表的经度和纬度。
Geopy 能够根据输入的地点名称、邮编或地址等信息来查询经纬度等有关该地点的信息。下面是一个使用 Geopy 来查询纽约市的中心经纬度的示例代码:
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="my-application")
location = geolocator.geocode("New York City")
print((location.latitude, location.longitude))
输出:
(40.7127281, -74.0060152)
这个例子展示了如何使用 geocode 方法来查找给定地址的经纬度。对于国家列表,我们可以通过读取国家列表的 csv 文件来获取每个国家的名称和国家代码,然后使用 Geopy 进行查询。
除了使用 Geopy,也可以使用第三方的 API 查询经纬度。这里以使用 OpenCage Geocoder 的 API 为例,通过 Python 程序获取中国所有省份的中心经纬度。需要先在 OpenCage 网站上注册并获得访问 API 的 Key。
import requests
import json
api_key = "YOUR_API_KEY"
url = "https://api.opencagedata.com/geocode/v1/json"
provinces = ["北京市", "天津市", "河北省", "山西省", "内蒙古自治区",
"辽宁省", "吉林省", "黑龙江省", "上海市", "江苏省",
"浙江省", "安徽省", "福建省", "江西省", "山东省",
"河南省", "湖北省", "湖南省", "广东省", "广西壮族自治区",
"海南省", "重庆市", "四川省", "贵州省", "云南省",
"西藏自治区", "陕西省", "甘肃省", "青海省", "宁夏回族自治区",
"新疆维吾尔自治区"]
for province in provinces:
params = {
'q': province,
'key': api_key,
'language': 'zh',
'pretty': 1
}
response = requests.get(url, params=params)
if response.status_code == 200:
result = json.loads(response.content.decode('utf-8'))
lat = result["results"][0]["geometry"]["lat"]
lng = result["results"][0]["geometry"]["lng"]
print(province, lat, lng)
这个程序会根据中国的省份列表依次查询每个省份的中心经纬度,并输出结果:
北京市 39.9385466 116.4555691
天津市 39.1245134 117.198076
河北省 37.8957224 114.9042192
山西省 37.8735325 112.562398
内蒙古自治区 43.9263942 116.758425
辽宁省 41.509041 123.4068851
吉林省 43.816022 126.542418
黑龙江省 47.3509623 127.5015753
上海市 31.2322758 121.4692071
江苏省 33.816759 118.801463
浙江省 29.0000005 120.000001
安徽省 31.8611848 117.2858759
福建省 26.6527473 117.734177
江西省 27.689015 115.864528
山东省 36.6687272 117.0203594
河南省 34.0000001 113.9999999
湖北省 31.1517254 112.8783224
湖南省 27.9999809 111.7054584
广东省 23.135769 113.1982705
广西壮族自治区 23.9999995 108.0000002
海南省 19.1971429 109.7459631
重庆市 30.054553 107.8746498
四川省 30.2645846 102.8286457
贵州省 27.0000001 107.9999999
云南省 24.4752847 101.3431043
西藏自治区 30.1538449 88.7878658
陕西省 34.327387 108.9353745
甘肃省 38.093994 101.8645209
青海省 36.620901 101.780199
宁夏回族自治区 38.4871936 106.2309095
新疆维吾尔自治区 41.7572632 86.1462632
本文介绍了如何使用 Python 流行的库 Geopy 和第三方 API OpenCage Geocode 查询地区或国家列表的经度和纬度。对于中小规模的数据处理任务,Geopy 是一个方便快捷的工具,而对于需要查询大量数据的场景,使用第三方 API 可能更高效。