一、数据来源

阿里云提供了数据下载接口,我们可以在下面这个网站下载到各级别行政区划geojson格式的数据,精确到县级。
地址

二、数据分析

由上图,我们可以看到:

地名:”武汉市“ adcode:“420100”

发现这个代码其实就是行政区划代码,网上随处可见

JSON API:https://geo.datav.aliyun.com/areas_v2/bound/420100.json
JSON API( 包含子区域):https://geo.datav.aliyun.com/areas_v2/bound/420100_full.json

稍微了解”爬虫“的朋友估计已经知道怎么下载“县级行政区划数据”了。如下:
如果我们用“JSON API(包含子区域)”这个接口,我们只需要知道全国地市级的行政区划代码就可以利用python实现批量下载了。
如果找不到地市级的行政区划代码的,可以去我的这篇文章找一下。这里有高德城市编码表,把县级行政区划筛选剔除就行了(找一下规律)。像下图这样:

三、批量下载代码

下载还是遵循爬虫思路,非常简单。这里还需要遍历excel表格,获取”地名“和“adcode”,生成url和保存名称。具体如下:

#author 张俊杰@Nick
import json
import requests
import xlrd
import xlwt# 获取所有数据json文件
def download_Json(url, name):print("-----------正在下载json文件 %s" % (url))try:# 将响应信息进行json格式化response = requests.get(url)versionInfo = response.textversionInfoPython = json.loads(versionInfo)# print(versionInfo)path = "E:\\python\\geojson数据\\市级geojson数据\\" + str(name) + ".json"#修改一下路径# 将json格式化的数据保存with open(path, 'w', encoding='utf-8') as f1:f1.write(json.dumps(versionInfoPython, indent=4))print("下载成功,文件保存位置:" + path)except Exception as ex:print("--------下载出错----")pass# 获取对应数据的json文件for i in range(353):workbook=xlrd.open_workbook(r'E:\\python\\geojson数据\\CITYCODE.xlsx')#修改一下路径sheet1=workbook.sheet_by_name('Sheet1')nrows=sheet1.nrowsncols=sheet1.ncols#print(nrows,ncols)cell_A=sheet1.cell(i,0).valuecell_B=int(sheet1.cell(i,1).value)#print(cell_B)url = 'https://geo.datav.aliyun.com/areas_v2/bound/'+str(cell_B)+'_full.json'#输入json地址download_Json(url, cell_A)#第一个参数是json文件的地址,第二个参数是文件保存的名称,print(i+1)
a=i+1
print("中国共计333个地市级行政区,加上4个直辖市、2个特别行政区和14个省属直辖,共计数据"+str(a)+"个")

下载过程:
下载结果(353个):

四、批量转格式(geojson→shapefile)

下载了geojson数据后,我们需要将其转为shapefile格式,以便在arcgis中展示。
代码如下:

