使用python + arcmap绘制OD期望线
准备数据(因arcmap图层转表格式为xls,为了方便,以下两张数据表为xls格式):
- OD数据表。
数据形式 od.xls
|起点|终点|OD - 图层各区块中心点坐标
数据形式 xy.xls
|城市名称|中心点经度坐标|中心点纬度坐标
arcmap 得到xy.xls
打开地理处理>ArcToolbox>转换工具>Excel>表转Excel,输入表选择需要导出的图层属性表,输出表筛选所需信息得到xy.xls
- py脚本
import pandas as pd
xy = pd.read_excel('C:/abc/xy.xls',encoding="gbk")
od = pd.read_excel('C:/abc/od.xls',encoding="gbk")
new_od_xy=pd.DataFrame(columns = ['city_o','x_o','y_o','city_d','x_d','y_d','人数'])
xy_dict = xy.set_index('city').to_dict('dict')
xx = xy_dict['x']
yy = xy_dict['y']
for item in od.iterrows():
city_o = item[1][0]
city_d = item[1][1]
if city_o in xx.keys() and city_d in xx.keys() and city_o in yy.keys() and city_d in yy.keys():
x_o = xx[city_o]
y_o = yy[city_o]
x_d = xx[city_d]
y_d = yy[city_d]
new_od_xy = new_od_xy.append({'city_o':city_o,'x_o':x_o,'y_o':y_o,'city_d':city_d,'x_d':x_d,'y_d':y_d,'人数':item[1][2]},ignore_index = True)
new_od_xy.to_csv('C:/abc/od_new.csv',encoding='gbk',index = 0)
1、2两张数据表经过python处理之后得到的表od_new格式如下
| 起点 |起点x坐标 |起点y坐标|终点x坐标|终点y坐标|OD
最后一步,绘制xy转线,打开地理处理>ArcToolbox>数据管理工具>要素>xy转线
输入表选择od_new,起点x,起点y,终点x,终点y,ID依次选择x_o,x_d,y_o,y_d,人数,注意xy转线与原图层坐标系对应一致,点击确定即可得到期望线。