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

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

时间:2024-09-20 20:51:54浏览次数:14  
标签:min 为例 lon 围栏 lat 共享 单车

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

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

共享单车电子围栏是指在地图上划定的虚拟区域,这些区域通过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博客

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

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

标签:min,为例,lon,围栏,lat,共享,单车
From: https://blog.csdn.net/weixin_45812624/article/details/142381105

相关文章

  • 浅谈在C#中调用COM组件——以文件夹选择器为例
    浅谈在C#中调用COM组件——以文件夹选择器为例【文/张赐荣】在现如今的这个时代,提到跨语言调用或者系统级操作,许多开发者第一时间会想到.NET、WebAPI等现代技术。然而,不得不说,COM组件这门技术可能在许多年轻开发者的学习清单中早已被“扫进角落”了。毕竟现如今.NET、WebAPI......
  • Centos7挂载共享文件夹
    一、共享文件夹的配置1、需要先在windows下创建一个文件夹2、跟着下图的步骤做就可以(这里我的虚拟机是已经安装完成的) 3、在Liunx下打开一个终端,输入以下命令 ,显示你刚才创建的文件夹vmware-hgfsclient 二、挂载共享目录 1、在/mnt下创建hgfs文件夹,作为共享目......
  • 快速上手高德JS API——以可视化公交站点线路为例
    前言在利用高德地图进行开发时,我们经常需要使用不同的API来实现特定的功能。为了帮助开发者快速定位所需API并掌握正确的使用方法,本文将以可视化任意公交站点路线为例,分享相关经验。根据需求粗略匹配参考示例在开始写代码我都会思考一下该功能的实现逻辑是什么:1、通过什么方式......
  • 基于CNN-BiGRU-Attention的共享单车租赁预测研究(数据可换)(Python代码实现)
                  ......
  • springboot共享自习室管理系统—计算机毕业设计源码55732
    摘 要随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设共享自习室座位管理系统。本设计主要实现集人性化、高效率、便捷等优点于一身的共......
  • SwiftData 共享数据库在 App 中的改变无法被 Widgets 感知的原因和解决
    0.问题现象我们watchOS中的App和Widgets共享同一个SwiftData底层数据库,但是在App中对数据库所做的更改并不能被Widgets所感知。换句话说,App更新了数据但在Widgets中却看不到。如上图所示:我们的App在切换至后台之前会随机更新当前的驻场英雄,而驻场英雄......
  • Linux | 进程间通信:管道、消息队列、共享内存与信号量
    文章目录《深入理解进程间通信:管道、消息队列、共享内存与信号量》一、进程间通信介绍(一)进程间通信目的(二)进程间通信发展(三)进程间通信分类二、管道(一)什么是管道(二)匿名管道(三)管道特点(四)命名管道三、共享内存(一)共享内存简介(二)共享内存数据结构(三)共享内存函数四、消息队......
  • 什么软件可以共享屏幕?电脑远程屏幕共享软件推荐!六款总有一款是你的菜!
    在远程办公和在线协作中,屏幕共享是一项必不可少的功能,尤其是在演示文稿、技术支持或协同工作时,能够直接展示电脑屏幕内容,大大提升沟通效率。无论是为了实时演示、远程操作,还是共享重要的文件与任务,选择一款适合的屏幕共享软件至关重要。以下是几款值得推荐的电脑远程屏幕共享......
  • 基于QGIS 3.16.0 的OSM路网矢量范围裁剪实战-以湖南省为例
    目录前言一、相关数据介绍1、OMS路网数据2、路网数据3、路网图层属性 二、按省域范围进行路网裁剪1、裁剪范围制定2、空间裁剪  3、裁剪结果 三、总结前言        改革开放特别是党的十八大以来,我国公路发展取得了举世瞩目的成就。国家高速公路网由“7射、11纵、18横......
  • 基于JSP高校研招信息共享系统(前台:用户,后台:学生、学校、管理员)
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例八、一站式毕设支持服务结语......