GeoDataFrame 应用:公园分布映射至subzone

news2025/1/17 0:47:47

0 问题描述

我们知道新加坡的monument分布:Monuments-Data.gov.sg

我们又知道新加坡的subzone信息: Master Plan 2019 Subzone Boundary (No Sea) - Datasets - Dataportal.asia

我们希望生成一个 dataframe,表示每一个subzone有几个monument

1 读取+处理数据

1.1 moument数据

1.1.1 读取数据

import geopandas as gpd
states = gpd.read_file('monuments-geojson.geojson')
states

 python包介绍:GeoPandas(初识)_UQI-LIUWJ的博客-CSDN博客

 我们发现Description内容过长,显示不完整

于是我们加一行修饰

import geopandas as gpd
import pandas as pd
pd.set_option('max_colwidth',1000)
states = gpd.read_file('C:/Users/16000/Downloads/monuments/monuments-geojson.geojson')
states

1.2 subzone数据

1.2.1 读取数据

subzone = gpd.read_file('ura-mp19-subzone-no-sea-pl.geojson')
subzone

 

 1.1.2 提取subzone、area和region

新加坡的行政区划分成了三级regions, planning areas and subzones(从大到小)

 而在Desctiption中,也有这三个词条

 我们接下来把他们分别提取出来,变成DataFrame的三个column

 python笔记:正则表达式_UQI-LIUWJ的博客-CSDN博客

 python 笔记:函数_UQI-LIUWJ的博客-CSDN博客

#我们使用正则表达式+Lambda 函数 进行subzone、area、region的信息提取

#subzone
i=str(subzone.head(1).Description)
import re
accurate_name_subzone=lambda i:re.findall('<th>SUBZONE_N</th> <td>[\s\S]*?</td> </tr>',i)[0][23:-11]
accurate_name_subzone(i)
#'MARINA EAST'



#area
i=str(subzone.head(1).Description)
import re
accurate_name_area=lambda i:re.findall('<th>PLN_AREA_N</th> <td>[\s\S]*?</td> </tr>',i)[0][24:-11]
accurate_name_area(i)
#'MARINA EAST'


#region
i=str(subzone.head(1).Description)
import re
accurate_name_region=lambda i:re.findall('<th>REGION_N</th> <td>[\s\S]*?</td> </tr>',i)[0][22:0-11]
accurate_name_region(i)
#'CENTRAL REGION'
subzone['subzone']=subzone.Description.apply(accurate_name_subzone)
#提取subzone这一列
subzone['area']=subzone.Description.apply(accurate_name_area)
#提取area这一列
subzone['region']=subzone.Description.apply(accurate_name_region)
#提取region这一列
subzone=subzone.drop(['Description'],axis=1)
#丢弃Description这一列
subzone=subzone[['Name','region','area','subzone','geometry']]
#重新排序subzone各列
subzone

 2 绘制monument在subzone上的分布情况

ax=gpd.GeoSeries(subzone.geometry).plot(figsize=(50,15))
states['geometry'].plot(ax=ax,color='red')

 3 两个dataFrame进行合并

combine=gpd.sjoin(states, subzone, how='left',op="within")
combine=combine.drop(['Description'],axis=1)
combine

每一行就是某个monument对应哪个subzone的信息 

 4 统计每个subzone monument的

subzone['count_monument']=[0]*len(subzone)
#末尾添加一列,表示这个subzone有几个monuument


for i in range(len(combine)):
    subzone.loc[subzone[subzone['subzone']==combine.iloc[i].subzone].index,'count_monument']+=1

#subzone[subzone['subzone']==combine.iloc[i].subzone] 表示monument对应的subzone和哪个subzone对应
#加index是这个subzone在subzone DataFrame上的index

subzone

 

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

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

相关文章

Django REST Framework(DRF)框架之认证Authentication与权限Permission

DRF框架之认证与权限 认证与权限认证(Authentication)权限(Permission) 认证和权限的使用创建用户用于验证配置认证与权限&#xff08;全局&#xff09;视图指定认证与权限&#xff08;局部&#xff09; 自定义权限概述创建自定义权限类使用自定义权限类 使用TokenAuthenticati…

LeetCode二叉树的相关题目

110. 平衡二叉树 方法&#xff1a;递归 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullpt…

漫谈大数据 - HiveSQL总结(一)库表操作

导语&#xff1a;针对hive各种数据库操作&#xff0c;内部表、外部表、分区表、分桶表的表属性查看修改操作以及hive数据的导入与导出详解。 hive简介&#xff1a; hive是基于Hadoop的一个数据仓库工具&#xff0c;用来进行数据提取、转化、加载&#xff0c;这是一种可以存储、…

双系统安装Windowslinux

文章目录 1.1 联想小新windows10重装1.2 宏基暗影骑士windows10重装2.1 ubuntu18.04重装1&#xff09;清理空间并制作U盘启动2&#xff09;ubuntu分区 3.1 ros安装4.1 deb包安装5.1 网络设置6.1 VSCode环境配置 1.1 联想小新windows10重装 bioss设置 ①微软官网制作u盘启动 ②…

微信小程序PHP+python+nodejs+springboot+vue 电影院订票选座系统

管理员的主要功能有&#xff1a; 1.管理员输入账户登陆后台 2.个人中心&#xff1a;管理员修改密码和账户信息 3.会员管理&#xff1a;对注册的会员信息进行删除&#xff0c;查询&#xff0c;添加&#xff0c;修改 4.电影分类管理&#xff1a;对电影的分类信息进行添加&#xf…