#coding:utf-8
import geopandas
import matplotlib.pyplot as pltdef saveShapefile(file_path, output_shapefile_name):try:data = geopandas.read_file('E:\\python\\geojson数据\\市级geojson数据\\' + str(file_path) )#修改一下路径#ax = data.plot()#plt.show() # 显示生成的地图localPath = 'E:\\python\\geojson数据\\市级shpfile数据\\' + str(output_shapefile_name)#修改一下路径data.to_file(localPath, driver='ESRI Shapefile', encoding='utf-8')print("--保存成功,文件存放位置:"+localPath)except Exception as ex:print("--------JSON文件不存在,请检查后重试!----")pass#第一个参数是输入爬取GeoJSON的名称,
# 第二个参数是输出shapfile的名称(默认投影为wgs1984)
a=0
#获得这个数组,用到了os.walk进行遍历
array = ['七台河市.json', '三亚市.json', '三明市.json', '三沙市.json', '三门峡市.json', '上海市.json', '上饶市.json', '东莞市.json', '东营市.json', '中卫市.json', '中山市.json', '临夏回族自治州.json', '临汾市.json', '临沂市.json', '临沧市.json', '丹东市.json', '丽水市.json', '丽江市.json', '乌兰察布市.json', '乌海市.json', '乌鲁木齐市.json', '乐山市.json', '九江市.json', '云浮市.json', '五家渠市.json', '亳州市.json', '仙桃市.json', '伊春市.json', '伊犁哈萨克自治州.json', '佛山市.json', '佳木斯市.json', '保定市.json', '保山市.json', '信阳市.json', '儋州市.json', '克孜勒苏柯尔克孜自治州.json', '克拉玛依市.json', '六安市.json', '六盘水市.json', '兰州市.json', '兴安盟.json', '内江市.json', '凉山彝族自治州.json', '包头市.json', '北京市.json', '北屯市.json', '北海市.json', '十堰市.json', '南京市.json', '南充市.json', '南宁市.json', '南平市.json', '南昌市.json', '南通市.json', '南阳市.json', '博尔塔拉蒙古自治州.json', '厦门市.json', '双河市.json', '双鸭山市.json', '可克达拉市.json', '台州市.json', '合肥市.json', '吉安市.json', '吉林市.json', '吐鲁番市.json', '吕梁市.json', '吴忠市.json', '周口市.json', '呼伦贝尔市.json', '呼和浩特市.json', '和田地区.json', '咸宁市.json', '咸阳市.json', '哈密市.json', '哈尔滨市.json', '唐山市.json', '商丘市.json', '商洛市.json', '喀什地区.json', '嘉兴市.json', '嘉峪关市.json', '四平市.json', '固原市.json', '图木舒克市.json', '塔城地区.json', '大兴安岭地区.json', '大同市.json', '大庆市.json', '大理白族自治州.json', '大连市.json', '天水市.json', '天津市.json', '天门市.json', '太原市.json', '威海市.json', '娄底市.json', '孝感市.json', '宁德市.json', '宁波市.json', '安庆市.json', '安康市.json', '安阳市.json', '安顺市.json', '定西市.json', '宜宾市.json', '宜昌市.json', '宜春市.json', '宝鸡市.json', '宣城市.json', '宿州市.json', '宿迁市.json', '山南市.json', '岳阳市.json', '崇左市.json', '巴中市.json', '巴彦淖尔市.json', '巴音郭楞蒙古自治州.json', '常州市.json', '常德市.json', '平凉市.json', '平顶山市.json', '广元市.json', '广安市.json', '广州市.json', '庆阳市.json', '廊坊市.json', '延安市.json', '延边朝鲜族自治州.json', '开封市.json', '张家口市.json', '张家界市.json', '张掖市.json', '徐州市.json', '德宏傣族景颇族自治州.json', '德州市.json', '德阳市.json', '忻州市.json', '怀化市.json', '怒江傈僳族自治州.json', '恩施土家族苗族自治州.json', '惠州市.json', '成都市.json', '扬州市.json', '承德市.json', '抚州市.json', '抚顺市.json', '拉萨市.json', '揭阳市.json', '攀枝花市.json', '文山壮族苗族自治州.json', '新乡市.json', '新余市.json', '无锡市.json', '日喀则市.json', '日照市.json', '昆明市.json', '昆玉市.json', '昌吉回族自治州.json', '昌都市.json', '昭通市.json', '晋中市.json', '晋城市.json', '普洱市.json', '景德镇市.json', '曲靖市.json', '朔州市.json', '朝阳市.json', '本溪市.json', '来宾市.json', '杭州市.json', '松原市.json', '林芝市.json', '果洛藏族自治州.json', '枣庄市.json', '柳州市.json', '株洲市.json', '桂林市.json', '梅州市.json', '梧州市.json', '楚雄彝族自治州.json', '榆林市.json', '武威市.json', '武汉市.json', '毕节市.json', '永州市.json', '汉中市.json', '汕头市.json', '汕尾市.json', '江门市.json', '池州市.json', '沈阳市.json', '沧州市.json', '河池市.json', '河源市.json', '泉州市.json', '泰安市.json', '泰州市.json', '泸州市.json', '洛阳市.json', '济南市.json', '济宁市.json', '济源市.json', '海东市.json', '海北藏族自治州.json', '海南藏族自治州.json', '海口市.json', '海西蒙古族藏族自治州.json', '淄博市.json', '淮北市.json', '淮南市.json', '淮安市.json', '深圳市.json', '清远市.json', '温州市.json', '渭南市.json', '湖州市.json', '湘潭市.json', '湘西土家族苗族自治州.json', '湛江市.json', '滁州市.json', '滨州市.json', '漯河市.json', '漳州市.json', '潍坊市.json', '潜江市.json', '潮州市.json', '澳门特别行政区.json', '濮阳市.json', '烟台市.json', '焦作市.json', '牡丹江市.json', '玉林市.json', '玉树藏族自治州.json', '玉溪市.json', '珠海市.json', '甘南藏族自治州.json', '甘孜藏族自治州.json', '白城市.json', '白山市.json', '白银市.json', '百色市.json', '益阳市.json', '盐城市.json', '盘锦市.json', '眉山市.json', '石嘴山市.json', '石家庄市.json', '石河子市.json', '神农架林区.json', '福州市.json', '秦皇岛市.json', '红河哈尼族彝族自治州.json', '绍兴市.json', '绥化市.json', '绵阳市.json', '聊城市.json', '肇庆市.json', '自贡市.json', '舟山市.json', '芜湖市.json', '苏州市.json', '茂名市.json', '荆州市.json', '荆门市.json', '莆田市.json', '菏泽市.json', '萍乡市.json', '营口市.json', '葫芦岛市.json', '蚌埠市.json', '衡水市.json', '衡阳市.json', '衢州市.json', '襄阳市.json', '西双版纳傣族自治州.json', '西宁市.json', '西安市.json', '许昌市.json', '贵港市.json', '贵阳市.json', '贺州市.json', '资阳市.json', '赣州市.json', '赤峰市.json', '辽源市.json', '辽阳市.json', '达州市.json', '运城市.json', '连云港市.json', '迪庆藏族自治州.json', '通化市.json', '通辽市.json', '遂宁市.json', '遵义市.json', '邢台市.json', '那曲市.json', '邯郸市.json', '邵阳市.json', '郑州市.json', '郴州市.json', '鄂尔多斯市.json', '鄂州市.json', '酒泉市.json', '重庆市.json', '金华市.json', '金昌市.json', '钦州市.json', '铁岭市.json', '铁门关市.json', '铜仁市.json', '铜川市.json', '铜陵市.json', '银川市.json', '锡林郭勒盟.json', '锦州市.json', '镇江市.json', '长春市.json', '长沙市.json', '长治市.json', '阜新市.json', '阜阳市.json', '防城港市.json', '阳江市.json', '阳泉市.json', '阿克苏地区.json', '阿勒泰地区.json', '阿坝藏族羌族自治州.json', '阿拉善盟.json', '阿拉尔市.json', '阿里地区.json', '陇南市.json', '随州市.json', '雅安市.json', '青岛市.json', '鞍山市.json', '韶关市.json', '香港特别行政区.json', '马鞍山市.json', '驻马店市.json', '鸡西市.json', '鹤壁市.json', '鹤岗市.json', '鹰潭市.json', '黄冈市.json', '黄南藏族自治州.json', '黄山市.json', '黄石市.json', '黑河市.json', '黔东南苗族侗族自治州.json', '黔南布依族苗族自治州.json', '黔西南布依族苗族自治州.json', '齐齐哈尔市.json', '龙岩市.json']
for i in array:saveShapefile(i, i+'矢量')a+=1
print(a)

