Python 一键获取市县级城市经纬度信息

一、数据来源

本文所涉及的市、县级经纬度数据均来自于阿里云,数据更新于2020年4月。

二、全部代码

import requests
import json
import pandas as pd
import re

def get_feature_list(url):
    r = requests.get(url)
    data = json.loads(r.text)
    return data['features']

def get_data(city_data): 
    df = []
    for city in city_data:
        city_code = city['properties']['adcode']
        city_name = city['properties']['name']
        lon,lat = city['properties']['center']
        df.append([city_code,city_name,lon,lat])
    df = pd.DataFrame(df,columns=['城市代码','城市名称','经度','维度'])
    return df

def main(url,whether):  #是则爬取一级行政单位,否则爬取二级行政单位
    data = get_feature_list(url)
    if whether:
        city_data = get_data(data)
        city_data.to_csv('C:/users/dell/Desktop/city.csv',encoding='gbk',index=False)
    else:
        county = pd.DataFrame()
        pattern = '\d+'
        for city in data:
            city_code = city['properties']['adcode']
            url = re.sub(pattern,str(city_code),url)
            county_data = get_data(get_feature_list(url))
            county = pd.concat([county,county_data])
            print(city['properties']['name']+'下所有区县保存完毕')
        county.to_csv('C:/users/dell/Desktop/county.csv',encoding='gbk',index=False)                                              

if __name__=='__main__':
	#改变此处的url,即可获取不同地区的经纬度信息(其中,code后面对应的数字唯一对应一个地区)
    url = 'https://geo.datav.aliyun.com/areas/bound/geojson?code=420000_full' 
    main(url,False) #True则爬取二级行政单元,False则爬取三级行政单元

三、使用介绍

以下,均以安徽省为例

3.1 获取全省所有地级市经纬度信息

打开上述数据网址,在搜索栏中输入安徽省,并复制红框处的地址,将上述代码中的url换成该地址即可。
在这里插入图片描述
此时,如果想要获取安徽省所有地级市的经纬度信息,则将main函数中的第二个参数设置为True,最终爬取结果如下:
在这里插入图片描述

3.2 获取某个地级市下所有区县经纬度信息

若想要获取合肥市下所有区县的经纬度信息,同理,在搜索栏中输入合肥市,将红框处的地址复制到代码中的url处,并设置main函数中第二个参数为True
在这里插入图片描述
最终,爬取结果如下:
在这里插入图片描述

3.3 获取全省所有区县经纬度信息

若想获取安徽省下所有区县的经纬度信息,则将安徽省所对应网址复制到url处,并设置main函数第二个参数为False即可。最终,爬取的结果如下:
在这里插入图片描述
以上,就是本次分享的全部内容~

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值