共享单车轨迹数据分析:以厦门市共享单车数据为例(五)

news2024/11/15 20:02:40

先来聊聊啥是共享单车电子围栏?

共享单车电子围栏是一种基于地理位置技术的虚拟边界,用于管理和规范共享单车的停放和使用。这种技术通过在地图上划定特定区域,帮助用户了解哪些地方可以停车,哪些地方不能停车,从而减少随意停放带来的城市管理问题;

共享单车电子围栏是指在地图上划定的虚拟区域,这些区域通过GPS或其他定位技术来识别和管理。当用户在这些区域内停放或取用共享单车时,系统会进行相应的管理和监控。

功能和作用

  1. 规范停车

    • 指定停车区域:在城市中划定特定的停车区域,引导用户在这些区域内停放共享单车,减少乱停乱放现象。
    • 禁止停车区域:在一些敏感区域(如学校、医院、公园等)划定禁止停车区域,防止共享单车对这些区域的正常使用造成干扰。
  2. 用户引导

    • APP提示:当用户接近电子围栏区域时,共享单车APP会提示用户当前的位置是否适合停车或取车。
    • 奖励机制:鼓励用户在指定区域内停车,通过积分、优惠券等方式给予奖励。
  3. 运营管理

    • 实时监控:运营方可以通过后台系统实时监控共享单车的分布情况,及时调度车辆,确保供需平衡。
    • 违规处罚:对于在禁止停车区域内停放的用户,可以通过扣分、罚款等方式进行处罚,提高用户的合规意识。

技术实现

  1. GPS定位

    • 共享单车内置GPS模块,实时上传车辆位置信息到服务器。
    • 用户通过APP获取当前位置信息,判断是否在电子围栏区域内。
  2. 地图服务

    • 使用地图API(如Google Maps、高德地图等)绘制电子围栏区域。
    • 通过地图服务获取用户的精确位置信息,判断用户是否在指定区域内。
  3. 数据处理

    • 服务器端接收和处理来自共享单车的实时位置数据。
    • 根据预设的电子围栏规则,判断车辆是否在允许停放的区域内。

我们的重点是如何将共享单车的电子围栏数据转换成可用的图层数据。由于坐标已经是WGS84格式,因此不需要进行坐标系转换。我们先来看一下原始数据及其标签解释

FENCE_ID:电子围栏唯一编号,FENCE_LOC:电子围栏位置坐标串(包括电子围栏所在位置四个顶点的坐标信息,WGS84坐标),数据范围厦门市思明区和湖里区(1.4071万条);

我们要做的就是把电子围栏数据的坐标点进行转化成可用的面图层,为了实现这一效果,我们通过python脚本来完成,注意把读取路径和导出路径改成自己的即可;

完整代码#运行环境Python 3.11

# -*- coding: utf-8 -*-

import pandas as pd
import geopandas as gpd
from shapely.geometry import Polygon
import ast

def parse_fence_loc(fence_loc):
    """
    解析FENCE_LOC列中的字符串,将其转换为列表形式的坐标点。
    
    :param fence_loc: 包含坐标点的字符串
    :return: 坐标点的列表
    """
    return ast.literal_eval(fence_loc)

def calculate_rectangle_bounds(points):
    """
    计算给定坐标点的最小矩形边界。
    
    :param points: 坐标点的列表
    :return: 矩形的五个顶点坐标
    """
    # 初始化最小和最大值
    min_lon, max_lon = float('inf'), float('-inf')
    min_lat, max_lat = float('inf'), float('-inf')

    for lon, lat in points:
        min_lon = min(min_lon, lon)
        max_lon = max(max_lon, lon)
        min_lat = min(min_lat, lat)
        max_lat = max(max_lat, lat)

    # 返回矩形的五个顶点坐标
    return [(min_lon, min_lat), (max_lon, min_lat), (max_lon, max_lat), (min_lon, max_lat), (min_lon, min_lat)]

def process_csv(input_file, output_file):
    """
    处理CSV文件,计算每个围栏的矩形边界,并将结果保存为Shapefile。
    
    :param input_file: 输入CSV文件路径
    :param output_file: 输出Shapefile文件路径
    """
    # 读取CSV文件,指定编码为UTF-8
    df = pd.read_csv(input_file, encoding='utf-8')

    # 创建GeoDataFrame
    # 使用apply方法将FENCE_LOC列中的字符串解析为坐标点,计算矩形边界,并创建Polygon对象
    gdf = gpd.GeoDataFrame(df, geometry=df['FENCE_LOC'].apply(lambda loc: Polygon(calculate_rectangle_bounds(parse_fence_loc(loc)))))

    # 保存为Shapefile,指定编码为UTF-8
    gdf.to_file(output_file, driver='ESRI Shapefile', encoding='utf-8')

