python调用高德接口获取国内行政区经纬度数据

文章目录


参考博客:https://blog.csdn.net/qq_35625681/article/details/118873871

格式一

输出字段:‘国家’, ‘省份’, ‘市’, ‘区县’, ‘街道’, ‘区域编码’, ‘区域中心点’, ‘行政区划分级别’, ‘城市编码’

import requests
import pandas as pd
import time
import os

# 高德接口介绍 https://lbs.amap.com/api/webservice/guide/api/district

key = 'XX'  # 参考接口介绍获取key,以及以下参数意义
while True:  # 创建循环,如果查询结果成功,跳出循环
    keywords = input('请输入需查询的关键词,例如,中国,山东,济南,历下区:\n')
    subdistrict = input('设置显示下级行政区级数,可输入数字:0、1、2、3:\n')
    extensions = 'base'
    url = f'http://restapi.amap.com/v3/config/district?key={key}&keywords={keywords}&subdistrict={subdistrict}&extensions={extensions}'
    r = requests.get(url)
    data = r.json()
    建议结果列表 = data['count']
    if 建议结果列表 == '0':
        print('参数输入错误,请重新输入!返回值:', 建议结果列表)
    else:
        break

行政区数据列表 = []  # 创建空列表,用户存储查询的数据

s1 = data['districts'][0]['adcode']    # 区域编码
s2 = data['districts'][0]['name']      # 行政区名称
s3 = data['districts'][0]['center']    # 区域中心点
s4 = data['districts'][0]['level']     # 行政区划级别
s5 = data['districts'][0]['citycode']  # 城市编码
if s4 == 'country':
    行政区数据列表.append([s2, '', '', '', '', s1, s3, s4, s5])  # 国家
if s4 == 'province':
    行政区数据列表.append(['', s2, '', '', '', s1, s3, s4, s5])  # 省份
if s4 == 'city':
    行政区数据列表.append(['', '', s2, '', '', s1, s3, s4, s5])  # 市
if s4 == 'district':
    行政区数据列表.append(['', '', '', s2, '', s1, s3, s4, s5])  # 区县
if s4 == 'street':
    行政区数据列表.append(['', '', '', '', s2, s1, s3, s4, s5])  # 街道

一级行政区数据 = data['districts'][0]['districts']
一级行政区个数 = len(一级行政区数据)

for i in range(0, 一级行政区个数):
    s1 = 一级行政区数据[i]['adcode']
    s2 = 一级行政区数据[i]['name']
    s3 = 一级行政区数据[i]['center']
    s4 = 一级行政区数据[i]['level']
    s5 = 一级行政区数据[i]['citycode']
    if s4 == 'country':
        行政区数据列表.append([s2, '', '', '', '', s1, s3, s4, s5])  # 国家
    if s4 == 'province':
        行政区数据列表.append(['', s2, '', '', '', s1, s3, s4, s5])  # 省份
    if s4 == 'city':
        行政区数据列表.append(['', '', s2, '', '', s1, s3, s4, s5])  # 市
    if s4 == 'district':
        行政区数据列表.append(['', '', '', s2, '', s1, s3, s4, s5])  # 区县
    if s4 == 'street':
        行政区数据列表.append(['', '', '', '', s2, s1, s3, s4, s5])  # 街道

    二级行政区数据 = 一级行政区数据[i]['districts']
    二级行政区个数 = len(二级行政区数据)

    for x in range(0, 二级行政区个数):
        s1 = 二级行政区数据[x]['adcode']
        s2 = 二级行政区数据[x]['name']
        s3 = 二级行政区数据[x]['center']
        s4 = 二级行政区数据[x]['level']
        s5 = 二级行政区数据[x]['citycode']
        if s4 == 'country':
            行政区数据列表.append([s2, '', '', '', '', s1, s3, s4, s5])  # 国家
        if s4 == 'province':
            行政区数据列表.append(['', s2, '', '', '', s1, s3, s4, s5])  # 省份
        if s4 == 'city':
            行政区数据列表.append(['', '', s2, '', '', s1, s3, s4, s5])  # 市
        if s4 == 'district':
            行政区数据列表.append(['', '', '', s2, '', s1, s3, s4, s5])  # 区县
        if s4 == 'street':
            行政区数据列表.append(['', '', '', '', s2, s1, s3, s4, s5])  # 街道

        三级行政区数据 = 二级行政区数据[x]['districts']
        三级行政区个数 = len(三级行政区数据)

        for y in range(0, 三级行政区个数):
            s1 = 三级行政区数据[y]['adcode']
            s2 = 三级行政区数据[y]['name']
            s3 = 三级行政区数据[y]['center']
            s4 = 三级行政区数据[y]['level']
            s5 = 三级行政区数据[y]['citycode']
            if s4 == 'country':
                行政区数据列表.append([s2, '', '', '', '', s1, s3, s4, s5])  # 国家
            if s4 == 'province':
                行政区数据列表.append(['', s2, '', '', '', s1, s3, s4, s5])  # 省份
            if s4 == 'city':
                行政区数据列表.append(['', '', s2, '', '', s1, s3, s4, s5])  # 市
            if s4 == 'district':
                行政区数据列表.append(['', '', '', s2, '', s1, s3, s4, s5])  # 区县
            if s4 == 'street':
                行政区数据列表.append(['', '', '', '', s2, s1, s3, s4, s5])  # 街道

