适用于爬取一个省、市、县、区等各个行政级别的行政区划数据,数据精确到区
级别。
以湖南省为例:

# -*- coding:utf-8 -*-
import arcpy
import urllib2
import sys
import json
import math# 申请:高德API的开发者KEY
# 版本要求:ArcGis 10.2 Python 2.7
# 输入:输入省的名称 存储路径 文件名称
# 输出:该省的行政区划的shp 字段 city citycode district adcode# 获取行政区划范围内的乡镇区划列表 并插入数据
def get_ad(name):url = "http://restapi.amap.com/v3/config/district?extensions=base&subdistrict=3&key="+key+"&keywords="+name# extensions说明:all只返回当前查询的district边界坐标点# subdistrict说明:1表示下一级行政区(到市),2表示下两级行政区(到乡镇区县),3表示下三级行政区(到街道)try:req = urllib2.Request(url)res_data = urllib2.urlopen(req)res = res_data.read()data = json.loads(res)# 返回查询字段的行政区列表city_list = data['districts'][0]['districts']for city in city_list:district_list = city['districts']districts = {}  # 存储district列表for district in district_list:districts[district['adcode'].encode('utf-8')] = district['name'].encode('utf-8')# 添加数据set_polyline(districts, city['name'].encode('utf-8'), city['citycode'].encode('utf-8'))except urllib2.HTTPError, e:if hasattr(e, "code"):print e.codeif hasattr(e, "reason"):print e.reasondef get_polyline(adcode):url = "http://restapi.amap.com/v3/config/district?extensions=all&subdistrict=0&key=" + key_url = url + "&keywords=" + adcodetry:req = urllib2.Request(_url)res_data = urllib2.urlopen(req)res = res_data.read()data = json.loads(res)polyline = data['districts'][0]['polyline']return polylineexcept urllib2.HTTPError, e:if hasattr(e, "code"):print e.codeif hasattr(e, "reason"):print e.reasondef prepare_shp():fields_long = ['city', 'district']fields_short = ['citycode', 'adcode']length_long = 20length_short = 10sr = arcpy.SpatialReference(4326)if arcpy.Exists(file):arcpy.Delete_management(file)polygon = arcpy.CreateFeatureclass_management(path, shp_name, 'POLYGON', '', '', '', sr)print 'create:' + shp_namefor field in fields_long:arcpy.AddField_management(polygon, field, 'TEXT', '', '', length_long)print 'add filed:' + fieldfor field in fields_short:arcpy.AddField_management(polygon, field, 'TEXT', '', '', length_short)print 'add filed:' + fielddef set_polyline(districts_map, city, citycode):insert_cursor = arcpy.da.InsertCursor(file, ('SHAPE@', 'city', 'district', 'citycode', 'adcode'))for adcode in districts_map.keys():polyline = get_polyline(adcode)array = arcpy.Array()for j in polyline.split('|'):arr = arcpy.Array()for i in j.split(';'):pt = arcpy.Point()pt.X = gcj2wgs(i)[0]pt.Y = gcj2wgs(i)[1]arr.append(pt)array.append(arr)polygon = arcpy.Polygon(array)insert_cursor.insertRow((polygon, city, districts_map[adcode], citycode, adcode))print "data create:" + citydel insert_cursor# 高德火星坐标系转化为WGS84地理坐标系
def gcj2wgs(loc):lon = float(loc.split(',')[0])lat = float(loc.split(',')[1])a = 6378245.0  # 克拉索夫斯基椭球参数长半轴aee = 0.00669342162296594323  # 克拉索夫斯基椭球参数第一偏心率平方PI = 3.14159265358979324  # 圆周率# 以下为转换公式x = lon - 105.0y = lat - 35.0# 经度dLon = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * math.sqrt(abs(x))dLon += (20.0 * math.sin(6.0 * x * PI) + 20.0 * math.sin(2.0 * x * PI)) * 2.0 / 3.0dLon += (20.0 * math.sin(x * PI) + 40.0 * math.sin(x / 3.0 * PI)) * 2.0 / 3.0dLon += (150.0 * math.sin(x / 12.0 * PI) + 300.0 * math.sin(x / 30.0 * PI)) * 2.0 / 3.0# 纬度dLat = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * math.sqrt(abs(x))dLat += (20.0 * math.sin(6.0 * x * PI) + 20.0 * math.sin(2.0 * x * PI)) * 2.0 / 3.0dLat += (20.0 * math.sin(y * PI) + 40.0 * math.sin(y / 3.0 * PI)) * 2.0 / 3.0dLat += (160.0 * math.sin(y / 12.0 * PI) + 320 * math.sin(y * PI / 30.0)) * 2.0 / 3.0radLat = lat / 180.0 * PImagic = math.sin(radLat)magic = 1 - ee * magic * magicsqrtMagic = math.sqrt(magic)dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);dLon = (dLon * 180.0) / (a / sqrtMagic * math.cos(radLat) * PI);wgsLon = lon - dLonwgsLat = lat - dLatreturn wgsLon, wgsLatreload(sys)
sys.setdefaultencoding('utf-8')key = "你的KEY"
search_name = "湖南省"  # 输入要获取的行政区划名称
path = "C:/ArcgisData/data" //选择一个存储路径
shp_name = search_name + ".shp"
file = path + "/" + shp_name
prepare_shp()
get_ad(search_name)
print "create success"

