其他
数据治理 | 根据地址获取经纬度及行政区划——API的妙用
本文目录
一、引言
二、行政区划代码、经纬度简介
1.行政区划代码
2.经纬度
三、使用高德 Web服务API
1.地理编码
2.逆地理编码
四、结束语
本文共3030个字,阅读大约需要8分钟,欢迎指正!
Part1引言
Part2行政区划代码、经纬度简介
1行政区划代码
其中行政区划代码的第一位是根据我国的几大地区来编码的,例如:
“1” 代表华北地区,如北京市(110000); “2” 代表东北地区,如黑龙江省(230000); “3” 代表华东地区,如江苏省(320000); “4” 代表中南地区,如广东省(440000); “5” 代表西南地区,如四川省(510000); “6” 代表西北地区,如新疆维吾尔自治区(650000)。
2经纬度
经纬度是经度与纬度组成的坐标系统,是一种利用三度空间的球面来定义地球上的空间的球面坐标系统,能够标示地球上的任何一个位置。 ——百度百科
名称 | 别称 | 简介 |
---|---|---|
WGS84 | 地球坐标系、GPS坐标系 | 国际上通用的坐标系。设备包含的GPS芯片或者北斗芯片获取的经纬度一般都是为WGS84地理坐标系,目前谷歌地图采用的是WGS84坐标系(中国范围除外) |
GCJ-02 | 火星坐标系 | 由中国国家测绘局(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。 |
BD09 | 百度坐标系 | 经GCJ-02坐标系加密后的坐标系,由百度公司提供 |
Part3使用高德 Web服务API
1地理编码
# 导入 Python 网络请求模块
import requests
# 定义使用高德 API 进行地理编码的方法
def geocoding_by_address(address, city):
# 使用高德 Web服务API 所需的 key, 需要前往高德开放平台申请
key = '40a3821347789169d5cb88c4d152bbc1'
# 发送地理编码请求的 url
url = 'https://restapi.amap.com/v3/geocode/geo'
# 向地理编码服务传入的参数
parameters = {
'key':key, # 使用服务所需的 key, 必需参数
'address':address, # 进行地理编码的地址,必需参数
'city':city, # 城市,传入该参数可以增加该地区的权重
}
# 使用上面定义的参数到指定 url 去请求数据
resp = requests.get(
url,
params=parameters
)
# 解析异常
resp.raise_for_status()
# 以 json 格式返回请求结果
return resp.json()
# 示例,调用上面定义的地理编码方法
# 第一个参数是我们想要进行地理编码的文本地址
# 第二个参数可以传入省份、地市,传入该参数后,会尽可能地返回指定地区的位置信息
# 第二个参数为空时,会在全国范围内寻找
result = geocoding_by_address('杭州市钱塘区2号大街100号', '')
result
# 返回结果为字符型数据
# 提取经纬度
gis = result['geocodes'][0]['location']
# 经度在前,纬度在后
print(gis) # 输出:120.393592,30.311114
# 提取六位行政区划代码
adcode = result['geocodes'][0]['adcode']
print(adcode) # 输出:330114
2逆地理编码
# 定义使用高德 API 进行逆地理编码的方法
def inverse_geocoding(lng, lat):
# 使用高德 Web服务API 所需的 key, 需要前往高德开放平台申请
key = '40a3821347789169d5cb88c4d152bbc1'
# 发送逆地理编码请求的 url
url = 'https://restapi.amap.com/v3/geocode/regeo'
# 将传入的经纬度转为字符型,如果已经是字符则不做任何操作
try:
lng = str(lng)
lat = str(lat)
except:
pass
# API 所需的坐标格式是使用逗号分隔经纬度,需要预先适配
location = ','.join([lng, lat])
# 向地理编码服务传入的参数
parameters = {
'key':key, # 使用服务所需的 key, 必需参数
'location':location, # 进行逆地理编码所需的坐标,必需参数
}
# 使用上面定义的参数到指定 url 去请求数据
resp = requests.get(
url,
params=parameters
)
# 解析异常
resp.raise_for_status()
# 以 json 格式返回请求结果
return resp.json()
# 示例,使用正地理编码获取的经纬度进行逆地理编码
# 逆地理编码需要同时传入坐标点的经纬度值
# 传入参数,经度在前,纬度在后
result = inverse_geocoding(120.393592,30.311114)
result
formatted_address
表示输入经纬度所对应的现实地址,我们在正地理编码中使用地址杭州市钱塘区2号大街100号
去获取该地点的经纬度,随后使用返回的经纬度进行逆地理编码,所匹配到的地址同样是杭州市钱塘区2号大街100号。这也反映了该 API 服务的准确性。Part4结束语
我们将在数据治理板块中推出一系列原创推文,帮助读者搭建一个完整的社科研究数据治理软硬件体系。该板块将涉及以下几个模块(点击标题即可跳转至相应合集):
星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
文 | 《社科领域大数据治理实务手册》
欢迎扫描👇二维码添加关注