基于GeoPandas的POI人口数赋值方法,按面提取点数据并赋值

news2024/11/23 1:14:16

基于GeoPandas的POI人口数赋值方法

这个方法是某篇文章中提到的,基于未知兴趣点和街道中心人口点进行的未知兴趣点人口赋值。

我们先来说一下数据,street是街道面数据,里面有一个population字段,用来记录街道总人口值。有一个字段Join_Count表示街道包含的原始点数量。

poi是渔网点数据,由渔网数据点获取邻近500米范围内的原始点(与人口斯皮尔曼系数最高的三类点:交通站点、学校、居民点)叠加而来,有一个属性Join_Count表示在邻接500米缓冲区内的原始点数量。

在这里插入图片描述

我们的目的是:

  • 统计每一个街道内部的点
  • 通过该点与街道人口的关系,计算该点的人口
import geopandas as gpd
path=r"\data"
import numpy as np
import pandas as pd
import math
import random

EDA阶段

  • 查看数据
  • 统一坐标系
poi=gpd.read_file(path+"/poi.json")
street=gpd.read_file(path+"/street.json")
poi.head()
OBJECTIDFID_meshmap4_labelFID_meshmap_poi_jc1Join_CountTARGET_FIDBUFF_DISTORIG_FIDOBJECTID_1NAMEKINDWGS_LonWGS_Latgeometry
012491251216500249216呈贡县中卫小学A702102.77610024.761585POINT (102.77741 24.75828)
122871261231500287231福宝宝幼儿园A701102.78171924.768870POINT (102.77741 24.76728)
233651271265500365265野山药火腿鸡风干腊排骨美食城马金铺店1380102.79626024.789305POINT (102.79541 24.78528)
3436612810266500366266化成路口808B102.80256424.787729POINT (102.80441 24.78528)
453671291267500367267兴盛园1380102.81742624.782900POINT (102.81341 24.78528)
street.head()
OBJECTID_1Join_CountTARGET_FIDnamename_1populationEnameShape_LengQUYU_NAMEIDOBJECTIDNAME_12KINDWGS_LonWGS_LatShape_LengthShape_Areageometry
011740阿拉街道阿拉87545Ala56728.703706官渡321907羊甫车场808F102.79309824.97572256728.7033967.544723e+07POLYGON ((585551.541 2772498.155, 585514.492 2...
121911茨坝街道茨坝86047Ciba32123.282283盘龙13373蓝龙潭808B102.72655425.12739432123.2823733.581656e+07POLYGON ((575100.675 2789697.506, 575084.789 2...
232952大观街道大观48914Daguan6201.573449五华151398白药厂808B102.69430825.0347946201.5736542.080762e+06POLYGON ((569708.611 2771437.444, 569406.681 2...
34183大渔街道大渔23084Dayu38768.162785呈贡433947关高路口808B102.80536924.81449638768.1630192.470458e+07POLYGON ((578718.634 2749972.017, 578715.300 2...
453054滇池国家旅游滇池度假区121943Dianchi21422.100871西山26321海埂808B102.67340624.96237421422.1010002.186529e+07POLYGON ((567755.987 2767210.931, 567731.801 2...
poi.plot()
street.plot()
<AxesSubplot: >

在这里插入图片描述

在这里插入图片描述

poi=poi.to_crs(epsg=4543)
street=street.to_crs(epsg=4543)1
poi.head(1)
OBJECTIDFID_meshmap4_labelFID_meshmap_poi_jc1Join_CountTARGET_FIDBUFF_DISTORIG_FIDOBJECTID_1NAMEKINDWGS_LonWGS_Latgeometrypop
012491251216500249216呈贡县中卫小学A702102.776124.761585POINT (578633.905 2739501.580)0
street.head(1)
OBJECTID_1Join_CountTARGET_FIDnamename_1populationEnameShape_LengQUYU_NAMEIDOBJECTIDNAME_12KINDWGS_LonWGS_LatShape_LengthShape_Areageometry
011740阿拉街道阿拉87545Ala56728.703706官渡321907羊甫车场808F102.79309824.97572256728.7033967.544723e+07POLYGON ((585551.541 2772498.155, 585514.492 2...

按照街道选取与街道相交的点

  • 遍历街道数据,选择每个与街道数据相交的poi
  • 对该poi的人口数据进行更新,依据公式:
    P O I p = S T R E E T p ∗ P O I c o u n t e r S T R E E T c o u n t POI_p=STREET_p*\frac{POI_{counter}}{STREET_{count}} POIp=STREETpSTREETcountPOIcounter
key=street['OBJECTID_1'].unique()
poi["pop"]=[0]*len(poi)
for i in key:
    n=street[street['OBJECTID_1']==i]
    node=n.geometry
    # 这边不知道怎么了,出了点问题,不能用广播,只能这样算了
    for j in range(len(poi)):
        P=poi.iloc[j,:]
        p=P.geometry
        if any(node.contains(p)):
            poi.iloc[j,-1]=int(math.ceil(n.population/n.Join_Count*P.Join_Count))
poi.head()

此时我们可以发现,已经按照人口比例进行赋值了。

OBJECTIDFID_meshmap4_labelFID_meshmap_poi_jc1Join_CountTARGET_FIDBUFF_DISTORIG_FIDOBJECTID_1NAMEKINDWGS_LonWGS_Latgeometrypop
012491251216500249216呈贡县中卫小学A702102.77610024.761585POINT (578633.905 2739501.580)1554.0
122871261231500287231福宝宝幼儿园A701102.78171924.768870POINT (578628.239 2740498.564)1554.0
233651271265500365265野山药火腿鸡风干腊排骨美食城马金铺店1380102.79626024.789305POINT (580437.259 2742503.011)1554.0
3436612810266500366266化成路口808B102.80256424.787729POINT (581347.440 2742508.339)15538.0
453671291267500367267兴盛园1380102.81742624.782900POINT (582257.623 2742513.726)1554.0
poi.to_file(path+"/newPoi.shp")
C:\Users\lenovo\AppData\Local\Temp\ipykernel_27348\2164432190.py:1: UserWarning: Column names longer than 10 characters will be truncated when saved to ESRI Shapefile.
  poi.to_file(path+"/newPoi.shp")

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

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

相关文章

炫技:拼接列表、破碎二维数组——Python sum()函数隐藏技能花式玩法

【学习的细节是欢悦的历程】Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 自学并不是什么神秘的东西&#xff0c;一个人一辈子自学的时间总是比在学校学习的时间长&a…

【k8s金牌知识】k8s升级攻略

学习内容&#xff1a; 提示&#xff1a;不同版本升级略有差异&#xff0c;详见官网&#xff0c;本例是以Ubuntu为例 官方网址&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/ 1、 k8s升级注意事项 &#xff08;1&#xf…

阿里云产品有哪些?阿里云产品种类整理汇总

阿里云是全球领先的云计算及人工智能科技公司&#xff0c;提供云服务器、云数据库、云安全、云存储、企业应用及行业解决方案服务。那么阿里云产品有哪些?本文为大家介绍下阿里云产品方案及阿里云有哪些热门云产品?阿里云主要产品及功能介绍&#xff0c;阿里云产品分为6大分类…

Flink同步Kafka数据到ClickHouse分布式表

公众号文章都在个人博客网站&#xff1a;https://www.ikeguang.com/ 同步&#xff0c;欢迎访问。业务需要一种OLAP引擎&#xff0c;可以做到实时写入存储和查询计算功能&#xff0c;提供高效、稳健的实时数据服务&#xff0c;最终决定ClickHouse什么是ClickHouse&#xff1f;Cl…

[附源码]JAVA毕业设计高校疫情管理(系统+LW)

[附源码]JAVA毕业设计高校疫情管理&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

[附源码]计算机毕业设计springboot社区疫情防控信息管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Android OpenGL ES 学习(五) -- 渐变色

OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投屏 Android OpenGL ES 学习(五) – 渐变色 代码工程地址&#xff1a; https://…

【实习之velocity 三 Vtl-引入资源】

文章目录一、#include1.作用:引入外部资源&#xff0c;引入的资源不会被引擎所解析2.语法:#include(resource)二、#parse作用:引入的外部资源,引入的资源将被引擎所解析语法:#parse(resource)三、define作用:定义重用模块(不带参数)语法:四、evaluate作用:动态计算,动态计算可以…

学习笔记:内存四区

内存分区模型 1内存分区模型 C程序在执行I将内存大方向划分为4个区域 ●代码区:存放函数体的二进制代码&#xff0c;由操作系统进行管理的 ●全局区:存放全局变量和静态变量以及常量 ●栈区:由编译器自动分配释放存放函数的参数值局部变量等 ●堆区:由程序员分配和释放若程序员…

【WSN布局】基于LICHTENBERG算的多目标传感器选择和放置优化问题研究附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

如何改变胆小怕事的性格?

胆小怕事 就是指一个人做事总是十分胆怯&#xff0c;畏畏缩缩&#xff0c;举手投足也不够大气&#xff0c;经常要看别人的脸色&#xff0c;害怕麻烦上身&#xff0c;对强势的人也会显得唯唯诺诺&#xff0c;战战兢兢。胆小怕事 是某种心理问题的表现&#xff0c;或者说性格缺陷…

基于Q-learning方法的地铁列车时刻表重新调度

文章信息《Metro Train Timetable Rescheduling Based on Q-learning Approach》是发表在2020 IEEE 23rd International Conference on Intelligent Transportation Systems (ITSC)上的一篇文章。摘要在地铁系统中&#xff0c;不可预测的干扰会影响正常运行&#xff0c;给乘客带…

什么是短网址?如何调用接口生成短地址?

随着网络应用的深入和普及&#xff0c;网址资源越来越少了&#xff0c;长尾网址也派上用场了&#xff0c;只是网址太长不方便识别与记录。因此&#xff0c;就有了短网址替代长网址的技术接口。 随着SEO的重要性越来越明显&#xff0c;在推广的时候如果把网页链接缩短可以获得更…

【wireshark】如何获取一个设备的IP地址

问题 开发中往往会出现无法知道设备正确的IP地址&#xff0c;从而无法连接到设备。 解决方式&#xff1a; 使用软件工具wireshark来获取设备IP地址。 可以实现不同网段捕获设备IP 具体流程&#xff1a; 1. 下载wireshark抓包程序 https://www.wireshark.org/download.htm…

MySQL日志(undo log 和 redo log 实现事务的原子性/持久性/一致性)

日志的重要性 日志绝对是数据库的核心. 持久化的日志记录了各种重要的信息.数据的恢复需要依赖日志。 慢查询sql语句需要用到慢查询日志。以及错误日志中保存着mysqld数据库服务端在启动过程中发生的重大错误信息... 数据库重要组成 本质上来说是一个文件系统 (两大重要组…

PHP+MySQL基于thinkphp的企业信息销售展示系统的设计

公司企业网站,是一个供为企业推广的平台,是完全的,高速的,开放的,其核心思想是提供一个以自然语言为主的用户界面,让用户能够更好的刚加方便快捷的管理物流信息的一个渠道和平台。本课题的开发工具可以使用PHP开发语言和MySQL数据进行的开发。 该系统的基本功能包括用户注册登录…

JAVA 设计模式篇

JAVA 设计模式篇1、UML类图2、设计原则2.1、开闭原则2.2、里氏代换原则2.3、依赖倒转原则2.4、接口隔离原则2.5、迪米特法则2.6、合成复用原则3、设计模式3.1、单例模式3.1.1、单例模式实现——饿汉式3.1.1.1、静态变量实现3.1.1.2、静态方法实现3.1.1.3、枚举方式3.1.2、单例模…

GRPC远程调用

FAQ | gRPC1. gRPC原理 FAQ | gRPC Asynchronous-API tutorial | C | gRPC 1.1 什么是RPC RPC 即远程过程调用协议&#xff08;Remote Procedure Call Protocol&#xff09;&#xff0c;可以让我们像调用本地对象一样发起远程调用。RPC 凭借其强大的治理功能&#xff0c;成…

Linux 中的文件简单说明

Linux 中的文件简单说明 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;Linux 中的文件简单说明 CSDN&#xff1a;Linux 中的文件简单说明 说明 本文基于 CentOS 7 根目录(/)下文件夹主要作用 [rootlinux /]# ll / total 16 lrwxrwxrwx. 1 root root…

VMOS虚拟机开源,游戏安全面临新挑战

相信大家对虚拟机并不陌生&#xff0c;一台设备可以模拟出多个操作系统&#xff0c;完美解决了不同场景下设备限制问题&#xff0c;还节约了购买软硬件设备的成本&#xff0c;为工作和生活提供了不少便利&#xff0c;得到了广泛的应用。 而虚拟机技术却被游戏黑灰产所利用&…