数据来源:通过www.flickr.com/services/api接口抓取带地理标记的flickr图片及属性数据,筛选年份,经过数据清洗,得到样本数据。

使用软件:python 3

需求:得到热点区域AOI

参考文献

1.《基于地理标记照片的北京市入境旅游流空间特征》

2. https://www.cnblogs.com/pinard/p/6208966.html

具体思路:

首先将数据进行整理、清洗;然后使用Python scikit-learn中的DBSCAN聚类方法,选择合适的搜索半径,以及个数点,得到聚类结果;求出没个聚类点的中心位置,就可得到热点区域AOI。

聚类DBSCAN算法:

DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数(ϵϵ, MinPts)用来描述邻域的样本分布紧密程度。其中,ϵϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵϵ的邻域中样本个数的阈值。

    假设我的样本集是D=(x1,x2,...,xm)(x1,x2,...,xm),则DBSCAN具体的密度描述定义如下:

    1) ϵϵ-邻域:对于xj∈Dxj∈D,其ϵϵ-邻域包含样本集D中与xjxj的距离不大于ϵϵ的子样本集,即Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}, 这个子样本集的个数记为|Nϵ(xj)||Nϵ(xj)| 

    2) 核心对象:对于任一样本xj∈Dxj∈D,如果其ϵϵ-邻域对应的Nϵ(xj)Nϵ(xj)至少包含MinPts个样本,即如果|Nϵ(xj)|≥MinPts|Nϵ(xj)|≥MinPts,则xjxj是核心对象。 

    3)密度直达:如果xixi位于xjxj的ϵϵ-邻域中,且xjxj是核心对象,则称xixi由xjxj密度直达。注意反之不一定成立,即此时不能说xjxj由xixi密度直达, 除非且xixi也是核心对象。

    4)密度可达:对于xixi和xjxj,如果存在样本样本序列p1,p2,...,pTp1,p2,...,pT,满足p1=xi,pT=xjp1=xi,pT=xj, 且pt+1pt+1由ptpt密度直达,则称xjxj由xixi密度可达。也就是说,密度可达满足传递性。此时序列中的传递样本p1,p2,...,pT−1p1,p2,...,pT−1均为核心对象,因为只有核心对象才能使其他样本密度直达。注意密度可达也不满足对称性,这个可以由密度直达的不对称性得出。

    5)密度相连:对于xixi和xjxj,如果存在核心对象样本xkxk,使xixi和xjxj均由xkxk密度可达,则称xixi和xjxj密度相连。注意密度相连关系是满足对称性的。

效果图:

           

Python代码:


import numpy as np,pandas as pd
from sklearn.cluster import DBSCAN
from shapely.geometry  import MultiPoint
import geopandas
import shapefilefrom matplotlib import pyplot as plt
plt.title("北京市游客地理标记城区空间聚类结果")
plt.scatter(latlngs[:,0],latlngs[:,1], s=1, c="black", marker='.')
border_shape=shapefile.Reader(shape_path)
border_shape_2=shapefile.Reader(shape_path_2huan)
border_shape_5=shapefile.Reader(shape_path_5huan)
border=border_shape.shapes()
border_2=border_shape_2.shapes()
border_5=border_shape_5.shapes()
#聚类中心区域
def get_centermost_point(cluster):centroid = (MultiPoint(cluster).centroid.x, MultiPoint(cluster).centroid.y)print(centroid)return tuple(centroid)
# #渲染聚类结果
for border_detail in clusters:x ,y= [],[]for cell in border_detail:x.append(cell[0])y.append(cell[1])plt.scatter(x, y,marker='o')
plt.show()