if __name__ == "__main__":
    input_file = 'D://data//共享单车.csv'  # 输入CSV文件路径
    output_file = '共享单车电子围栏.shp'  # 输出Shapefile文件路径
    process_csv(input_file, output_file)
    print(f"处理完成,结果已保存到 {output_file}")

为什么需要五个点?

  1. 闭合多边形

    • 在地理信息系统(GIS)中,多边形必须是闭合的,即起点和终点必须相同。这是为了确保多边形是一个封闭的区域,而不是开放的线条。
    • 如果不重复第一个点,多边形将是一个开放的四边形,而不是闭合的矩形。

矩形的五个顶点

  1. 左下角 (min_lon, min_lat)
  2. 右下角 (max_lon, min_lat)
  3. 右上角 (max_lon, max_lat)
  4. 左上角 (min_lon, max_lat)
  5. 左下角 (min_lon, min_lat) - 重复第一个点

因为电子围栏数据仅包含岛内(思明区和湖里区),我们把生成的shp图层导入arcgis/arcgispro里面看一下,可以看出来电子围栏基本上在路网周边分布;

街道周边电子围栏局部放大展示(一);

地铁站出入口周边电子围栏局部放大展示(二);

这些是我们直观看到的结果,我们再来看看一下数据背后的东西,比如共享单车在岛内的投放策略,我们使用ArcGIS/ArcGIS Pro中的【要素转点】工具,将每个电子围栏区域(面层)计算出其中心点。这些中心点代表了每个电子围栏区,同样的检索并使用【核密度分析】工具。通过核密度分析,我们可以生成一个连续的密度表面,显示共享单车在岛内不同区域的集中程度,这里用自然间断点分级法,并将其分为10个等级进行展示;

厦门市人口栅格数据分布;

厦门市2020年12月21日 上午06:00-10:00的出发地订单累计数核密度;

对于人口栅格分析和共享单车订单分析详见 :共享单车轨迹数据分析:以厦门市共享单车数据为例(二)_共享单车轨迹数据处理-CSDN博客

将共享单车电子围栏中心点的核密度图、栅格人口数据分布图和共享单车订单分布图进行横向分析,通过对比三者的分布情况,可以发现它们在空间上存在高度的一致性,表现为高密度区域重合:共享单车电子围栏中心点、人口密集区和高订单量区域在空间上高度重合,表明共享单车的投放策略与人口分布和使用需求紧密相关;

文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。

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

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

相关文章

网关登录校验(2)----网关如何将用户信息传递给微服务

1.微服务获取用户信息 现在,网关已经可以完成登录校验并获取登录用户身份信息。但是当网关将请求转发到微服务时,微服务又该如何获取用户身份呢? 由于网关发送请求到微服务依然采用的是Http请求,因此我们可以将用户信息以请求头…

【数据结构】假设二叉树采用二叉链表存储,编写一棵二又树中序遍历的非递归算法。

编程题: 假设二叉树采用二叉链表存储,编写一棵二又树中序遍历的非递归算法。 分析: 算法描述: 非递归中序遍历二叉树的算法使用栈来辅助实现。首先,从根节点开始,沿着左子树不断向下, 将每个节点压入栈中。当到达最左端节点后,开始出栈并访问节点,接着转向右子树,重…

【Kubernetes知识点】HPA如何控制不同的资源实现自动扩缩容?

【Kubernetes知识点】HPA如何控制不同的资源实现自动扩缩容? 目录 1 概念 1.1 什么是HPA1.2 Deployment 与 HPA 的关系 1.2.1 工作原理 1.3 StatefulSet 与 HPA 的关系 1.3.1 工作原理 2 实验案例:HPA 控制 StatefulSet 进行扩缩容 2.1 部署一个有状态…

7--SpringBoot-后端开发、原理详解(面试高频提问点)

目录 SpringBoot原理 起步依赖 自动配置 配置优先级 Bean设置 获取Bean 第三方Bean SpringBoot原理 内容偏向于底层的原理分析 基于Spring框架进行项目的开发有两个不足的地方: 在pom.xml中依赖配置比较繁琐,在项目开发时,需要自己去找…

使用Anaconda安装pyTorch

1.Anaconda简介 Anaconda 是一个流行的 Python 数据科学和机器学习平台,它简化了包管理和部署,使得安装、运行和升级包及其依赖变得非常容易。Anaconda 通过其内置的 Conda 包和环境管理器,提供了一个强大的环境,用于科学计算&…

OpenAI GPT o1技术报告阅读(3)-英文阅读及理解

