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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

16 中介者(Mediator)模式

中介者模式 1.1 分类 (对象)行为型 1.2 提出问题 实现一个机场的起飞管理系统,如果由驾驶员们讨论谁先飞,后果可能是灾难性的。 1.3 解决方案 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用&a…

最薄的机身,游最深的海

经济全球化的潮流,势不可挡。 “技术、通讯和全球化,正在消除传统的地理和经济边界,使竞争环境趋于平等。”《世界是平的》作者托马斯弗里德曼预言的"扁平化竞争"正加速演进。 在高端智能手机战场,一场由中国企业主导…

【HarmonyOS Next】鸿蒙监听手机按键

【HarmonyOS Next】鸿蒙监听手机按键 一、前言 应用开发中我们会遇到监听用户实体按键,或者扩展按键的需求。亦或者是在某些场景下,禁止用户按下某些按键的业务需求。 这两种需求,鸿蒙都提供了对应的监听事件进行处理。 onKeyEvent 默认的…

IC设计版图中GDS2文件格式详解

版图中GDS2文件格式详解 目录 什么是GDS2文件?GDS2文件的历史与发展GDS2文件的结构解析GDS2文件的核心元素GDS2 vs. OASIS: 核心差异如何生成与查看GDS2文件?GDS2文件的局限性应用场景总结 什么是GDS2文件? GDS2(Graphic Data …

KMP算法:字符串匹配的智慧跳跃

文章目录 起因:暴力法的致命缺陷暴力搜索的局限性 KMP核心思想:避免重复理解前缀表(PMT)不匹配时的回退机制代码:高效字符串匹配补充:next表和PMT表 暴力法 vs KMP总结:KMP 是如何改变游戏规则的…

上位机知识篇---setuptools

文章目录 前言简介一、核心功能1.依赖管理自动安装依赖版本约束额外依赖组命令行工具插件系统 2.开发模式安装3.资源文件管理4.Egg 分发(已逐渐被 Wheel 取代)5.命名空间包 二、基础用法1. 项目结构示例2. 配置文件 setup.cfg3. setup.py 最小化示例&…

蓝桥杯学习大纲

(致酷德与热爱算法、编程的小伙伴们) 在查阅了相当多的资料后,发现没有那篇博客、文章很符合我们备战蓝桥杯的学习路径。所以,干脆自己整理一篇,欢迎大家补充! 一、蓝桥必备高频考点 我们以此为重点学习…

Go 错误处理与调试:面向对象的入门教程

Go 错误处理与调试:面向对象的入门教程 Go 语言因其简洁、高效和易于并发编程的特性,逐渐成为后端开发的主流语言之一。错误处理是任何编程语言中非常重要的一部分,尤其是在 Go 语言中,Go 提供了一种不同于传统异常处理机制的错误…

Linux探秘坊-------4.进度条小程序

1.缓冲区 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }执行此代码后&#xff0c;会 先停顿两秒&#xff0c;再打印出hello bite&#xff0c;但是明明打印在sleep前面&#xff0c;为什么会后打印呢&#xff1f; 因为&#xff…

基于Python的Diango旅游数据分析推荐系统设计与实现+毕业论文(15000字)

基于Python的Diango旅游数据分析推荐系系统设计与实现毕业论文指导搭建视频&#xff0c;带爬虫 配套论文1w5字 可定制到某个省份&#xff0c;加40 基于用户的协同过滤算法 有后台管理 2w多数据集 可配套指导搭建视频&#xff0c;加20 旅游数据分析推荐系统采用了Python语…

Scrapy:DownloaderAwarePriorityQueue队列设计详解

DownloaderAwarePriorityQueue 学习笔记 1. 简介 DownloaderAwarePriorityQueue 是 Scrapy 中一个高级的优先级队列实现&#xff0c;它不仅考虑请求的优先级&#xff0c;还会考虑下载器的负载情况。这个队列为每个域名&#xff08;slot&#xff09;维护独立的优先级队列&#…

dify-AI 私有部署可修改前端页面

dify文档 官方文档&#xff1a;欢迎使用 Dify | Dify 源码&#xff1a;https://github.com/langgenius/dify.git 安装docker 官网&#xff1a;https://www.docker.com/ 部署服务到docker cd dify cd docker cp .env.example .env docker compose up -d查看效果 http://localh…

PHP基础部分

但凡是和输入、写入相关的一定要预防别人植入恶意代码! HTML部分 语句格式 <br> <hr> 分割符 <p>插入一行 按住shift 输入! 然后按回车可快速输入html代码(VsCode需要先安装live server插件) html:<h1>标题 数字越大越往后</h1> <p…

【Elasticsearch】Retrieve inner hits获取嵌套查询的具体的嵌套文档来源,以及父子文档的来源

Retrieve inner hits 是 Elasticsearch 中的一个功能&#xff0c;用于在嵌套查询或父子查询中&#xff0c;返回导致主文档匹配的具体嵌套对象或子/父文档的详细信息&#xff0c;帮助用户更直观地理解查询结果的来源。 在 Elasticsearch 中&#xff0c;Retrieve inner hits是一…

SpringCloud面试题----eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别

dEureka 和 Zookeeper 都可以提供服务注册与发现的功能,它们的区别主要体现在以下几个方面: 设计理念 Eureka:是基于 RESTful 风格设计的,强调简单、轻量级,旨在为微服务架构提供一种易于使用的服务发现解决方案,注重服务的可用性和灵活性。Zookeeper:最初是为分布式协…

数据库提权总结

Mysql提权 UDF提权是利用MYSQL的自定义函数功能&#xff0c;将MYSQL账号转化为系统system权限 前提&#xff1a; 1.UDF提权条件 &#xff08;1&#xff09;Mysql版本大于5.1版本udf.dll文件必须放置于MYSQL安装目录下的lib\plugin文件夹下。 &#xff08;2&#xff09;Mysql…

“深入浅出”系列之QT:(10)Qt接入Deepseek

项目配置&#xff1a; 在.pro文件中添加网络模块&#xff1a; QT core network API配置&#xff1a; 将apiUrl替换为实际的DeepSeek API端点 将apiKey替换为你的有效API密钥 根据API文档调整请求参数&#xff08;模型名称、温度值等&#xff09; 功能说明&#xff1a; 使…

【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 前面我们已经将进程通信部分讲完了&#xff0c;现在我们来讲一个进程部分也非常重要的知识点——信号&#xff0c;信号也是进程间通信的一…

nginx负载均衡, 解决iphash不均衡的问题之consistent

原因分析 客户端IP分布不均&#xff1a;部分IP段请求集中&#xff0c;导致哈希到同一后端。 服务器数量变动&#xff1a;增删节点时&#xff0c;传统ip_hash未使用一致性哈希&#xff0c;导致分布重置。 哈希键范围过小&#xff1a;例如仅使用IPv4前24位&#xff0c;不同IP可…

[C++]多态详解

目录 一、多态的概念 二、静态的多态 三、动态的多态 3.1多态的定义 3.2虚函数 四、虚函数的重写&#xff08;覆盖&#xff09; 4.1虚函数 4.2三同 4.3两种特殊情况 &#xff08;1&#xff09;协变 &#xff08;2&#xff09;析构函数的重写 五、C11中的final和over…