python+nodejs+springboot+vue 教学师生互动答疑系统

然后遵循软件常规开发流程&#xff0c;首先针对系统选取适用的语言和开发平台&#xff0c;根据需求分析制定模块并设计数据库结构&#xff0c;再根据系统总体功能模块的设计绘制系统的功能模块图&#xff0c;流程图以及E-R图。然后&#xff0c;设计框架并根据设计的框架编写代码…

浅学WebFlux--构建一个响应式的SpringBoot服务

前言 看惯了SpringMVC&#xff0c;最近在闲来之余抽空了解了一下Spring早已发布并支持的一种新web框架-WebFlux。由于这玩意的使用需要具备的基础是Reactive programming 的理解、Reactor 的基础以及熟练的java8 lambda使用。但是并不影响笔者摸着石头过河……在此做个浅学笔记…

【三十天精通Vue 3】第十二天 Vue 3 过滤器详解(已废弃)

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 引言一、Vue 3 过滤器概述1.1 过滤器的简介1.2 过滤器的作用1.3 过…

创建Vue3.0工程

1.使用 vue-cli 创建 官方文档&#xff1a;创建一个项目 | Vue CLI (vuejs.org) ## 查看vue/cli版本&#xff0c;确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm install -g vue/cli ## 创建 vue create vue_test ## 启动 cd vue_test npm run se…

7年时间,从功能测试到测试开发月薪30K,有志者事竟成

突破自己的技术瓶颈并不是一蹴而就&#xff0c;还是需要看清楚一些东西&#xff0c;这里也有一些经验和见解跟大家分享一下。同样是职场人士&#xff0c;我也有我的经历和故事。在工作期间&#xff0c;我有过2年加薪5次的小小“战绩”&#xff08;同期进入公司的员工&#xff0…

番外12:ADS导出到AD变为PCB文件

番外12&#xff1a;ADS导出到AD变为PCB文件并嘉立创制板 番外12&#xff1a;ADS导出到AD变为PCB文件&#xff0c;此处的示例为功率放大器&#xff01; STEP 1: 从ADS导出dxf文件 打开制作好的版图文件&#xff0c;在原有基础上打好散热孔和固定孔&#xff0c;散热孔半径0.63…

PCB阻焊桥存在的DFM(可制造性)问题,华秋一文告诉你

PCB表面的一层漆&#xff0c;称为阻焊油墨&#xff0c;也就是PCB线路板阻焊油墨。阻焊油墨是PCB线路板中非常常见、也是主要使用的油墨&#xff0c;一般90%都是绿色&#xff0c;但也有杂色油墨&#xff1a;红色、蓝色、黑色、白色、黄色等。 阻焊油墨的作用就是绝缘&#xff0…

反射:替对象执行方法

反射&#xff0c;可不只是利用Class创建对象哟&#xff0c;更重要是替对象执行方法&#xff01;关于反射创建对象&#xff0c;它可以提供一种通用的机制&#xff0c;对任意Class对象得到它的实例&#xff0c;而不需要import。 举个例子&#xff0c;Spring底层就是利用反射为我…

各种文字生成图片的AIGC模型(openAI、谷歌、stable、Midjourney等)

1 前言 AIGC&#xff0c;全名“AI generated content”&#xff0c;又称生成式AI&#xff0c;意为人工智能生成内容。例如AI文本续写&#xff0c;文字转图像的AI图、视频等。 本文主要描述文字生成图片的模型。而且目前扩散模型&#xff08;Diffusion Models&#xff09;流行…

CANoe使用记录(一):新建Canoe工程

目录 1、概述 2、新建工程 2.1、新建工程界面 2.2、查看License 2.3、添加DBC文件 2.4、测量窗口 2.5、通道用量 2.6、通道匹配 2.7、硬件通道配置 2.8、状态监控 1、概述 Canoe是德国Vector公司推出的一款总线开发设备&#xff0c;主要用于总线类的开发、仿真、测试…

【Python】【进阶篇】二十六、Python爬虫的Scrapy爬虫框架

目录 二十六、Python爬虫的Scrapy爬虫框架26.1 Scrapy下载安装26.2 创建Scrapy爬虫项目1) 创建第一个Scrapy爬虫项目 26.3 Scrapy爬虫工作流程26.4 settings配置文件 二十六、Python爬虫的Scrapy爬虫框架 Scrapy 是一个基于 Twisted 实现的异步处理爬虫框架&#xff0c;该框架…

【Java 数据结构】单链表经典面试题 (动图解析)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

Redis问题

一、认识Redis 1. 什么是 Redis&#xff1f; Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。Redis 提供了多种数据类型来支持不同的业务场景&#…

vue-seamless-scroll无缝滚动组件使用方法详解+解决轮播空白缝隙问题(最后面)

下载安装 1.npm npm install vue-seamless-scroll --save 2.yarn yarn add vue-seamless-scroll 使用 1、全局注册 import Vue from vue import scroll from vue-seamless-scroll Vue.use(scroll) //或者 //Vue.use(scroll,{componentName: scroll-seamless}) 2、局部注册 im…

刘强东的“百亿补贴” 被指“雷”声大雨点小

京东集团2022年财报显示&#xff0c;2022年第四季度京东收入为2954亿元&#xff0c;同比增加7.1%&#xff0c;与2021年四季度23%的同比增速确有不小的差距。前三季度对应的同比增速分别为17.95%、5.44%和11.35%&#xff0c;与2021年相比均有回落。从财报中可以看出&#xff0c;…