精华内容
下载资源
问答
  • 但是我们还希望加入交通运输轨迹,代码如下: import geopandas as gpd import matplotlib.pyplot as plt import numpy as np import os import pandas as pd import pickle import seaborn as sns path = r"E:\...

    点赞发Nature
    关注中Science

    上一版是直接用了起始位置 + 运输量,代码在这:
    基于距离矩阵的OD图

    但是我们还希望加入交通运输轨迹,代码如下:

    import geopandas as gpd
    import matplotlib.pyplot as plt
    import numpy as np
    import os
    import pandas as pd
    import pickle
    import seaborn as sns
    
    path = r"E:\tencent files\chrome Download\Research\LCA\LCA Coal_fired power plant phaseout\data"
    map_path = r"E:\tencent files\chrome Download\QGIS 3.12\中国基础数据\中国行政区.shp"
    
    trans_2014 = r"coal_transport2014"
    geo_data_file = r"Distance_matrix"
    transport_matrix = r"coal_trasport2014.xlsx"
    mines = "node_mine_pair.xlsx"
    power_plants = "node_power_pair.xlsx"
    file = r"Results.xlsx"
    transport_route_path = os.path.join(path, trans_2014, geo_data_file)
    transport_quantity_path = os.path.join(path, trans_2014, transport_matrix)
    
    def read_gdf_file(transport_route_path, i):
        #读取运输轨迹的pickle文件
        os.chdir(transport_route_path)
        gdf_file_list = os.listdir(transport_route_path)
        with open(gdf_file_list[i], "rb") as file:
            transport_gdf = pickle.load(file)
        return transport_gdf
    
    def read_distance_matrix(transport_quantity_path):
        #读取运输量的二维矩阵图
        trans_mat = pd.read_excel(transport_quantity_path, index_col=0).T.stack()
        return trans_mat
    
    def gdf_concat(transport_route_path, transport_quantity_path, i):
        transport_quantity_df = read_distance_matrix(transport_quantity_path)
        gdf_file_list = os.listdir(transport_route_path)
        transport_quan_pp = transport_quantity_df[int(gdf_file_list[i][:6])]
        transport_route_gdf = read_gdf_file(transport_route_path, i).set_index(
            transport_quan_pp.index
        )
        transport_df = pd.concat([transport_route_gdf, transport_quan_pp], axis=1)
        transport_df_route = transport_df[transport_df.iloc[:, -1] != 0]
        return transport_df_route
    
    def gdf_total(transport_route_path, transport_quantity_path, pp_numbers):
        #读取每个起止位置的运输量
        ls = []
        for i in range(pp_numbers):
            transport_df_route = gdf_concat(
                transport_route_path, transport_quantity_path, i
            )
            ls.append(transport_df_route)
        gdf_total = pd.concat(ls)
        gdf_total.crs = "epsg:32643"
        gdf_total = gdf_total.to_crs("epsg:4326")
        return gdf_total
    
    def CHN_map(map_path):
        # 读取中国行政区域地图
        CHN_adm = gpd.read_file(map_path)
        CHN_adm.to_crs("epsg:4326")
        return CHN_adm
    
    def map_draw(
        transport_route_path, transport_quantity_path, pp_numbers, map_path=map_path
    ):
        fig, ax = plt.subplots(figsize=(16, 16))
        plt.axis("off")
        plt.setp(ax.get_yticklabels(), visible=False)
        plt.setp(ax.get_xticklabels(), visible=False)
        plt.xlim((90, 140))
        plt.ylim((30, 50))
    
        world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
        world.to_crs(epsg=4326)
        world.plot(ax=ax, color="black", edgecolor="black")
        CHN_adm = CHN_map(map_path)
        CHN_adm.plot(ax=ax, color="black", edgecolor="black", linewidth=3)
        CHN_adm.plot(ax=ax, color="black", edgecolor="white", linewidth=2)
    
        transport_gdf = gdf_total(transport_route_path, transport_quantity_path, pp_numbers)
        transport_gdf.plot(ax=ax)
    
    map_draw(
        transport_route_path, transport_quantity_path, len(os.listdir(transport_route_path))
    )
    

    效果图如下:
    在这里插入图片描述

    有不明白的可以私信联系我交流。

    展开全文
  • 基于运输轨迹的图 同时考虑了距离矩阵、运输轨迹、运输量做了图 from matplotlib import rcParams from shapely.geometry import LineString from shapely.geometry import Point from shapely.ops import shared_...

    点赞发Nature
    关注中Science

    unpack 二维距离矩阵为OD数据结构
    基于运输轨迹的图

    同时考虑了距离矩阵、运输轨迹、运输量做了图

    from matplotlib import rcParams
    from shapely.geometry import LineString
    from shapely.geometry import Point
    from shapely.ops import shared_paths
    
    import geopandas as gpd
    import matplotlib.pyplot as plt
    import numpy as np
    import os
    import pandas as pd
    import pickle
    import seaborn as sns
    
    def CHN_map(map_path):
        CHN_adm = gpd.read_file(map_path) #导入中国行政区域地图
        CHN_adm.to_crs("epsg:4326")       #将地图投影转换为经纬度形式
        return CHN_adm
    
    def map_draw(transport_gdf, power_plant_path, map_path=map_path):
    
        fig, ax = plt.subplots(figsize=(16, 16))
        plt.axis("off")   #隐藏横纵坐标轴
        plt.setp(ax.get_yticklabels(), visible=False)   
        plt.setp(ax.get_xticklabels(), visible=False)
        plt.xlim((110, 125))          #设置经度范围
        plt.ylim((32, 42))			#设置纬度范围
    
        CHN_adm = CHN_map(map_path)
        CHN_adm.plot(
            ax=ax, color=(0.95, 0.95, 0.95), edgecolor=(0.90, 0.92, 0.91), linewidth=2.5
        )        #利用rgba值设置地图颜色
        transport_gdf.plot(
            column=np.log(transport_gdf.iloc[:, -1]),
            ax=ax,
            cmap="GnBu",
            linewidth=transport_gdf.iloc[:, -1] / 100000,
        )    #transport_gdf是运输轨迹的GeoDataFrame数据
        mine = gpd.GeoDataFrame(
            [
                Point(list(transport_gdf.geometry.iloc[i].coords)[0])
                for i in range(len(transport_gdf.geometry))
            ],
            columns=["geometry"],
        )    #transport_gdf的起始端点是煤矿位置
        power_plant = gpd.GeoDataFrame(
            [
                Point(list(transport_gdf.geometry.iloc[i].coords)[-1])
                for i in range(len(transport_gdf.geometry))
            ],
            columns=["geometry"],
        ) #transport_gdf中linestring的末端点是电厂位置
        mine.plot(
            ax=ax,
            facecolors="none",
            edgecolors=(0.24, 0.65, 0.35),
            marker="^",  #煤矿点标记形状
            linewidth=2,
            markersize=200,   #煤矿点标记大小
            alpha=0.5,
        )
        power_plant.plot(
            ax=ax,
            facecolors="none",
            edgecolors="r",
            marker="o",
            linewidth=2,
            markersize=200,
            alpha=0.5,
        )
        return fig
    

    图最后的样子大概是这样。
    在这里插入图片描述

    之前想做的transport sankey图最后还是没能找到,求指点。
    在这里插入图片描述
    这是arcgis社区up的一张图。我还没找到python包实现相应的功能。。

    ————————
    我是仁荷大学的经管博士生(我的google scholar, 我的Github),关注能源转型过程中的环境、经济问题。

    专注于分享利用python科研的技巧,欢迎一起交流、学习、合作。

    关于我的博客内容、其他相关的研究问题,有问题可以评论、私信我~

    展开全文
  • 方向明确 地理空间大数据应用研究 3S技术结合人工智能分析 目的与意义 1、社会行为研究: 通过多维大数据空间分析,挖掘出潜在居民出行信息,判断出行场景,分析出行行为规律和不同人群的出行习惯,...1、将python

    方向明确

    地理空间大数据应用研究
    3S技术结合人工智能分析

    目的与意义

    1、社会行为研究:
    通过多维大数据空间分析,挖掘出潜在居民出行信息,判断出行场景,分析出行行为规律和不同人群的出行习惯,进而可以为选址或者规划部门提供技术支持。

    1、交通规划方面:
    通过深度学习算法完成出行方式识别,为基于位置服务、交通规划、智能交通管理、交通决策等方面提供数据及有效决策支持。

    OD空间分析

    提取OD点数据并生成OD线,对其进行查询统计与空间分析;使用OD矩阵生成网络图和OD图进一步分析。
    具体步骤
    1、将python处理得到csv数据转为带投影的shp数据完成空间分析
    2、对映射后OD数据分级渲染
    3、生成OD线
    4、生成OD网络

    原始数据:

    原始数据

    处理后的数据:

    在这里插入图片描述

    将原始数据处理成OD形式

    #coding=utf-8
    import sys
    
    import pandas as pd
    
    sys.path.append(r"lib")
    import csv
    
    def writeCSV(relate_record, src):
        with open(src, 'a', newline='\n') as csvfile:
            writer = csv.writer(csvfile)
            for row in relate_record:
                try:
                    writer.writerow(row)
                except Exception as e:
                    print(e)
                    print(row)
    
    def mergeData(df3,file):
        # cards = pd.read_csv(save + file, usecols=[0],names=['id'])['id'].tolist()
        df3 = df3.groupby('id')
        for name, df4 in df3:
            # if name not in cards:
                i = 0
                one = []
                while i < df4.shape[0] - 1:
                    typeS = df4.iat[i, 5]
                    typeE = df4.iat[i+1, 5]
                    if typeS == 'S' and typeE == 'T':
                        left = df4.iloc[i].tolist()
                        right = df4.iloc[i + 1].tolist()
                        left[len(left):len(left)] = right
                        one.append(left)
                        i += 2
                    else:
                        i += 1
                writeCSV(one,'viaOD1.csv')
    
    df = pd.read_csv('labels.csv')
    # df = df[df.type.isin(['S', 'T'])]
    # df['longitude'] = df['longitude'].map(lambda x: int(x/1000))
    mergeData(df, 'labels.csv')
    tmp_lst = []
    with open('viaOD1.csv', 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            tmp_lst.append(row)
    df = pd.DataFrame(tmp_lst[1:], columns=tmp_lst[0])
    df.columns = ['Numo', 'OLAT', 'OLON', 'OTime', 'OSpeed', 'OType', 'OTrans', 'OName1', 'OName2','Numd','DLAT', 'DLON',
                   'DTime', 'DSpeed', 'DType', 'DTrans', 'DName1', 'DName2']
    df.to_csv('viaod2.csv')
    df1=pd.read_csv('viaod2.csv')
    cols=['TripID']+list(df1.columns)
    df1.index +=1
    df1['TripID']=df1.index
    df2=df1[cols]
    df2.to_csv('BJOD.csv')
    
    data=pd.read_csv('BJOD.csv',usecols=['TripID','Numo', 'OLAT', 'OLON', 'OTime', 'OSpeed', 'OType', 'OTrans', 'OName1', 'OName2'])
    data.to_csv('O.csv')
    data2=pd.read_csv('BJOD.csv',usecols=['TripID','Numd','DLAT', 'DLON','DTime', 'DSpeed', 'DType', 'DTrans', 'DName1', 'DName2'])
    data2.to_csv('D.csv')
    

    按街道和区分组和连接OD

    import csv
    
    import pandas as pd
    
    tmp_lst = []
    with open('BJOD.csv', 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            tmp_lst.append(row)
    df = pd.DataFrame(tmp_lst[1:], columns=tmp_lst[0])
    
    OD_RESULT = df.groupby(['OName1', 'DName1']).count()['TripID'].reset_index()
    OD_RESULT.columns = ['Source', 'Target', 'weight']
    OD_RESULT = OD_RESULT[OD_RESULT['weight'] > 0].reset_index(drop=True)
    OD_RESULT = OD_RESULT.sort_values(by='weight').reset_index(drop=True)
    OD_RESULT.to_csv('GroupOD1.csv')
    
    '''
    根据行政区分组
    '''
    OD_RESULT2 = df.groupby(['OName2', 'DName2']).count()['TripID'].reset_index()
    OD_RESULT2.columns = ['Source', 'Target', 'weight']
    OD_RESULT2 = OD_RESULT2[OD_RESULT2['weight'] > 0].reset_index(drop=True)
    OD_RESULT2 = OD_RESULT2.sort_values(by='weight').reset_index(drop=True)
    OD_RESULT2.to_csv('GroupOD2.csv')
    
    '''
    将街区单元经纬度groupOD1相连接
    '''
    tmp_lst = []
    with open('Road.csv', 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            tmp_lst.append(row)
    Union_Location = pd.DataFrame(tmp_lst[1:], columns=tmp_lst[0])
    Union_Location.columns = ['Source', 'SLng', 'SLat']
    OD_RESULT_LATLON = OD_RESULT.merge(Union_Location, on='Source')
    Union_Location.columns = ['Target', 'TLng', 'TLat']
    OD_RESULT_LATLON = OD_RESULT_LATLON.merge(Union_Location, on='Target')
    OD_RESULT_LATLON.to_csv('OD_LATLON1.csv')
    
    '''
    将行政区经纬度groupOD2相连接
    '''
    tmp_lst = []
    with open('area.csv', 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            tmp_lst.append(row)
    Union_Location = pd.DataFrame(tmp_lst[1:], columns=tmp_lst[0])
    Union_Location.columns = ['Source', 'SLng', 'SLat']
    OD_RESULT_LATLON2 = OD_RESULT2.merge(Union_Location, on='Source')
    Union_Location.columns = ['Target', 'TLng', 'TLat']
    OD_RESULT_LATLON2 = OD_RESULT_LATLON2.merge(Union_Location, on='Target')
    OD_RESULT_LATLON2.to_csv('OD_LATLON2.csv')
    

    北京各个区的OD效果图

    北京各个区的OD效果图

    北京各个街道的OD效果图

    北京各个街道的OD效果图

    如果比较急的话请打开我其他文章获得我的qq

    展开全文
  • python海龟绘图

    2020-09-08 01:02:54
    这是一个对标准库的应用,截图来源于中国大学mooc北京交通大学的python教程 在python中,使用import 保留字: 1. 画布的位置 2. 画笔设置 3. 运动轨迹 4. 运动方向 5. 循环画图 库函数的引用 #1. import <库名&...

    绘制一条蟒蛇

    这是一个对标准库的应用,截图来源于中国大学mooc北京交通大学的python教程

    在python中,使用import 保留字:

    1. 画布的位置
    2. 画笔设置
    3. 运动轨迹
    4. 运动方向
    5. 循环画图

    库函数的引用
    #1.
    import <库名>
    <库名>.<函数名>(<函数参数>)
    
    #2.也可以改成 from turle import *
    setup(650,350,200,200)#省略掉了前面的turtle
    penup()
    
    #3.使用Import和as(避免保留字的冲突)
    import turtle as H
    H.setup(650,350)
    

    图片来自中国大学mooc 北京交通大学python课程

    #pythonDraw.py
    import turtle
    turtle.setup(650,350,200,200)#画布空间
    turtle.penup()
    turtle.fd(-250)
    turtle.pendown()
    turtle.pensize(25)
    turtle.pencolor("green")
    turtle.seth(-40)
    for i in range(4):
        turtle.circle(40,80)
        turtle.circle(-40,80)
    turtle.circle(40,80/2)
    turtle.fd(40)
    turtle.circle(16,180)
    turtle.fd(40*2/3)
    turtle.done()
    
    窗体位置
    turtle.setup(width,height,startx,starty)
    

    后两个参数是相对左上角的位置
    后两个参数是相对左上角的位置

    画笔控制
    画笔设置一直有效,直至下次重新设置
    penup()
    pendown()
    pencolor()
    pensize()
    
    海龟运动
    轨迹
    turtle,circle(r,extent=None)#画圈
    turtle.fd(d)#向前
    turtle.seth(angle)#改变方向
    

    r:圆心在turtle左侧r距离的位置,
    extent:绘制角度,默认是360°整圆

    在这里插入图片描述

    import turtle
    turtle.goto(100,100)
    
    方向

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    循环画图
    for i in range(<次数>)
        语句
    
    展开全文
  • 这个项目演示通过用一部手机,拍摄道路上的一段交通视频,可以提取一些有用的信息。 运行方法: 首先将YOLOv3的权重文件下载并放在yolov3_coco目录下。 wget https://pjreddie.com/media/files/yolov3.weights 如果...
  • python web工程(django)

    2017-09-15 17:52:24
    最近写了一个系统,使用python web开发,结合Django、mysql、html、百度API等开发的GPS轨迹换乘点、交通工具推断系统。 参见:https://github.com/zhuqiuhui/GPS_project 开发环境: django:1.11.4 python:2.7
  • python_计算深圳公交车出行OD

    千次阅读 2020-05-31 16:24:22
    公交车乘客出行OD提取规则:根据“聚类中心-站点”两阶段预测模型,基于乘客公共交通出行路径选择具有规律性及上车站点和前一下车站点通常在相对邻近空间域的假设,对出行站点进行空间聚类构建乘客出行链,基于一种...
  • 在大数据时代,数据思维已开始深刻变革各行各业,从我们的电商消费信息、运动轨迹、社交数据、产品使用习惯,到企业的调研、设计、产品、运营、营销,再到交通、金融、生产制造、公共服务。而由于Python在数据获取、...
  • #从大规模轨迹数据集中估算交通特征。此存储库中的代码是硕士论文的一部分。 无人机从pNEUMA实验获得的轨迹数据被链接到基础网络,以通过放置虚拟回路来获得网络中任何位置的宏观流量特性。 使用代码非常简单,...
  • .3.2 对基本python运算的分析 26 3.3 对搜索算法的分析 28 3.4 hashtable 29 3.5 合并列表 33 3.6 pyplot 35 3.7 列表推导 36 第4章 小世界图 37 4.1 对图算法的分析 37 4.2 fifo实现 38 4.3 stanley milgram 39 4.4...
  • 数据正在变得越来越常见,小到我们每个人的社交网络、消费信息、运动轨迹……大到企业的销售、运营数据,产品的生产数据,交通网络数据……数据分析人才热度也是高居不下,一方面企业的数据量在大规模...
  • 口碑极好的网易云音乐,通过其相似性算法,为不同的人量身定制每日歌单……数据正在变得越来越常见,小到我们每个人的社交网络、消费信息、运动轨迹……,大到企业的销售、运营数据,产品的生产数据,交通网络数据...
  • 口碑极好的网易云音乐,通过其相似性算法,为不同的人量身定制每日歌单……数据正在变得越来越常见,小到我们每个人的社交网络、消费信息、运动轨迹……,大到企业的销售、运营数据,产品的生产数据,交通网络数据...
  • ANTE-Mobility-源码

    2021-03-31 13:43:31
    该项目是使用交通模拟器实施的, 满足了我们理想的交通模拟器的资格。 SUMO的特权包括使用SUMO的NETEDIT工具从头开始构建路线图模型或从导入真实路线图模型所需的所有工具。 此外,SUMO可以使用Python 3.0和进行接口...
  • 毕业设计开发日记 2021/01/22 ... 2021/01/23 推翻从来,不用python写后端了 跟着课程+官方文档去学习...昨天拿到的温州市出租车交通轨迹数据今天打算下载oracle数据库打开.dmp文件试试 我如果要进行数据处理的话还需要
  • (11) ConvLSTM参数详解(Keras)

    千次阅读 2019-06-10 12:08:00
    后台回复“数据”即可获取高达175G的四个月的滴滴GPS数据和滴滴订单数据的获取方式,以及从数据处理(Oracle数据库)、模型构建(机器学习)、编程实现(python)到可视化(ArcGIS)等一系列视频教程。 后台回复...
  • jt808协议解析应用

    2021-06-09 12:18:08
    基于python,构建设备交互服务器,对交通部t808通讯协议做了简单的解析适配,把收到的数据进行转换处理,返回位置,速度,里程等json数据,存储在本地文件,并对设备发送相应的回复;基于python,构建了简单的web...
  • 课程目标: ...还可记录下来通过某个收费站的车数,做交通流量的估散,粗略刻画一辆车的轨迹 南京在主要路口,还有重庆也是,记录路况,然后为交通调动提供服务 高德地图实时路况怎么来的 找一些车,装...
  • 真正吸引我并吸引我最多的是停止检测算法,该算法可以在轨迹中找到被跟踪物体在特定搜索无线电设备(即邻域)中具有特定持续时间(停止)的部分。 在这一点上,例如在交通分析中的城市应用,生物学中的育种行为,...
  • 而船舶避碰终端(AIS)、北斗定位终端等通信导航设备的应用,给海上交通和作业带来了极大便利,但同时存在设备信息使用不规范造成的巨大人身和财产损失,给海上安全治理带来了新的挑战。 本赛题基于船舶轨迹位置数据...
  • 主要涉及的技术点包括运动规划、轨迹规划、速度规划、运动模型。 比较有趣的一些进展包括通过赛车游戏去学习基于网格的运动规划,重量级货车的避障规划,普世的适用于无人驾驶的双轮模型等等。 3. 防碰撞...
  • Python+语言的可视化编程环境的设计与实现.pdf s3c6410中MFC的研究与应用.pdf VB与VC_环境下基于MapX的二次开发比较.pdf VC++环境下快速可重组测控实验系统的开发.pdf VC6_0与MATLAB7_x混合编程方法研究.pdf VC_6_0...
  • Python+语言的可视化编程环境的设计与实现.pdf s3c6410中MFC的研究与应用.pdf VB与VC_环境下基于MapX的二次开发比较.pdf VC++环境下快速可重组测控实验系统的开发.pdf VC6_0与MATLAB7_x混合编程方法研究.pdf VC_6_0...
  • Python+语言的可视化编程环境的设计与实现.pdf s3c6410中MFC的研究与应用.pdf VB与VC_环境下基于MapX的二次开发比较.pdf VC++环境下快速可重组测控实验系统的开发.pdf VC6_0与MATLAB7_x混合编程方法研究.pdf VC_6_0...
  • Python+语言的可视化编程环境的设计与实现.pdf s3c6410中MFC的研究与应用.pdf VB与VC_环境下基于MapX的二次开发比较.pdf VC++环境下快速可重组测控实验系统的开发.pdf VC6_0与MATLAB7_x混合编程方法研究.pdf VC_6_0...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

python交通轨迹

python 订阅