GeoHD - 一种用于智慧城市热点探测的Python工具箱
GeoHD - 一种用于智慧城市热点探测的Python工具箱
详细原理请参考:Yan, Y., Quan, W., Wang, H., 2024. A data‐driven adaptive geospatial hotspot detection approach in smart cities. Trans. GIS tgis.13137.
代码下载:下载
1. 简介
在城市数据分析领域,研究对象的空间分布通常呈现出不均匀性,具有明显的空间异质性。密度较高的点数据往往代表着区域内事件的热点。因此,城市区域内热点的探测成为了城市研究的一个焦点话题,对于规划者、研究人员以及管理部门具有重要的价值。以犯罪热点的探测为例,通过对城市犯罪历史数据的分析可以揭示出犯罪活动发生的原因,进而有助于相关管理部门制定更加有效的犯罪预防策略。在过去的研究中,已经有多种经典的聚类算法或热点分析方法被应用于城市热点探测,比如Getis-Ord空间统计、k均值聚类以及核密度分析等。此外,针对特定研究背景,如交通出行、交通事故和犯罪等,许多学者也提出了相应的热点探测方案。尽管已经出现了一些优秀的基于特定背景的热度可视化工具,如基于交通的transbigdata,但当前的热点探测研究仍然存在一些挑战。现有的研究往往局限于单一的研究背景,缺乏完整的热点探测分析方案。此外,现有的地理处理工具主要停留在热度可视化的层面,难以提供精确的热点定位。由于地理空间数据的复杂性,不同背景的研究者可能会面临操作上的困难,而目前的地理信息系统软件如ArcGIS则需要较高的学习成本。因此,迫切需要开发一种普适性且易于操作的开源热点探测工具,以满足不同研究者对于城市热点分析的需求。

2. 功能
GeoHD是一个用于地理空间热点探测、可视化与分析的Python工具包。其主要目标在于提供一个易于使用且适用于不同城市研究背景的热点探测与分析工具。GeoHD的工作原理如图1所示。首先,GeoHD对输入数据进行清晰可视化与统计分析,从而获得核密度估计(KDE)结果。接下来,采用窗口分析方法计算栅格数据的像元最大值表面,然后执行密度场表面与像元最大值表面的地图代数差运算,以得到相减结果,即非负值表面。在此阶段,相减结果中每个窗口中为零的位置即代表当前区域的局部热点位置。完成窗口分析后,采用重分类算法将极值区域与除极值以外的区域分为两类。最终,通过该过程获得的极值区域即为当前区域内事件发生的热点。
目前,GeoHD主要包含以下几种功能:
- 研究数据真实分布的可视化:通过输入点数据,实现对点数据真实地理空间位置的可视化。
- 固定带宽与自适应带宽的核密度分析:实现了经典的固定带宽核密度估计以及优化的自适应带宽核密度估计,同时提供可调节参数与清晰可视化。
- 基于固定带宽与自适应带宽的地理空间热点探测:通过结合密度分析和栅格代数,实现了局部研究热点的提取,最终得到热点探测结果。
- 平面点模式分析:提供了针对热点分布的Ripley G、Ripley F、Ripley J、Ripley K、Ripley L函数图像绘制功能。
- 矩阵网格与六边形网格的热点分析:实现了基于矩阵网格与六边形网格对空间点数据进行统计,并提供清晰可视化。
GeoHD的开发填补了当前热点探测工具在普适性和易用性方面的空白,为城市研究领域提供了一种全面且有效的分析工具。
3. 使用案例
最近一项基于GeoHD的智慧城市下的自适应热点探测的研究证明了GeoHD工具包的实用性。该研究利用哈尔滨市出租车GPS数据和纽约市犯罪数据进行了热点探测。研究表明,这种热点探测方法能够精确识别城市环境中的热点区域,而不是简单地划分热点区域。该方法能够根据数据的空间分布特征动态调整参数,从而提高了热点检测的准确性和相关性。这使得研究者能够进行更精确的小尺度分析,并根据热点的具体地理位置做出及时的事件特定准备和部署。
4. 教程
文档
我们建议您从文档开始您的 GeoHD 之旅。
使用 pip 安装
该软件包在 PyPi 中可用,需要 Python 3.11 或更高版本。可以使用以下方法进行安装:
$ pip install GeoHD
用法
$ cd test
$ python -m test_automation
您还可以在 Jupyter Notebook 中运行test.ipynb
在真实地图上可视化热点:
visualize_shapefile('data.shp', output_image_path='custom_image.png')

