QGIS计算点到点在底图上的最短路径

该文介绍了使用QGIS软件结合Python脚本,通过分步处理CSV和SHP文件,计算办公楼点到最近地铁站的最短路线及长度。首先,导入办公楼和地铁站数据,然后执行最短线分析。接着,利用Python批量运行点到点的最短路径分析,生成最短线路径文件并计算线段长度。最后,将结果导出到Excel进行整理,可能需要人工筛选不合理的路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

计算若干个办公楼到最近的地铁站的路线长度

输入文件

办公楼点文件(csv),地铁站点文件(csv),道路线(shp)

步骤

1.“图层”→“添加分隔文本图层”,分别添加办公楼点文件(csv),地铁站点文件(csv)。
2.工具箱“矢量分析”→“要素之间最短线”,得到办公楼点和地铁站点之间的最短线shp以及最短距离。
3.将上一步骤得到的点对及其坐标按顺序分别存入csv中,用python脚本批量运行“网格分析”→“最短路径(点到点)”,代码如下:

import csv

with open("你的办公楼点文件路径.csv") as f1:
    work =csv.DictReader(f1)
    sp = [row['xy'] for row in work]  #将点坐标存入“xy”列,横纵坐标之间用,隔开
    #print(sp)
with open("你的地铁站点文件路径.csv") as f2:
    subway = csv.DictReader(f2)
    ep = [row['xy'] for row in subway]
    #print(ep)
for i in range(len(sp)):
    #print(str(i),":",sp[i],",",ep[i])
    parameter_dict = {'INPUT':'你的道路线图路径.shp',
    'STRATEGY':0,'DIRECTION_FIELD':'','VALUE_FORWARD':'','VALUE_BACKWARD':'','VALUE_BOTH':'','DEFAULT_DIRECTION':0,'SPEED_FIELD':'','DEFAULT_SPEED':1,'TOLERANCE':0,
    'START_POINT':sp[i],'END_POINT':ep[i],
    'OUTPUT':'存储生成的最短线路径/short_path/{}.gpkg'.format(i)}
    try:
        processing.run("native:shortestpathpointtopoint", parameter_dict)
        print("第{}个点运行完成".format(i+1))
    except:
        
        print("第{}个点之间没有最短路径".format(i+1))
        continue

4.将生产的最短线路径文件(.gbkg)拖入QGIS中,“矢量通用”→“合并矢量图层”,合并所有最短路径。右键打开合并图形的属性表,“字段计算器”:$length计算出线段长度。
5.整理结果:“图层工具”→“导出到电子表格”,将步骤2、步骤4得到的图层导出为excel。在excel中整理步骤4得到的最短路径长度,没有最短路径的点对用步骤2得到的最短距离代替。

注:步骤4算法生成的最短路径可能存在明显不合理,需要人工筛选。注意统一坐标系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值