运行结果:
在上述代码块中,出现了一个数组,这个数组的元素是353个geojson数据的名称(含扩展名),它是如何获取的呢?很明显不是一个一个敲的。具体实现途径如下:
我们把353个geojson数据放在了一个文件夹中,于是我们可以通过python的os.walk进行遍历获取这一数组,代码如下:

import ospath="E:\\python\\geojson数据\\市级geojson数据"#修改一下路径
#得到所有的子文件名称(连后缀)
for i in os.walk(path):print(i)

运行结果如下:
只需要把这个数组复制下来就行了。
shapefile文件批量生成后,是这样的:

五、导入arcgis

这样的文件形式,很难批量导入arcgis中进行展示,所以我们需要把这些文件夹的内容提取出来,全部放在一个文件夹中:
在这个文件夹中新建一个文件夹“all”和一个批处理文件“all.bat”(新建一个txt文件,把后缀改成.bat)。
all.bat的内容如下:

for /f "delims=" %%p in ('dir /b/ad') do copy %%p\*.* E:\python\geojson数据\市级shpfile数据\all\
pause

注意:记得修改路径。
双击all.bat,所有shapefile文件就都在all文件夹了,效果如下(353X5个文件):
导入arcgis:
选中第一个,shift,选中最后一个,添加:

六、后记

这篇文章主要分享了爬虫、数据格式转化和windows的一些批处理操作,很大程度上基于python的第三方库,特别是geopandas。数据的庞大和有序化,使python更加有了用武之地,我们使用python实现的批量处理操作会使工作变得越来越便捷,工作量越来越少,未来会有更多的工作内容会被这样的工具替代掉。

