记录:

  • 使用百度地图api进行各类兴趣点的划分
  • 将研究区域利用arcgismap进行网格的划分和渔网经纬度范围的导出
  • 将网格的范围与兴趣点坐标进行匹配与计算.
  • 利用所获得的区域的兴趣点的频率进行方格区域功能的判定

百度地图提取兴趣点信息

首先,在百度地图开放平台获取百度地图JavaScript API.这部分可以参考这里

获取到百度地图的唯一服务密钥AK之后,根据百度地图的官方文档,

https://api.map.baidu.com/place/v2/suggestion?query=天安门&region=北京&city_limit=true&output=json&ak=你的ak

下面是部分参数的解释与属性值:

参数 格式 备注
query 超市 搜索兴趣点的关键词
region 南京 地区范围
coord_type WGS84 采用的坐标的类型
ak E4805d16**********707cdc962045 开发者访问密钥

下面是使用返回的json文件来获取的自动化脚本

import sys
import requests  #导入requests库,这是一个第三方库,把网页上的内容爬下来用的
import time
ty=sys.getfilesystemencoding()  #这个可以获取文件系统的编码形式## 1. 基本参数设置:lat_1 = 32.010402 # 南京市左下纬度118.711692,32.010402
lon_1 = 118.711692 # 南京市左下经度
lat_2 = 32.099151 # 南京市右上纬度
lon_2 = 118.834149 # 南京市右上经度118.834149,32.099151las = 0.01  # 爬取时划分网格的经纬度间隔
ak='yourak' # 根据自己在百度地图注册平台上申请的AK
place = r'公园' # 爬取的POI类型,可以是学校、政府、超市、商场、小区、餐饮店等等,这里以政府为例## 2. POI区域划分,按照经纬度间隔0.01度,将不同URL存入一个列表中print ('*******************{}POI开始获取****************'.format(place))
urls=[] #声明一个数组列表
lat_count=int((lat_2-lat_1)/las+1)
lon_count=int((lon_2-lon_1)/las+1)
for lat_c in range(0,lat_count):for lon_c in range(0,lon_count):for i in range(0,20):page_num=str(i)url = 'https://api.map.baidu.com/place/v2/search?query=餐饮店&region=南京&page_size=20&page_num='+str(page_num)+'&output=json&ak=yourak'urls.append(url)
print ('url列表读取完成')## 3. 为了方便看结果,这里设置了些参数total_before = 0
total = 0 # 获取总条数
label = 0 # 查看是否获取到数据的标志
count_20 = 0 # 查看每页超过20条的页数
K = 0 # 运行出错的断点数,代表第多少次循环urls = urls[K:] # 防止出现意外,比如在百度地图获取的数据达到上限,就会终止服务,这里的K主要是为了从当前断点处继续爬取,所以需要根据自己程序终止断点设置;
count_xunhuan = len(urls) # 循环次数
count_xunhuan2 = count_xunhuan # 还剩循环次数,主要让自己知道大概有多少循环,每次都打印下,对程序运行时间有个大致了解;# 4. 创建文件以及将爬取到的数据读入文件f=open(r'C:\Users\HP\Desktop\result6.csv','a',encoding='gbk') # 根据爬取的POI类型创建文件
print("+++++++++++爬取需循环{}次++++++++++++".format(count_xunhuan))
for url in urls:time.sleep(1) # 为了防止并发量报警,设置了一个10秒的休眠。认证后就不需要了html = requests.get(url) # 获取网页信息data = html.json() # 获取网页信息的json格式数据total_before = totalprint(data)for item in data['results']: jname = item['name'] # 获取名称jlat = item['location']['lat'] # 获取纬度jlon = item['location']['lng'] # 获取经度jadd = item['address'] # 获取详细地址jarea = item['area'] # 获取所在区或县j_str = jname + ',' + str(jlat) + ',' + str(jlon) + ',' + jadd + ',' + jarea + '\n' # 以逗号格式,将数据存入一个字符串print(j_str)f.write(j_str) # 将数据以行的形式写入CSV文件中total = total + 1 # 获取的数据记录数label = 1 # 表示每个小网格是否爬取到数据,如果为1,则表示获取到数据,执行下面的if语句,如果为0,则表示没有获取到数据;count_xunhuan2 = count_xunhuan2 - 1 # 循环次数减一,方便查看了解循环进度if label == 1:print("需循环{}次, 已循环{}次, 还剩{}次循环结束".format(count_xunhuan, count_xunhuan-count_xunhuan2, count_xunhuan2))print('新增{}条数据'.format(total-total_before))if total-total_before == 20:count_20 = count_20 + 1 # 查看获取到20条数据的页数,因为百度地图限制每页获取20条数据,如果该网格区域超过的话,也是爬取到20条,所以这里设置count_20查看下没有爬取完整的网格数,如果过多,则最好修改las经纬度间隔;print("---------已获取{}条数据----------".format(total))label = 0
print("每页新增超过20条的页数:{}".format(count_20))
f.close()

利用arcgis进行区域的方格划分

地图要素的采集,使用bbbike的OpenStreet Map划分地图范围,提取范围内的土地利用数据.
使用折线划分所要研究的区域的范围,进行区域的划分,这里使用渔网的功能参考这篇博文

获取的网格经纬度范围与兴趣点坐标进行匹配计算