基于地理位置标记的空间聚类分析(python-DBSCAN)相关推荐

  1. 基于JTS实现对空间绘图的WTK语言标记

    在项目中用到在地图上绘图进行区域标记,为了便于存储这些区域的绘图信息,以及方便其他GIS工具识别,于是采用WTK标记语言作为空间图形存储,可以方便地将点.圆.多边形的经纬度转成可识别的字符串存储到数据 ...

  2. (LBS)基于地理位置的社交应用大战

    社交是人们生活的一部分,当工作越来越忙碌的都市人的社交遭遇时间与空间的障碍的时候,解决这些问题的方法随之涌现. 最开始是单纯的社交网站,注册,填写信息,交友,主要在于用户主动的寻找.圈子形式,社区形式 ...

  3. deap软件结果分析_绿港科技之窗:基于InDel标记的黄瓜种质资源遗传多样性分析...

    基于InDel标记的黄瓜种质资源遗传多样性分析 | 摘要 | 为明确黄瓜自交系间的亲缘关系,筛选适宜作杂交亲本的种质资源,利用InDel标记对48份黄瓜自交系进行遗传多样性分析. 结果表明,68对In ...

  4. 基于地理位置服务(LBS)技术平台

    以互联网为代表的新媒体诞生以来,技术平台的更新便令人目不暇接,从最初以Blog Bus.新浪为代表的博客,发展到以人人网.开心网为代表的SNS,以及以新浪微博为代表的Twitter,各种平台的不断涌现 ...

  5. 基于模糊等价关系的模糊聚类分析

    基于模糊等价关系的模糊聚类分析 http://blog.csdn.net/laviewpbt/article/details/1361460 假设R是X上的模糊等价关系,则对任意的a,R的a-截集是X ...

  6. 各个省肺炎感染类型及人数可视化R语言基于地理位置进行分面

    (各个省肺炎感染类型及人数可视化)R语言基于地理位置进行分面 不知道大家有没有看过这样的图:乍一看还以为是元素周期表(哈哈哈,化学都还给老师了).实际上他这个是根据美国各个州的地理位置进行分面(在R语 ...

  7. 基于强化学习的坦克大战python语言实现

    这个项目是基于一个人工智能算法(基于全连接线性BP网络的增强学习模型)代理玩经典游戏坦克大战. 在个游戏中,机器控制的坦克主要目标是射击敌方坦克并保卫自家的根据地.         游戏中坦克的动作空 ...

  8. 基于树莓派的追光系统(python)

    目录 前言 一.材料 二.硬件--控制逻辑 1.主设备的准备 1.启用树莓派的i2c设备 2.安装python-smbus 2.从设备的准备 1.BH1750 2.L298N驱动芯片 3.云台的准备 ...

  9. 使用AR.js打造WebAR入门课程(三)——基于地理位置的示例

    前面的两篇文章都是写的关于基于图像的示例,这一篇文章来写一下基于地理位置的示例. 基于地理位置也很好理解,就是通过经纬度来确定目标点,然后在目标点显示你想要的的东西. 首先还是直接放一下官方的示例代码 ...

  10. 基于TF-IDF编码进行文本聚类分析:文档成对相似性计算、层次聚类(链接矩阵、树形图dendrogram绘制、聚类标签)

    基于TF-IDF编码进行文本聚类分析:文档成对相似性计算.层次聚类(链接矩阵.树形图dendrogram绘制.聚类标签) 目录

最新文章

  1. Python一键转Java?“Google翻译”你别闹
  2. hdu1874 畅通project续 最短路 floyd或dijkstra或spfa
  3. Chrome 打印PDF技巧
  4. App字体大小不随系统改变而改变
  5. PAT甲级1149 Dangerous Goods Packaging :[C++题解]哈希表、逆向思维
  6. linux下打开配置文件命令_Linux下用户权限相关命令
  7. ASP.NET Web API 简介
  8. SQLServer 与 MySQL
  9. bool可以是java得标识符嘛_Java-标识符--修饰符--关键字
  10. 解决EasyDSS、EasyNVR流媒体RTMP、HLS(m3u8)、HTTP-FLV播放提示H5播放错误的问题
  11. 详解.NET IL代码
  12. 宏碁Aspire 4560试用手记
  13. 力扣143 链表重排
  14. mkv格式用什么播放器打开?视频转换器怎样操作
  15. PTA 新浪微博热门话题 详细题解 附额外样例
  16. 2021年茶艺师(初级)考试资料及茶艺师(初级)模拟试题
  17. 深度精简版XP如何安装IIS
  18. Java13都要来了,你还不了解Java8的新(旧)特性?
  19. IE浏览器快速切换各个版本
  20. 百度网盘不限速(小白亲测)

热门文章

  1. (day 22 - 全排列问题 dfs+剪枝+回溯 )剑指 Offer 38. 字符串的排列
  2. 阿里云centos 7下安装jdk
  3. Node.js:模块化思想中一个Javascript文件分析以及exports 和 module.exports的区别
  4. SQL:解决PostgreSQL数据库传输出现ERROR: invalid byte sequence for encoding “UTF8“: 0xe5 0x9b 0x20
  5. Java中操作SFTP服务器上的文件下载上传
  6. Java中的几种设计模式:创建型模式,结构型模式
  7. Twitter数据抓取的方法(二)
  8. 那年,三支玫瑰的花语是我们每人一支
  9. 树的存储_ 双亲表示法 及 双亲孩子表示法
  10. [论文评析] ArXiv-2021,Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convo