✨继续阅读报告:使用大模型来学习推理(Reason) 原文链接:https://openai.com/index/learning-to-reason-with-llms/ 这次我们继续看一个英文阅读理解的案例。 原问题: The following passage is the draft of an excerpt from a contempora…

springboot调用python脚本实现ocr图片文字识别功能

OCR简介: OCR(Optical Character Recognition),即光学字符识别,是一种利用计算机自动识别和解析图像中的文字信息的技术。它能够将纸质文档、图片、照片等载体上的文字信息转化为计算机可编辑和处理的文本数据。 一,准备工作 1,java环境 2,springboot项目 3,python环境 …

【二级C语言考试】自定义数据类型

C语言二级考试——自定义数据类型 十、结构体(即“结构”)与共同体(即“联合”) 用 typedef说明一个新类型。结构体和共用体类型数据的定义和成员的引用。通过结构体构成链表,单向链表的建立,结点数据的输出…

Java中ArrayList和LinkedList的比较

注:Joshua Bloch 就是 LinkedList 的作者 在Java中,ArrayList和LinkedList都是常用的列表实现类,它们都实现了List接口,但在内部工作原理和性能方面有显著差异。 ArrayList:基于动态数组实现。随着元素的增加&#x…

小新-13 2019 Intel款IML版【81UQ】原装出厂Win10系统镜像下载

恢复lenovo联想开箱状态,自带预装OEM系统安装包 链接:https://pan.baidu.com/s/1wwPriBoIwNOAfL-YcX1F7g?pwdg7ki 提取码:g7ki 联想原装出厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软…

如何联系真正的开发者而非公司??

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

T9-猫狗识别2(暂时版qaq)

T9周:猫狗识别2 **一、前期工作**1.设置GPU,导入库2.导入数据3.查看数据 **二、数据预处理**1.加载数据2.可视化数据3.配置数据集 **三、构建CNN网络模型****四、编译模型****五、训练模型****六、模型评估****七、预测**八、总结(暂时) &…

信奥初赛解析:1-3-计算机软件系统

知识要点 软件系统是计算机的灵魂。没有安装软件的计算机称为“裸机”,无法完成任何工作硬件为软件提供运行平台。软件和硬件相互关联,两者之间可以相互转化,互为补充 计算机软件系统按其功能可分为系统软件和应用软件两大类 一、系统软件 系统软件是指…

【Redis入门到精通三】Redis核心数据类型(List,Set)详解

目录 Redis数据类型 ​编辑 1.List类型 (1)常见命令 (2)内部编码 2.Set类型 (1)常见命令 (2)内部编码 Redis数据类型 查阅Redis官方文档可知,Redis提供给用户的核…

【2024/09/20更新】植物大战僵尸杂交版V2.5下载

植物大战僵尸杂交版V2.5 2.5版本更新公告: 增加新关卡– 益智模式–两面夹击模式关卡 挑战模式关卡 增加新铲子–骷髅铲子 --银币购买-挖掉植物触发亡语或召唤骷髅僵尸 增加新植物– 4张白卡植物-通过两面夹击获得 2张金卡植物和4张星卡植物 游戏调整– 调整…

Coggle数据科学 | 科大讯飞AI大赛:玉米雄穗识别挑战赛

本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。 原文链接:科大讯飞AI大赛:玉米雄穗识别挑战赛 赛题名称:玉米雄穗识别挑战赛 赛题类型:计算机视觉、物体检测 赛题任务&…

图的应用(关键路径)

基于你设计的带权有向无环图,写出所有合法的关键路径,并算出关键路径总长度 文字描述:关键路径总长度的现实意义是什么? 1.关键路径 总长度454316 2.现实意义 从源点到汇点的所有路径中,具有最大路径长度的路径称…

MySQL高阶1892-页面推荐2

目录 题目 准备数据 分析数据 总结 题目 您正在为一个社交媒体网站实施一个页面推荐系统。如果页面被user_id的 至少一个朋友喜欢 ,而 不被user_id喜欢 ,你的系统将 推荐 一个页面到user_id。 编写一个解决方案来查找针对每个用户的所有可能的 页面…

感知笔记3:平面和物体检测

识别平面表面:这项技能使机器人能够检测物体通常所在的位置,如桌子和架子。这是搜索物体的第一步。识别物体:一旦您知道在哪里寻找,就必须在场景中识别不同的物体,并根据机器人的位置(坐标系)定…

【STL】pair 与 map:基础、操作与应用

C 标准库中提供了许多用于处理数据结构的容器和工具。pair 和 map 是两个非常有用的工具,广泛应用于存储和处理关联数据。在本文中,我们将详细介绍 pair 与 map 的相关操作,并结合代码实例为读者提供清晰的理解。 pair:成对数据的…