Arcgis点集之间两两连线

论文需要想画一个用线段粗细表示两个地市之间的交通量的图,本来打算用echarts,但是发现arcgis自己本身就可以画,所以找了一下教程。

这里参考了:https://www.cnblogs.com/orchidLan/p/8903588.html

1、生成结果表

但是不怎么习惯用VBA,所以用python写了一个可以制作源表的程序,如下:

import pandas as pd


def xy2line(tablepath):  # 单一站点+XY坐标表的地址
    xy_table = dict(pd.read_excel(tablepath))
    sn, sx, sy = xy_table["STATIONNAME"], xy_table["STARTX"], xy_table["STARTY"]  # 坐标表的字段名是STATIONNAME、STARTX、STARTY
    station_num = len(sn)
    result_dict = {"STARTSTATIONNAME": [], "STARTX": [], "STARTY": [], "ENDSTATIONNAME": [], "ENDX": [],
                   "ENDY": [],"SNEN":[]}  # 输出表的字段
    for i in range(station_num - 1):  # 循环
        for j in range(i + 1, station_num):
            result_dict["STARTSTATIONNAME"].append(sn[i])
            result_dict["STARTX"].append(sx[i])
            result_dict["STARTY"].append(sy[i])
            result_dict["ENDSTATIONNAME"].append(sn[j])
            result_dict["ENDX"].append(sx[j])
            result_dict["ENDY"].append(sy[j])
            result_dict["SNEN"].append(sn[i]+","+sy[j])
    df = pd.DataFrame(result_dict)  # 转成DF输出到excel
    df.to_excel("xytoline2.xlsx", index=False)


if __name__ == "__main__":
    xy2line("xytoline1.xlsx")

其中的坐标表xytoline1.xlsx示例如下:

结果表xytoline2.xlsx示例如下:

之后在arcgis中,ArcToolbox→Data Management Tools→Features→XY To Line,并输入相应参数即可,我的是中文版本的,所以直接在搜索里面搜“XY转线”就能找到这个工具了。

2、添加起始点信息

如果只要线要素的话,就到此为止了,然而我还想根据地点输入两个地市之间的流量。

但是用arcgis生成之后发现,生成的线要素的属性表只显示xy坐标,如果指定id的话也只是显示一个地点的信息,无法显示两个地点的信息,所以我又加了加了“SNEN”,表示“STARTSTATIONANME,ENDSTATIONNAME”,使其作为“XY转线”工具中可选的ID字段,之后分割成两个字段。

之后在生成的线要素图层中打开属性表,新建STARTNAME和ENDNAME两个字段,右击字段,选择“字段计算器”,选择python解析程序:

STARTNAME的代码为:!SNEN!.split(',')[0]

ENDNAME的代码为:!SNEN!.split(',')[1]

这样就可以根据我想要的交通流量表愉快地进行表关联啦!

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值