转载自慧天地的微信公众号

https://mp.weixin.qq.com/s?__biz=MzIwNDE1NjM2NA==&mid=2652026878&idx=6&sn=ba2f7ceb3c74e8efd3ff09fb2e052aec&chksm=8d226b5dba55e24b5b8e377b24115c54e0a1784f752999b227cb1f9500bc820c466621815c30&mpshare=1&scene=23&srcid=0920WCyWGc6LIlecKPOzjSJW#rd

1)不使用密钥的方法(5分钟获取一次,只有全国主要城市)

主要利用的网址是

http://report.amap.com/index.do

点北京市,网址

http://report.amap.com/detail.do?city=110000

我们主要需要道路和商圈的实时信息

通过F12,我们可以得到动态的URL链接,根据链接,就可以爬取数据了

道路代码

import pandas as pd

import requests

import time

while True:

t=time.strftime("%H%M%S",time.localtime())

r=requests.get("http://report.amap.com/ajax/roadRank.do?roadType=0&timeType=0&cityCode=110000")#可以换成其他城市代码

s=r.json()

a=[]

for i in range(len(s["tableData"])):

for j in range(len(s["tableData"][i]["coords"])):

a.append([s["tableData"][i]["coords"][j]["lon"],s["tableData"][i]["coords"][j]["lat"],s["tableData"][i]['name'],s["tableData"][i]['index'],s["tableData"][i]['speed']])

c = pd.DataFrame(a)

c.to_csv(t+'road.csv')

time.sleep(300)

商圈代码

import pandas as pd

import time

import requests

while True:

t = time.strftime("%H%M%S", time.localtime())

r=requests.get("http://report.amap.com/ajax/districtRank.do?linksType=3&cityCode=110000")#可以换成其他城市代码

s=r.json()

a=[]

for i in range(len(s)):

for j in range(len(s[i]['coords'][0][0])):

a.append([s[i]['coords'][0][0][j]['lon'],s[i]['coords'][0][0][j]['lat'],s[i]['name'],s[i]['index'],s[i]['speed'],s[i]['number']])

c = pd.DataFrame(a)

c.to_csv(t+'new.csv')

time.sleep(300)

程序运行后,将会每5分钟自动生成csv文件

每一列数据分别代表序号,经纬度,道路名称,车速(km/s)和高德拥堵指数

2)使用密钥的方法

1.申请key

2.查看url

https://restapi.amap.com/v3/traffic/status/circle?location=116.3057764,39.98641364&radius=1500&key=你的密钥&extensions=all

3.代码

import pandas as pd

import requests

r=requests.get("https://restapi.amap.com/v3/traffic/status/circle?location=116.3057764,39.98641364&radius=1500&key=你的密钥&extensions=all")

s=r.json()

a=s["trafficinfo"]["roads"]

x=[]

for i in range(len(a)):

s2=a[i]["polyline"]

s3=s2.split(";")

for j in range(len(s3)):

s4=s3[j].split(",")

x.append([a[i]["name"],a[i]["status"],a[i]["speed"],i,s4[0],s4[1]])

c = pd.DataFrame(x)

c.to_csv('roadss.csv')

4.csv结果  排序、路名、车速、路段id、经度、纬度

0,丹棱街,3,10,0,116.311104,39.9787865

1,丹棱街,3,10,0,116.312195,39.978714

2,丹棱街,3,10,0,116.312408,39.9786949

3,丹棱街,3,10,0,116.31282,39.9786491

4,丹棱街,3,10,0,116.313072,39.9786301

5,丹棱街,3,10,0,116.313423,39.9786263

5.使用arcgis处理后的结果

2.获取高德地图行政边界矢量

1.获取高德地图web服务key

2.行政区域查询API服务地址:

https://restapi.amap.com/v3/config/district?parameters

3.我们以山东省为例,看看山东行政边界

url地址

https://restapi.amap.com/v3/config/district?keywords=山东&subdistrict=0&key=你的密钥&extensions=all