解析平面点模式:Ripley G、Ripley F、Ripley J、Ripley K、Ripley L 等。
plot_g_function('data.shp')

将研究区域划分为四边形(六边形)网格,并根据划分区域内点数据的密度实现快速可视化。
create_cell_zones(area_file, crash_file)
create_hex_grid_zones(area_file, crash_file)
create_cell_heatmap(area_file, crash_file)
create_hexagonal_heatmap(area_file, crash_file)

实现固定带宽的核密度分析:
density_raster = process_shapefile(input_file_path)
plot_density_raster(density_raster,output_data_path, *gpd.read_file(input_file_path).total_bounds)
用于实现自适应带宽的核密度分析:
adaptiveKDE(shp_file,output_data_path)

热点识别:
hotspots = extract_hotspots(density_data_path)
visualize_hotspots(np.load(density_data_path), hotspots)
5.引用
github项目地址:如果喜欢的话请给项目一个star
论文请引用:
Yan, Y., 2024. GeoHD: A Python Toolkit for Geospatial Hotspot Detection, Visualization, and Analysis. SSRN Electron. J.
Yan, Y., Quan, W., Wang, H., 2024. A data‐driven adaptive geospatial hotspot detection approach in smart cities. Trans. GIS tgis.13137.
相关文章:
GeoHD - 一种用于智慧城市热点探测的Python工具箱
GeoHD - 一种用于智慧城市热点探测的Python工具箱 详细原理请参考:Yan, Y., Quan, W., Wang, H., 2024. A data‐driven adaptive geospatial hotspot detection approach in smart cities. Trans. GIS tgis.13137. 代码下载:下载 1. 简介 在城市数据…...
记一次Ngnix配置
记一次Ngnix配置 配置Ngnix配置防火墙 假设一个服务器中有一个公网IP、一个内网IP,另外已经部署好后台服务的接口地址为http://内网ip:8088。 配置Ngnix 找到Ngnix的配置文件,通过在Ngnix的安装路径下的 \conf\nginx.conf 文件。 worker_processes 1;…...
2024年国赛高教杯数学建模C题农作物的种植策略解题全过程文档及程序
2024年国赛高教杯数学建模 C题 农作物的种植策略 原题再现 根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略&…...
java基础语知识(8)
类之间的关系 在类之间,最常见的关系有: 依赖(“uses-a”);聚合(“has-a”);继承(“is-a”)。 依赖:一种使用关系,即一个类的实现需要另一个类的协助&#x…...
室内定位精度方案对比
室内定位精度方案对比:成本、开发难度与精度的权衡 索引 引言 Wi-Fi 定位方案 定位原理 成本分析 开发难度 定位精度 蓝牙定位方案 定位原理 成本分析 开发难度 定位精度 超宽带(UWB)定位方案 定位原理 成本分析 开发难度 定…...
Pytorch深度学习教程_5_编写第一个神经网络
欢迎来到《pytorch深度学习教程》系列的第五篇!在前面的四篇中,我们已经介绍了Python、numpy及pytorch的基本使用,并在上一个教程中介绍了梯度。今天,我们将探索神经网络,对于神经网络进行概述并进行简单的实践学习 欢…...
ImportError: cannot import name ‘FixtureDef‘ from ‘pytest‘
错误信息表明 pytest 在尝试导入 FixtureDef 时出现了问题。通常是由于 pytest 版本不兼容 或 插件版本冲突 引起的。以下是详细的排查步骤和解决方案: 1. 检查 pytest 版本 首先,确认当前安装的 pytest 版本。某些插件可能需要特定版本的 pytest 才能…...
改BUG:Mock测试的时候,when失效
问题再现: 这里我写了一测试用户注册接口的测试类,并通过when模拟下层的服务,但实际上when并没有奏效,还是走了真实的service层的逻辑。 package cn.ac.evo.review.test;import cn.ac.evo.review.user.UserMainApplication; imp…...
【自动化脚本工具】AutoHotkey (Windows)
目录 1. 介绍AutoHotkey2. 功能脚本集锦2.1 桌面键盘显示 1. 介绍AutoHotkey 支持Windows安装使用,下载地址为:https://www.autohotkey.com/ 2. 功能脚本集锦 2.1 桌面键盘显示 便于练习键盘盲打 脚本地址:https://blog.csdn.net/weixin_6…...
专题--Linux体系
Linux体系结构相关| ProcessOn免费在线作图,在线流程图,在线思维导图 ProcessOn是一个在线协作绘图平台,为用户提供强大、易用的作图工具!支持在线创作流程图、思维导图、组织结构图、网络拓扑图、BPMN、UML图、UI界面原型设计、iOS界面原型设计等。同时…...
【DeepSeek】Mac m1电脑部署DeepSeek
一、电脑配置 个人电脑配置 二、安装ollama 简介:Ollama 是一个强大的开源框架,是一个为本地运行大型语言模型而设计的工具,它帮助用户快速在本地运行大模型,通过简单的安装指令,可以让用户执行一条命令就在本地运…...
Spring AI + Ollama 实现调用DeepSeek-R1模型API
一、前言 随着人工智能技术的飞速发展,大语言模型(LLM)在各个领域的应用越来越广泛。DeepSeek 作为一款备受瞩目的国产大语言模型,凭借其强大的自然语言处理能力和丰富的知识储备,迅速成为业界关注的焦点。无论是文本生…...
如何在本地和服务器新建Redis用户和密码
文章目录 一. Redis安装二. 新建Redis用户,测试连接2.1 本地数据库2.2 线上数据库2.2.1 安装和配置2.2.2 测试连接 三. 配置四. 分布式 一. Redis安装 Redis安装 可以设置开机自动启动,也可以在去查看系统服务,按[win R],输入命…...
jmeter接口测试(一)
一、什么是接口测试?为什么要做接口测试? 接口测试:就是测试项目和项目之间,模块和模块之间,组件和组件之间的数据交互和权限鉴定(鉴权)。 前后端分离:前后端联调。mock模拟&#x…...
Java-11
淘天集团2025届春季校园招聘在线笔试-研发 1。设有一个顺序共享栈storageArray[70],其中栈X的栈顶指针top1的初值为-1,栈Y的栈顶指针top2的初值为70,通过不断进行入栈操作,直到storageArray数组已满,此时top1 top2 …...
js中常用方法整理
数据类型 typeOf()Number()parseInt()parseFloat()- * / %检测数据类型转换为数字转换为整数类型转换为浮点类型非加法的数字运算toString()Boolean()String()转换为字符串,不能转换undefined/null字符串拼接转换为布尔类型转换为字符串、所有…...
umi react+antd 判断渲染消息提示、input搜索、多选按钮组
记得map里返回的每层遍历结构都要带上key(图里没加,最近在接手react,熟悉中......
Day15-后端Web实战-登录认证——会话技术JWT令牌过滤器拦截器
目录 登录认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 2. 登录校验2.1 问题分析2.2 会话技术2.2.1 会话技术介绍2.2.2 会话跟踪方案2.2.2.1 方案一 - Cookie2.2.2.2 方案二 - Session2.2.2.3 方案三 - 令牌技术 2.3 JWT令牌2.3.1 介绍2.3.2 生成和校…...
【嵌入式常用工具】Srecord使用
文件格式 -Intel 表示hex格式-Motorola 表示S19格式-BINary 表示bin格式 截取指定地址段 srec_cat input.s19 -Motorola -crop 0x80010000 0x80380000 -output output.s19 -Motorola -address-length4填充指定地址段 srec_cat input.s19 -Motorola -fill 0xFF 0x100 0x200 …...
SwiftUI基础组件之HStack、VStack、ZStack详解
文章目录 引言一、HStack(水平堆栈)1.1 基本概念1.2 基本创建1.3 常用属性1.3.1 spacing1.3.2 alignment 二、VStack(垂直堆栈)2.1 基本概念2.2 基本创建2.3 常用属性2.3.1 spacing2.3.2 alignment 三、ZStack(深度堆栈…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
