Folium 笔记:使用PopUp突出subzone的空间分布

0 效果图

点开某一个区域后,内容是这个区域的用地类型分布

1 读取数据

import folium
import matplotlib.pyplot as plt
import re
import geopandas as gpd
subzone=gpd.read_file('MasterPlan2019PlanningAreaBoundaryNoSea.geojson')
subzone

2 提取subzone 信息

对description列进行正则表达式操作,提取subzone信息

def extract_name_from_description(description):match = re.search(r"<th>PLN_AREA_N</th> <td>(.*?)</td>", description)#使用正则表达式查找subzone的名字#查找的是' <th>PLN_AREA_N</th> <td>BUKIT BATOK</td>'这一部分内容#BUKIT BATOK 是第一个groupreturn match.group(1) if match else None#返回对应的subzone的名字subzone['subzone_name']=subzone['Description'].apply(extract_name_from_description)
subzone=subzone[['subzone_name','geometry']]
subzone

3 找到地图的中心点,并绘制subzone图

center_sg=subzone.geometry.unary_union.centroid
print(center_sg)
#POINT (103.82073869660411 1.3524404921177333)m = folium.Map(location=(list(center_sg.coords)[0][1],list(center_sg.coords)[0][0]), zoom_start=11)
#绘制地图folium.GeoJson(subzone,style_function=lambda x: {"fillColor": "lightgrey", "color": "blue", "weight": 0.5},).add_to(m)
m
#将subzone数据作为GeoJson添加到map中

4 制造伪数据,四个区域的用地类型分布

data={'JURONG WEST':{'industry':12.1,'residential':20.4,'comercial':1.5,'open space':36.3,'others':100-12.1-20.4-1.5-36.3},'ORCHARD':{'industry':0,'residential':49.1,'comercial':20.2,'open space':20.9,'others':100-0-49.1-20.2-20.9},'BISHAN':{'industry':0,'residential':48.2,'comercial':3.1,'open space':22.4,'others':100-0-48.2-3.1-22.4},'TUAS':{'industry':62.7,'residential':0,'comercial':0,'open space':19.8,'others':100-62.7-0-0-19.8}}

5 绘制饼图

def pie_chart_popup(area_name, data):plt.figure(figsize=(5, 4))plt.pie([data[area_name]['industry'],data[area_name]['residential'],data[area_name]['comercial'],data[area_name]['open space'],data[area_name]['others']],labels=['industry', 'residential','comercial','open space','others'],autopct='%1.1f%%')plt.title('Land use of '+f"{area_name}")#绘制饼图plt.savefig(f'{area_name}'+'.png')return folium.Popup(f'<img src="{area_name}.png">', max_width=265)#Popup就是点这块区域,就会弹出后面的这个html,也就是我们所画的饼图

6 将饼图和folium图结合

for subzone_name in data.keys():row=subzone[subzone['subzone_name']==subzone_name]#找到subzone对应的行folium.GeoJson(row,style_function=lambda x: {"fillColor": "green", "color": "#000000", "weight": 0.5},tooltip=subzone_name,  popup=pie_chart_popup(subzone_name, data)).add_to(m)#在地图中画出这个subzone#tooltip就是鼠标滑过这片区域,就会显示的字#popup就是点击后弹出对应的饼图m.save('subzone_proportion.html')
#保存html

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

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

相关文章

从零开始的stable diffusion

stable diffusion真的是横空出世&#xff0c;开启了AIGC的元年。不知你是否有和我一样的困惑&#xff0c;这AI工具好像并不是那么听话&#xff1f; 前言 我们该如何才能用好stable diffusion这个工具呢&#xff1f;AI究竟在stable diffusion中承担了什么样的角色&#xff1f;如…

分享一个查询OpenAI Chatgpt key余额查询的工具网站

OpenAI Key 余额查询工具 欢迎使用 OpenAI Key 余额查询工具网站&#xff01;这个工具可以帮助您轻松地验证您的 OpenAI API 密钥&#xff0c;并查看您的余额。 http://tools.lbbit.top/check_key/ 什么是 OpenAI Key 余额查询工具&#xff1f; OpenAI Key 余额查询工具是一…

python实现图像的直方图均衡化

直方图均衡化是一种用于增强图像对比度的图像处理技术。它通过重新分配图像中的像素值&#xff0c;使得图像的像素值分布更加均匀&#xff0c;增强图像的对比度&#xff0c;从而改善图像的视觉效果。 直方图均衡化的过程如下&#xff1a; 灰度转换&#xff1a;如果图像是彩色…

露营装备经营商城小程序搭建

近几年露营人群逐渐增加&#xff0c;相应的装备商也多了起来&#xff0c;各种分类商品在一定程度上销量都非常不错&#xff0c;然而传统线下门店经营方面&#xff0c;面对的痛点也不少。 通过【雨科】平台搭建露营装备商城&#xff0c;让客户多场景平台随时购物&#xff0c;多流…

【Java学习之道】线程的概念与作用

引言 今天我们将探索多线程编程的基础概念和作用。对于初学者来说&#xff0c;掌握多线程编程是迈向Java高级技能的重要一步。通过本章的学习&#xff0c;你将了解线程是什么以及它在程序开发中的重要性&#xff0c;为你进一步深入学习和实际工作打下坚实的基础。让我们一起来…

《向量数据库指南》——Milvus Cloud和Elastic Cloud 特性对比