利用区域划分方格的经纬度范围比较获取的兴趣点的范围,进行区域的功能判定,这里使用的标准是:

注意兴趣点与方格的坐标系相统一.百度api获取的是WGSA-84坐标系.


出自:基于空间格网的城市功能区定量识别_骆少华.
使用的自动化脚本如下:

# Package
import numpy as np
import pandas as pd
import csv
Div = pd.read_csv(r'C:\Users\HP\Desktop\grid.csv',encoding='gbk')
Data = pd.read_csv(r'C:\Users\HP\Desktop\result1.csv',encoding='gbk')# Defineing
x_max = Div['Longitude_min']
x_min = Div['Longitude_max']
y_up = Div['Latitude_up']
y_down = Div['Latitude_down']
x = Data['WGS_long']
y = Data['WGS_lat']
# main
num=0
nums=[]
for i in range(420):for j in range(3948):df = (x[j]>x_min[i])&(x[j]<x_max[i])&(y[j]>y_down[i])&(y[j]<y_up[i])if df == True:num = num+1nums.append(num)
df = pd.DataFrame(nums)
df.to_csv(r'C:\Users\HP\Desktop\hope.csv')

利用百度地图进行城市功能区域划分相关推荐

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

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

  2. android 支付宝 地图,利用百度地图实现支付宝“到位”功能(地图模式)

    Hello,大家好,郭老司机又来话痨啦((/- -)/.作为一个芝麻信用分762的穷苦青年,本想着,终于可以在支付宝上,光明正大的勾搭坦诚相见的妹子们,谁知道被和谐了,互联网套路啊(ノಠ益ಠ)ノ彡┻━ ...

  3. android开发百度地图坐标偏差,利用百度地图Android sdk高仿微信发送位置功能及遇到的问题...

    接触了百度地图开发平台半个月了,这2天试着模仿了微信给好友发送位置功能,对百度地图的操作能力又上了一个台阶 我在实现这个功能的时候,遇到一些困难,可能也是别人将会遇到的困难,特在此列出 1.在微信发送 ...

  4. 利用百度地图的路书功能实现汽车实时定位

    最近公司做的一个app项目需要用到百度地图实时定位功能,app项目是用ionic做的,所以用的也是百度地图web版.具体需要实现的功能类似于导航的时候有个小车在地图上随着实时位置移动,本功能不需要导航 ...

  5. 百度地图利用位置提供服务器,利用百度地图API获取当前位置信息的实例

    利用百度地图API可以做很多事情,个人感觉最核心也是最基础的就是定位功能了.这里分享一个制作的JS可以实现登录网页后定位: var map; var gpsPoint; var baiduPoint; ...

  6. python 接入百度地图数据包下载_Python爬虫-利用百度地图API接口爬取数据并保存至MySQL数据库...

    首先,我这里有一份相关城市以及该城市的公园数量的txt文件: 分析-02.png 其次,利用百度地图API提供的接口爬取城市公园的相关信息. 所利用的API接口有两个: 1.http://api.ma ...

  7. java安卓百度地图查找便利店_Android 百度地图POI搜索功能实例代码

    在没介绍正文之前先给大家说下poi是什么意思. 由于工作的关系,经常在文件中会看到POI这三个字母的缩写,但是一直对POI的概念和含义没有很详细的去研究其背后代表的意思.今天下班之前,又看到了POI这 ...

  8. AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

  9. AngularJS进阶 十九 在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

最新文章

  1. 招聘带来的Silverlight团队技能指标
  2. 分布式框架-日志系统思路及实现
  3. java方法生命周期_Java线程的第二种实现方式以及生命周期
  4. 安装mysql 1045_mysql安装出现error Nr.1045
  5. C++11 现代C++风格的新元素(转)
  6. 微软开源的Web测试和自动化神器 Playwright
  7. 《101 Windows Phone 7 Apps》读书笔记-ALARM CLOCK
  8. javascript第四弹——变量、作用域、内存
  9. 下载python教程-零基础Python教程全集下载.pdf
  10. JAVA中读取配置文件以及修改配置文件
  11. 扫普通二维码打开小程序,可进入体验版
  12. ios开发/iphone开发 (收藏)
  13. 啦啦啦啦啦啦啦啦啦啦啦啦
  14. C++程序设计案例实训教程第9章
  15. 网页看视频没有声音怎么办
  16. CAD中怎么绘制攒尖屋顶?CAD设计攒尖屋顶技巧
  17. 计算机学习(四)基本电路原理——实现反相控制
  18. HIVE 列转行 字段分组截取随笔#collect_list/collect_set
  19. 【小贴士】合肥工业大学本科毕业答辩tips
  20. 报错Caused by: java.lang.IllegalStateException: duplicate key: spring

热门文章

  1. 【BFS】推箱子问题
  2. android 雷达搜索动画,Android实现微信雷达辐射搜索好友实例(逻辑清晰实现简单)...
  3. 智慧水务物联网云平台解决方案
  4. qq空间找不到服务器或dns错误,能上QQ,打不开网页,多次修复DNS ,有时还是不行,重启一下就又好了...
  5. 用c语言编写运动控制程序,运动控制卡C程序示例.docx
  6. python 导入图片
  7. 截获QQ数据包 截获QQ聊天记录
  8. 对非自动化测试的自动化支持
  9. matplotlib设置中文字体
  10. python perl r_PHP Python Ruby Perl