subdistrict=0不返回下级行政区划,共0到3

extensions (base/all)的含义:

base:不返回行政区边界坐标点;

all:只返回当前查询district的边界值,不返回子节点的边界值;

目前不能返回乡镇/街道级别的边界值

4.返回的结果是json,我们看一下形式,使用Notepad++的json查看器

我们要的是polyline,即为行政区边界坐标点

需要注意的是,当一个行政区范围,由完全分隔两块或者多块的地块组成,每块地的 polyline 坐标串以 | 分隔 。我的思路是,先取出polyline部分,再以|分组,接着以;分组,得到一个经纬度的数组。

代码如下:我已将每条线进行了分组,以arcgis便于后续生成线和面(0,"120.903347,38.381733,0")序号,经纬度,组号

import pandas as pd

import requests

r=requests.get("https://restapi.amap.com/v3/config/district?keywords=山东&subdistrict=0&key=你的密钥&extensions=all")

s=r.json()

poly=s["districts"][0]["polyline"]

p=poly.split("|")

x=[]

for i in range(len(p)):

a=p[i].split(";")

for j in range(len(a)):

x.append([a[j].split(",")[0],a[j].split(",")[1],i])

c = pd.DataFrame(x)

c.to_csv('xzqh.csv')

至于如何生成shp格式,这就是arcgis的使用问题了,有问题请找arcgis帮助,哈哈

csv文件前几行

,0,1,2

0,120.900577,38.382,0

1,120.900577,38.382,0

2,120.900577,38.382,0

3,120.900577,38.382,0

4,120.900577,38.382,0

5,120.900577,38.382,0

6,120.900577,38.382,0

生成结果图

3. python获取人口数据(500m网格)GeoQ智图api

1.注册智图GeoQ,获得api的key

2.分析url

url='http://api.geoq.cn/你的密钥/filterservice/regionfilter'

3.筛选条件

values={

"codes":"310000",#城市代码

"extent":[120.9327,30.6014,122.2339,31.8480],#查询空间范围

"inSR":4326,#坐标系编号,默认3857,返回结果也是3857的

"grid":"square",#网格形状

"radius":500,#网格半径,可以更小,最小为250m

"condition":{"pop":[0,1100000]}#筛选条件,照大的写

}

4.关键代码,本次使用python2,因为python3的requests库始终无法识别刷选条件最后一条condition的条件,该条件是GeoQ规定的条件。本次不使用神器pandas,就用自带的numpy来写,数值分别为经纬度,人口数,分组ID

import urllib2

import urllib

import json

import numpy as np

values={

筛选条件

}

requestData = urllib.urlencode(values)

url='http://api.geoq.cn/你的密钥/filterservice/regionfilter'

req=urllib2.Request(url,requestData)

response = urllib2.urlopen(req)

t = response.read()

d = json.loads(t)

d1= d["result"]["features"]

x=[]

for i in range(len(d1)):

for j in range(len(d1[i]["geometry"]["rings"][0])):

x.append([你想要的数据])

a=np.array(x)

np.set_printoptions(precision=10)

np.savetxt("beijing.csv",a,delimiter=",")

 5.使用ArcGIS处理结果,出图