python爬取高德地图乡镇区行政区划相关推荐

  1. python爬取高德地图_爬虫实战:如何爬取高德地图?

    提起高德地图,咱们每一个人都不会陌生,高德地图是一款非常好用的地区服务软件,很多用户在出行的时候都会使用这款软件,日程用来导航,也可以用来打车,一次呼叫多种车型,用户可以在这里获得更好的服务,随时都可 ...

  2. Python爬取高德地图各城市天气

    Python爬取高德地图各城市天气 爬虫练习项目之一.从高德地图json数据接口获取天气.可以获取某省的所有城市天气.高德地图的这个接口还能获取县城的天气,我只写到了市.有兴趣的朋友可以尝试一下. 完 ...

  3. PYTHON爬取高德地图POI

    PYTHON爬取高德地图POI 使用高德地图API爬取POI数据,首先需要申请高德地图API的KEY和获取<POI分类编码表>,本实例的最后结果是根据不同的poi类型分别生成多个EXCEL ...

  4. python爬取高德地图数据_你的未来有我导航----教你如何爬取高德地图

    简单一文教你如何爬取高德地图 目录 推荐 一. 分析网页结构 二.拿到相关网址 三.代码实现 3.1 查询所有城市名称和编号 3.2 根据编号查询天气 四.完整代码 五.保存结果 一. 分析网页结构 ...

  5. python爬高德地图_利用Python爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  6. python爬取地图地址_网络爬虫-python爬取高德地图地点

    python爬取你想要的数据,近期由于业务需求,用python爬取了高德地图一些地点的数据,爬出来数据大致情况如下: image 下面是基本流程: 2.安装网络爬取第三方库,主要是下面三个(pip i ...

  7. python爬取高德数据_利用Python爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  8. python输入数据爬取_利用 Python 爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  9. python零基础爬虫练习:如何用python爬取高德地图

    大家好,我是大志 这次介绍一个爬取动态网页的超简单的一个小demo. 说到动态网页,你对它了解多少呢? 简单来说,要获取静态网页的网页数据只需要给服务器发送该网页url地址就行,而动态网页的数据因为是 ...

  10. 大神都已经在用python爬取高德地图了

    一. 分析网页结构 本篇博文就以高德地图展开:https://www.amap.com/ 在打开后,我们发现有一堆div标签,但是并没有我们需要的数据,这个时候就可以判定其为动态网页,这个时候,我们就 ...

最新文章

  1. 使用 xcworkspace 管理 iOS 工程
  2. synchronize
  3. TensorFlow学习(四):优化器Optimizer
  4. XMLDOM对象方法:对象属性
  5. 逐飞关于第15届智能车竞赛相关工作
  6. 清华大学图神经网络综述:模型与应用
  7. 说说JSON和JSONP,也许你会豁然开朗,含jQuery使用jsonp用例
  8. CEPH FILESYSTEM
  9. linux组成,Linux学习笔记之Linux组成及初识
  10. GCD应用及其他方法
  11. 【原创】Erlang 之 entop 使用问题
  12. 电脑怎么打字切换中文_五个练习打字的网站,让你的速度飞起
  13. 【转载】PHP.INI配置:Session配置详细说明教程
  14. Python 文件(文件夹)匹配(glob模块)(转载)
  15. twrp gui/actions.cpp 中的功能实现 tw_action ,tw_action_param ,第二章
  16. Zune支持哪些格式?
  17. windows服务封装程序srvany和nssm的区别
  18. 麒麟Linux启动目录,优麒麟目录结构介绍 系统入门必备
  19. COUNTIF、COUNTIFS、SUMIF、SUMIFS用法详解
  20. VBox 启动虚拟机失败 - NtCreateFile(\Device\VBoxDrvStub)

热门文章

  1. c语言求符合给定条件的整数集,中国大学MOOC-翁恺-C语言程序设计习题集(二)...
  2. 《Head First 设计模式》例子的C++实现(2 观察者模式)
  3. 二、列表(java)
  4. 计算机操作系统--思维导图
  5. Jenkins自动化构建Gitee项目
  6. 转~ubuntu的一些常用软件
  7. BXP 3.11样机安装详细说明(转)
  8. NLP系列之文本分类
  9. No MyBatis mapper was found in ‘[xx]‘ package. Please check your configuration.
  10. python 去重 排序_python中sorted()和set()去重,排序