批量下载全国县级行政区划geojson格式数据,将下载的geojson数据批量转为shapefile格式,在arcgis中可视化相关推荐

  1. QGIS|三步拥有全国县级行政区划

    "天地图"(http://www.tianditu.gov.cn)是我国自然资源部直属的国家基础地理信息中心建设的国家地理信息公共服务平台,以多种形式面向社会和公众提供地图与地理信 ...

  2. 如何批量将 Excel 文档转为 Csv 格式

    概要:CSV 称为逗号分隔值,其文件以纯文本形式存储表格数据(数字和文本),而熟悉 Excel 的小伙伴应该也知道 Excel 也是存储表格数据,只不过 Excel 不仅支持文本,还支持图片.视频等多 ...

  3. 怎么将图片转为png格式?格式转换器的使用方法

    图片转换格式是我们日常图片处理时,经常会用到的一项功能,它可以将图片格式转换(https://www.yasuotu.com/geshi)成我们需要的格式类型,比如jpg转png.png转ico.jp ...

  4. 全国省级、地级、县级行政区划数据

    上一篇文章我们已经讲过目前为止获取到的村级数据.而通常一些研究并不需要这么精密的范围,比如使用ArcGIS进行网络分析.冷热分析.流域分析等. 我们根据国家统计局公布的信息,获取了2023年全国省级. ...

  5. GIS数据:介绍一下全球行政区划数据的下载方法

    初七了! 上班了! 心里是不是颤抖了 那我们GIS思维新一年的工作,也将逐步开展起来了,今年我们将做一些大的改变,关注我们哦,与我们一路同行! 也欢迎加入GIS思维GIS系列技术学习,带给你不一样的学 ...

  6. echarts地图罗平县的json_Echarts 全国街镇地图界线,行政界线 json数据、乡镇地图geojson数据制作...

    先分享一个echarts的geoJson包,包含了中国省市级别的地图数据. 点我下载 下载密码exg9 如果觉得echarts的地图不够精细或者想要县级的geoJson,可以去这个网站获取 http: ...

  7. 奥维查看行政边界_全国乡镇行政区划数据乡镇边界数据查询获取方式

    原标题:全国乡镇行政区划数据乡镇边界数据查询获取方式 北京揽宇方圆信息技术有限公司提供全国遥感影像数据,全国乡镇行政区划数据,是结合野外实测资料,同时参照有关地理图件,采用人机交互的方式开展行政区划地 ...

  8. 百度ECharts地图GeoJson数据在线下载 2021

    百度ECharts地图GeoJson数据在线下载 项目中使用到了百度的图表插件ECharts,不得不说是真的好用,但是用到地图部分时,竟然没有地图的json数据包,网上.GitHub搜索,找到的离线包 ...

  9. 从百度地图批量获取中国县级以上行政区划边界坐标

    从百度地图批量获取中国县级以上行政区划边界坐标 不知道从什么时候开始,在Google地图或是百度地图中用城市或者省名称搜索的时候,你会发现地图上会勾勒出搜索的行政区的轮廓来,这个功能非常人性化. 比如 ...

  10. 怎么下载全国省市县行政区划边界

    1. 概述 水经注软件除了可以轻松下载无水印Google Earth卫星影像.有明确拍摄日期的历史影像.百度高德大字体打印地图,按1万/5千等国家标准图幅下载,对百度坐标与火星坐标进行纠偏:下载陆地及 ...

最新文章

  1. php 下载的压缩文件,php在线压缩打包rar并自动下载文件的例子
  2. ubuntu下安装jre的步骤
  3. python重点知识 钻石_python——子类对象如何访问父类的同名方法
  4. CSHOP后台设置SMTP发邮件提示 Error: need RCPT command 错误解决
  5. 单片机ch2o程序_基于单片机的室内甲醛浓度检测系统
  6. linux中的信号1——信号概述
  7. cdr 表格自动填充文字_PS那些好用到哭的新手小技巧(1)——如何快速去除文字图片的水印或背景文字?...
  8. 使用了visual assist.net
  9. SQL SERVER 自定义函数参数数量对调用时参数数量的影响
  10. RDD的两种操作(Transformation和Action)
  11. ASP.NET 页面传值方法的一些事情儿。
  12. 存在链接注入漏洞_【安全提示】CNVD发布上周关注度较高的产品安全漏洞(20200817-20200823)...
  13. 关于N卡录制双音轨问题以及PR2020 注册机
  14. 校园网自动登录Python版
  15. 【Python基础】制作一个汇率换算程序
  16. asp.net发邮件
  17. 解决mysql开启GTID主从同步出现1236错误问题
  18. Frodo and pillows _CF760B
  19. 大数据智能下数据脱敏的思考
  20. 知网下载论文(通过深圳图书馆)

热门文章

  1. WSO2 EI 最全操作手册
  2. 各种浏览器怎么换ip
  3. 并发测试工具(ubuntu 16.04)
  4. 土壤质地标准转换程序Java MVC模式
  5. CAD异常eNotOpenForWrite
  6. 基于航天宏图PIE-SAR软件的高分三号(GF-3)SAR影像的预处理
  7. 计算机二级电子表格开根号函数,教你如何用函数方式在excel中开根号
  8. FFmpeg 以及帧率的解释
  9. http-server 简介
  10. 宝塔环境下MinDoc的安装教程