首页 > 其他分享 >基于transbigdata包获取线路和站点的邻接表及shp文件

基于transbigdata包获取线路和站点的邻接表及shp文件

时间:2023-09-22 20:45:12浏览次数:28  
标签:shp transbigdata index stop 表及 member relation line csv

import pandas as pd
import numpy as np
import geopandas as gpd
import transbigdata as tbd
import json
import csv
import networkx as nx
#输入需要的城市
place='深圳'
#输入需要的线路
line_range=[14,15,16,20]
#遍历线路列表,挨个处理
for x in line_range:
    try:
        #使用transbigdata包获取线路和站点
        #注:代码中所有使用文件路径的部分均需要自行设置路径
        line,stop = tbd.getbusdata(place,['地铁{}号线'.format(x)])
        print(stop)
        #将返回的geodataframe文件保存为shp文件,可以用GIS直接打开
        line.to_file('F:/test/shp文件/{}号线线路.shp'.format(x),driver='ESRI Shapefile',encoding='utf-8')#替换为自己的路径
        stop.to_file('F:/test/shp文件/{}号线站点.shp'.format(x),driver='ESRI Shapefile',encoding='utf-8')#替换为自己的路径
        #将geodataframe中的重要信息保存为csv文件
        dataframe_stop = pd.DataFrame({'stationname':stop['stationnames'],'line_name':stop['linename'],'lon':stop['lon'],'lat':stop['lat']})
        dataframe_line = pd.DataFrame({'linename':line['linename'],'line':line['line'],'geometry':line['geometry']})
        num=int(len(stop))
        dataframe_stop.head(num).to_csv("F:/test/站点信息{}号线.csv".format(x),index=False,sep=',',)#替换为自己的路径
        dataframe_line.to_csv("F:/test/线路信息{}号线.csv".format(x),index=False,sep=',')#替换为自己的路径
        data = pd.read_csv(r'F:/test/站点信息{}号线.csv'.format(x),sep=',',usecols=['stationname'])#替换为自己的路径
        #使用transbigdata中的模块构建站点邻接表和距离信息
        metroline_splited = tbd.split_subwayline(line,stop)
        fro = metroline_splited['stationnames']
        target = metroline_splited['stationnames1']
        length = metroline_splited["length"]
        dataframe_table = pd.DataFrame({'from':fro,'target':target,'length':length})
        dataframe_table.to_csv('F:/test/总邻接表.csv',mode='a',index=False,sep=',',encoding='ANSI')
        #未能成功获取报错并储存为txt文件
    except (KeyError,AttributeError,FileNotFoundError):
        print(r'{}号线未能成功获取'.format(x))
        with open("F:/test/Errorlog.txt","a") as log:#替换为自己的路径
            log.write(r'{}号线未能成功获取'.format(x))
            log.write('\n')
            log.close()
        pass
        continue
#根据总邻接表构建邻接矩阵(此步骤可有可无,看个人需求)
try:
    relation_cp = pd.read_csv("F:/test/总邻接表.csv",usecols = ['from','target'],sep=',')#替换为自己的路径
    relation_list = relation_cp.values.tolist()
    print(relation_list)
    member_dict = {}
    member_index = 0
    for name_tuple in relation_list:
        for name in name_tuple:
            if name in member_dict:
                continue
            member_dict[name] = member_index
            member_index += 1
    relation_matrix = [[0 for i in range(len(member_dict))]
                for i in range(len(member_dict))]
    for (x, y) in relation_list:
        x_index = member_dict[x]
        y_index = member_dict[y]
        relation_matrix[x_index][y_index] = 1
    print(relation_matrix)
    with open("F:/test/总邻接矩阵.csv","a",newline='') as csvfile:#替换为自己的路径
        writer = csv.writer(csvfile, delimiter=',')
        for i in relation_matrix:
            writer.writerow(i)
        csvfile.close()
except (KeyError,AttributeError,FileNotFoundError):
    pass

 

标签:shp,transbigdata,index,stop,表及,member,relation,line,csv
From: https://www.cnblogs.com/Vicrooor/p/17723321.html

相关文章

  • SqlServer中查询数据库所有表及其数据总条数和占用空间
    1、查询某数据库中的所有数据表SELECTname数据表FROMsysobjectsWHERExtype='u'ORDERBYname2、查询某数据库中的所有数据表及其数据总条数SELECTa.name数据表,b.rows数据总条数FROMsysobjectsASaINNERJOINsysindexesASbONa.id=......
  • 解决ssh登陆问题sshpass
    一键解决ssh登录密码问题:sshpass的安装与使用原创 运维家 运维家 2023-08-2216:00 发表于北京收录于合集#ssh2个引言 大家好,我是运维家的Linux和Python技术持续学习者。在日常的运维工作中,我们经常需要远程登录服务器进行管理和操作。而对于那些不支持密钥登录......
  • Unity TextMeshPro使用自建中文字体
    TextMeshPro  TextMeshPro是Unity新一代字体,是Unity的最终文本解决方案。它是UnityUIText和旧版TextMesh的完美替代方案。功能强大、易于使用、性能高效。目前TextMeshPro对中文的支持也还可以,不过默认不能用,需要自己成生成。  本文就介绍TextMeshPro中文字体文件的......
  • js实现下载shp文件
    AP!浏览器是不会默认支持shp的相关文件的下载,仅有里面的.shp.xml是支持的,其他的如varshpArr=[".cpg",".dbf",".prj",".sbn",".sbx",".shp",".shp.xml",".shx",];因而需要确保服务器上的配置允许浏览器支持.shp文件的下载 MIME类型......
  • 前端shp文件写到本地时,原生的shp-write存在的不能写入多条数据及中文乱码问题
    shp-write·Doraemon22333/前端-码云-开源中国(gitee.com)参考(1)https://github.com/hwbllmnn/shp-write/tree/maintenance(2)https://blog.csdn.net/qq_37748236/article/details/131804606......
  • 跳表及其Java实现
    跳表及其实现参考https://zhuanlan.zhihu.com/p/339750543importjava.util.Objects;importjava.util.Random;importjava.util.Stack;/***参考https://zhuanlan.zhihu.com/p/339750543*/publicclassSkipListPractice{staticclassSkipNode<T>{S......
  • 2023年8月最新全国省市区县和乡镇街道行政区划矢量边界坐标经纬度地图数据 shp geojso
    发现个可以免费下载全国 geojson 数据的网站,推荐一下。支持全国、省级、市级、区/县级、街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3、Echarts等geojson数据下载地址:https://geojson.hxkj.vip该项目github地址:https://github.com/TangSY/echarts-m......
  • TextMeshPro2.1.6GC优化
    地址:https://github.com/YingMei7531/TextMeshPro2.1.6-GCOptimize参考这个项目进行的TMP优化,简单说就是用对象池降低了GC消耗。原项目是1.4.1,这里做了小修改换成了2.1.6。......
  • Linux 编译安装sshpass
    1、下载地址 wgethttp://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz 2、解压 tarxvzfsshpass-1.05.tar.gz  cdsshpass-1.05.tar.gz  3、编译./configure  make  makeinstall  ......
  • SQ工具|ArcMap中关于土地报备坐标的转换(txt与shp的转换)
    第一部分:shp转txt①界面关键功能介绍红色框中分组字段下拉框是为了解决将多个要素转换至一个txt中的需求,当多个图斑的分组字段具有相同值时,将转换至一个txt文件中;若需每个图斑转换至一个txt文件,选择数据源一个不具有重复值的字段,推荐FID字段。绿色框中为转换后txt文档内的属性......