随着以 Milvus 为代表的向量数据库在 AI 产业界越来越受欢迎,诸如 Elasticsearch 之类的传统数据库和检索系统也开始行动起来,纷纷在快速集成专门的向量检索插件方面展开角逐。 例如,在提供类似插件的传统数据库中,Elasticsearch 8.0 首屈一指,推出了包括向量插入和最相似…

【软考】9.2 串/数组/矩阵/广义表/树

《字符串》 一种特殊的线性表&#xff0c;数据元素都为字符模式匹配&#xff1a;寻找子串第一次在主串出现的位置 模式匹配算法 1. 暴力破解法&#xff08;布鲁特-福斯算法&#xff09; 主串与子串一个个匹配效率低 2. KMP算法 主串后缀和子串前缀能否找到一样的元素&#xf…

ARM day9

src/key_it.c #include "key_it.h" #include "led.h" void key_it_config() {//RCC使能GPIOF时钟RCC->MP_AHB4ENSETR | (0x1<<5);//设置PF9 PF7 PF8GPIO输入//PF9GPIOF->MODER & (~(0x3<<18));//PF8GPIOF->MODER & (~(0x3&l…

互联网Java工程师面试题·Java 并发编程篇·第八弹

目录 33、Java 死锁以及如何避免&#xff1f; 34、死锁的原因 35、怎么唤醒一个阻塞的线程 36、不可变对象对多线程有什么帮助 37、什么是多线程的上下文切换 38、如果你提交任务时&#xff0c;线程池队列已满&#xff0c;这时会发生什么这里区分一下&#xff1a; 39、J…

002数据安全传输-多端协议传输平台:配置Oracle数据库-19c及导入数据信息

002多端协议传输平台&#xff1a;配置Oracle数据库-19c及导入数据信息 文章目录 002多端协议传输平台&#xff1a;配置Oracle数据库-19c及导入数据信息1. 数据库准备2. 导入sql脚本2.1 原版Oracle-11g脚本2.2 新版Oracle-19c脚本2.3 命令行导入脚本 3. 删除系统中数据库信息sql…

Git命令大全

1、下载地址 点击进入Git下载地址 2、Git命令大全 git config --global user.name “设置个人用户名”&#xff1a;设置用户信息git config --global user.email “设置个人邮箱” &#xff1a;设置用户信息 本地仓库操作 git config --list&#xff1a;查看配置信息git i…

Java idea查看自定义注解的调用地方

Java idea查看自定义注解的调用地方

SQL语句-中级

一、Mysql软件使用 1.启动/停止Mysql服务器 任务管理器 cmd命令&#xff1a;以管理员的身份打开cmd命令行 net start mysql80//开启net stop mysql80//停止 2.连接与断开Mysql服务器 注意要在bin目录下执行:-u用户名root&#xff0c;-p密码 mysql -u root -p 可能出现的…

Kafka 开启SASL/SCRAM认证 及 ACL授权(二)ACL

Kafka 开启SASL/SCRAM认证 及 ACL授权(二)ACL。 官网地址:https://kafka.apache.org/ kafka authentorization:https://docs.confluent.io/platform/current/kafka/authorization.html 一、开启ZK ACL(可选,内网环境,用户无机器访问权限时) 给kafka meta都加上zk的ac…

【docker - 安装】windows 10 专业版 安装docker,以及 WSL kernel version too low 解决方案

一、开启 Hyper-V 二、下载 docker 三、安装 docker 四、问题 Stage 1&#xff1a;打开 powershell&#xff0c;并执行 Stage 2&#xff1a;下载Linux内核更新包&#xff0c;并安装 Stage 3&#xff1a;将 WSL 2 设置为默认版本 Stage 4&#xff1a;安装所选的 Linux 分…

排序优化:如何实现一个通用的、高性能的排序函数?

文章来源于极客时间前google工程师−王争专栏。 几乎所有的编程语言都会提供排序函数&#xff0c;比如java中的Collections.sort()。在平时的开发中&#xff0c;我们都是直接使用&#xff0c;这些排序函数是如何实现的&#xff1f;底层都利用了哪种排序算法呢&#xff1f; 问题…

互联网Java工程师面试题·Java 并发编程篇·第四弹

目录 39、volatile 有什么用&#xff1f;能否用一句话说明下 volatile 的应用场景&#xff1f; 40、为什么代码会重排序&#xff1f; 41、在 java 中 wait 和 sleep 方法的不同&#xff1f; 42、用 Java 实现阻塞队列 43、一个线程运行时发生异常会怎样&#xff1f; 44、…

Sub-1G射频收发器soc芯片 UM2080F32 低功耗 32 位 IoTP

UM2080F32是基于 ARM Cortex M0 内核的超低功耗、高性能的、单片集成 (G)FSK/OOK 无线收发机的 32 位SOC 芯片。 UM2080F32 工作于200MHz~960MHz 范围内&#xff0c;支持灵活可设的数据包格式&#xff0c;支持自动应答和自动重发功能&#xff0c;支持跳频操作&#xff0c;支持 …

Hi3516DV500 SVP_NNN添加opencv库记录

默认没有带opencv库&#xff0c;但是实际项目中需要用到opencv库&#xff0c;因此添加一下此库&#xff1b; 1&#xff1a;编译opencv源码&#xff0c;这里具体可以参考 海思Hi3516移植opencv以及错误调试_海思hi3516摄像头开发-CSDN博客 2&#xff1a;在工程的根目录下新建…

计算机毕业设计 基于Web铁路订票管理系统 火车订票管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…