互联网地图矢量数据Python获取方法相关推荐

  1. python下载arcgis地图_互联网地图矢量数据Python获取方法

    原标题:互联网地图矢量数据Python获取方法 慧天地"即可订阅 1.获取高德地图路况信息 1)不使用密钥的方法(5分钟获取一次,只有全国主要城市) 主要利用的网址是 http://repo ...

  2. 世界各国矢量数据的获取方法

    随着中国越来越全球化,科研工作也越来越涉及国外的一些情况,国内的地理数据可以通过全国地理信息资源目录服务系统或者国家地球系统科学数据中心等国内的数据资源网站进行下载和申请,那么国外的数据该如何获取呢? ...

  3. tableau应用实战案例(二)-TABLEAU调用中国地图和Python获取地址的经纬度

    前言 如何在TABLEAU中实现调用国内百度地图或者谷歌地图的功能. 谷歌地图我没用过,以前看过<触手可及的大数据分析工具:Tableau案例集>上面有介绍,大家可以去参考.百度地图调用一 ...

  4. python获取方法的装饰方法_python中的方法和装饰器

    [TOC] 装饰器 python中的装饰器(decorator)是在pep 318中被首次引入,它的本质是一个函数这个函数是接受其它参数为参数,并且用一个新的,修改后的函数作为替换,最常见的装饰器就c ...

  5. python获取方法的装饰方法_python – 在一个方法上得到装饰器名称的内省?

    如果你可以改变你调用装饰器的方式 class Foo(object): @many @decorators @here def bar(self): pass 至 class Foo(object): ...

  6. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

  7. 在Arcmap中加载互联网地图资源的4种方法

    在Arcmap中加载互联网地图资源的4种方法 前一段时间想在Arcmap中打开互联网地图中的地图数据,如影像数据.基础地图数据等,经过简单研究目前总结了四种方法,整理下与大家分享,有些内容可能理解有误 ...

  8. 实战教程!利用Python获取数据,并在地图上批量标注

    我们想要在地图上批量标注某一类的大量点位,该怎么操作呢?没有它的坐标数据,就没有办法批量标注.今天给大家介绍下,来自图新地球用户王泽的原创教程--利用Python获取数据,并在地图上批量标注的方法! ...

  9. 利用高德地图API批量获取地点经纬度和行车线路与OD距离(excel和python)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.excel调取API方法 1.申请一个key 2.excel调用API 二.python方法 计算地址列表中两两之 ...

  10. python过去日期_利用python获取当前日期前后N天或N月日期的方法示例

    前言 最近因为工作原因,发现一个Python的时间组件,很好用分享出来!(忘记作者名字了,在这里先感谢了),下面话不多说,来一起看看详细的介绍吧. 示例代码: # -*- coding: utf-8 ...

最新文章

  1. Linux之查看命令帮助 --help man
  2. //Eclipse 快捷方式
  3. wingide 显示中文 及 配色方案
  4. mysql source防止乱码
  5. 计算机网络实验二:应用层和传输层网络协议分析
  6. 奇妙的数学动图,美到令人窒息!
  7. 小巧Linux发行版本,老机器也不愁
  8. CWE 4.3:强化你的数据自我保护能力
  9. CCS中的cmd命令文件
  10. 【操作系统】—操作系统的发展与分类
  11. 创作短视频怎么去除素材水印?
  12. linux卸载exe文件怎么恢复,linux中误删除程序包恢复实例
  13. js bookmark doubanfm lyrics
  14. 【互联网营销基础知识】新媒体工具亲民替代款有什么?
  15. dpo指标详解买入绝技_极少人知道“DPO”指标,但实战性很强
  16. 拨开字符编码的迷雾--编译器如何处理文件编码
  17. SSM全注解开发的网上商城系统
  18. 两台电脑通过网线直接相连,用以共享文件夹
  19. python爬虫遇到验证码、输入验证码后提醒验证码错误_爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别...
  20. 人脸检测与美颜技术介绍(OpenCV)

热门文章

  1. 中国城市群产业建设风险与投资发展决策建议报告2022版
  2. python接口测试第二期_上海悠悠python接口自动化测试第二期视频教程价值1600
  3. 使用记账软件 记录日常收支并将数据导出表格保存
  4. 域名使用https访问配置
  5. mysql类exadata功能_一些有用的Exadata诊断命令
  6. Java动态代理和静态代理详解
  7. 计算二叉树叶子结点数
  8. C51与MDK共存 Keil5安装教程 WIN10 亲测可用
  9. 电商项目数据库设计 | 参考京东商城详细讲解商品数据库设计
  10. 最新行政区划代码省市区数据库-行政区域查询API