df = pd.DataFrame(行政区数据列表, columns=['国家', '省份', '市', '区县', '街道', '区域编码', '区域中心点', '行政区划分级别', '城市编码'])
print(df)
路径 = '行政区域查询-' + str(time.strftime("%Y%m%d%H%M%S", time.localtime())) + '.xlsx'

print('请输入自定义文件保存位置,不输入则保存在默认位置,示例:C:\\Users\\lenovo\\Desktop\\')
address = ''
address_input = input('请输入:')
if len(address_input)==0:
    address = 路径
else:
    address = address_input + 路径
df.to_excel(address)

#显示最终保存路径
last_address = ''
if len(address_input) ==0:
    last_address = os.path.abspath('.')+ '\\'+ address
else :
    last_address = address
print('查询完成,结果输出:' + last_address)

格式二

输出字段:‘区域’, ‘区域编码’, ‘区域中心点’, ‘行政区划分级别’, ‘城市编码’

import requests
import pandas as pd
import time
import os

# 高德接口介绍 https://lbs.amap.com/api/webservice/guide/api/district

key = 'XX'  # 参考接口介绍获取key,以及以下参数意义
while True:  # 创建循环,如果查询结果成功,跳出循环
    keywords = input('请输入需查询的关键词,例如,中国,浙江,杭州,余杭:\n')
    subdistrict = input('设置显示下级行政区级数,可输入数字:0、1、2、3:\n')
    extensions = 'base'
    url = f'http://restapi.amap.com/v3/config/district?key={key}&keywords={keywords}&subdistrict={subdistrict}&extensions={extensions}'
    r = requests.get(url)
    data = r.json()
    建议结果列表 = data['count']
    if 建议结果列表 == '0':
        print('参数输入错误,请重新输入!返回值:', 建议结果列表)
    else:
        break

行政区数据列表 = []  # 创建空列表,用户存储查询的数据

s1 = data['districts'][0]['adcode']    # 区域编码
s2 = data['districts'][0]['name']      # 行政区名称
s3 = data['districts'][0]['center']    # 区域中心点
s4 = data['districts'][0]['level']     # 行政区划级别
s5 = data['districts'][0]['citycode']  # 城市编码
行政区数据列表.append([s2, s1, s3, s4, s5])

一级行政区数据 = data['districts'][0]['districts']
一级行政区个数 = len(一级行政区数据)

for i in range(0, 一级行政区个数):
    s1 = 一级行政区数据[i]['adcode']
    s2 = 一级行政区数据[i]['name']
    s3 = 一级行政区数据[i]['center']
    s4 = 一级行政区数据[i]['level']
    s5 = 一级行政区数据[i]['citycode']
    行政区数据列表.append([s2, s1, s3, s4, s5])

    二级行政区数据 = 一级行政区数据[i]['districts']
    二级行政区个数 = len(二级行政区数据)

    for x in range(0, 二级行政区个数):
        s1 = 二级行政区数据[x]['adcode']
        s2 = 二级行政区数据[x]['name']
        s3 = 二级行政区数据[x]['center']
        s4 = 二级行政区数据[x]['level']
        s5 = 二级行政区数据[x]['citycode']
        行政区数据列表.append([s2, s1, s3, s4, s5])

        三级行政区数据 = 二级行政区数据[x]['districts']
        三级行政区个数 = len(三级行政区数据)

        for y in range(0, 三级行政区个数):
            s1 = 三级行政区数据[y]['adcode']
            s2 = 三级行政区数据[y]['name']
            s3 = 三级行政区数据[y]['center']
            s4 = 三级行政区数据[y]['level']
            s5 = 三级行政区数据[y]['citycode']
            行政区数据列表.append([s2, s1, s3, s4, s5])

df = pd.DataFrame(行政区数据列表, columns=['区域', '区域编码', '区域中心点', '行政区划分级别', '城市编码'])
print(df)
路径 = '行政区域查询-' + str(time.strftime("%Y%m%d%H%M%S", time.localtime())) + '.xlsx'

print('请输入自定义文件保存位置,不输入则保存在默认位置,示例:C:\\Users\\lenovo\\Desktop\\')
address = ''
address_input = input('请输入:')
if len(address_input)==0:
    address = 路径
else:
    address = address_input + 路径
df.to_excel(address)

#显示最终保存路径
last_address = ''
if len(address_input) ==0:
    last_address = os.path.abspath('.')+ '\\'+ address
else :
    last_address = address
print('查询完成,结果输出:' + last_address)
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值