基于职住表的街道平均通勤距离分析
本教程基于西安职住表数据进行分析,前期数据导入,职住数据处理,职住OD分析在“LINDADADADA"的教程中有详细介绍,本教程从建立基站X,Y坐标开始
主体思路:
投影西安基站与街道底图,建立基站X,Y坐标
将基站X,Y坐标与居住地基站和工作地基站连接
求街道内居民出行总距离
4.求街道内居民总数
- 求出行平均值
1. 投影西安基站与街道,将地理坐标系转为投影坐标系,建立基站X,Y坐标
将西安街道投影为WGS_1984_UTM_Zone_49N坐标系
同理,将基站也投影为WGS_1984_UTM_Zone_49N坐标系
然后建立基站X,Y坐标,在投影后的基站属性表中分别天加新字段X和新字段Y,分别计算坐标
以上为基站X坐标计算方法,注意单位选择米,Y坐标计算方法同理
计算完成后导出数据表,并导入数据库
GIS与数据库连接方法及数据导入见 "LINDADADADA"教程一和三
2. 将基站X,Y坐标与居住地和工作地基站连接
首先,我们通过对数据的处理得出居住与工作基站位置不同的数据表,具体操作方法见 "LINDADADADA"教程二和六
然后,我们需要通过将刚刚导出的表1与表2连接,得出居住地基站坐标和工作地基站坐标
CREATE TABLE geo_connect_project AS
SELECT "weizhiclean".*,"geo project xy".x,y
FROM weizhiclean LEFT JOIN "geo project xy" on bmbm=juzhu
CREATE TABLE geo_connect_project2 AS
SELECT geo_connect_project.*,"geo project xy".x,y
FROM geo_connect_project LEFT JOIN "geo project xy" on bmbm=gongzuo
得出居住地基站坐标和工作地基站坐标
然后根据勾股定理计算居住地与工作地之间的距离
CREATE table jz_distance AS
SELECT geo_connect_project2.*, |/(juzhu_x-gongzuo_x)^2+(juzhu_y-gongzuo_y)^2 AS distance
FROM geo_connect_project2
得出下表
得出距离后,需要根据街道名称将街道内出行的总距离聚类(利用每个出行距离乘出行人数,然后按街道名称聚类)
CREATE TABLE sum_distance AS
SELECT jz_distance.j_jdmc, "sum"(jz_distance.distance*jz_distance.zonghe)
FROM jz_distance
GROUP BY jz_distance.j_jdmc
得出下表
同理,将不同街道内出行总人数按街道名称聚类
CREATE TABLE population_amount AS
SELECT jz_distance.j_jdmc, "sum"(jz_distance.zonghe)
FROM jz_distance
GROUP BY jz_distance.j_jdmc
得出不同街区内总出行距离和总出行人口后将两表按相同街道名称连接
CREATE TABLE distance_amount AS
SELECT sum_distance.*,population_amount.amount
FROM sum_distance LEFT JOIN population_amount on jdmc_start=jdmc_start1
利用街道内总出行距离除以总出行人数及为平均距离
CREATE TABLE distance_amount_average AS
SELECT distance_amount.*, (distance_amount."distance total"/distance_amount.amount) AS average
FROM distance_amount
得出街道内平均通勤距离表