基于職住表的街道平均通勤距離分析
本教程基于西安職住表數(shù)據(jù)進(jìn)行分析靖诗,前期數(shù)據(jù)導(dǎo)入薛窥,職住數(shù)據(jù)處理库倘,職住OD分析在“LINDADADADA"的教程中有詳細(xì)介紹巴元,本教程從建立基站X,Y坐標(biāo)開(kāi)始
主體思路:
投影西安基站與街道底圖舵盈,建立基站X,Y坐標(biāo)
將基站X,Y坐標(biāo)與居住地基站和工作地基站連接
求街道內(nèi)居民出行總距離
4.求街道內(nèi)居民總數(shù)
- 求出行平均值
1. 投影西安基站與街道陋率,將地理坐標(biāo)系轉(zhuǎn)為投影坐標(biāo)系,建立基站X,Y坐標(biāo)
將西安街道投影為WGS_1984_UTM_Zone_49N坐標(biāo)系
同理秽晚,將基站也投影為WGS_1984_UTM_Zone_49N坐標(biāo)系
然后建立基站X瓦糟,Y坐標(biāo),在投影后的基站屬性表中分別天加新字段X和新字段Y赴蝇,分別計(jì)算坐標(biāo)
以上為基站X坐標(biāo)計(jì)算方法菩浙,注意單位選擇米,Y坐標(biāo)計(jì)算方法同理
計(jì)算完成后導(dǎo)出數(shù)據(jù)表句伶,并導(dǎo)入數(shù)據(jù)庫(kù)
GIS與數(shù)據(jù)庫(kù)連接方法及數(shù)據(jù)導(dǎo)入見(jiàn) "LINDADADADA"教程一和三
2. 將基站X,Y坐標(biāo)與居住地和工作地基站連接
首先劲蜻,我們通過(guò)對(duì)數(shù)據(jù)的處理得出居住與工作基站位置不同的數(shù)據(jù)表,具體操作方法見(jiàn) "LINDADADADA"教程二和六
然后熄阻,我們需要通過(guò)將剛剛導(dǎo)出的表1與表2連接斋竞,得出居住地基站坐標(biāo)和工作地基站坐標(biāo)
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
得出居住地基站坐標(biāo)和工作地基站坐標(biāo)
然后根據(jù)勾股定理計(jì)算居住地與工作地之間的距離
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
得出下表
得出距離后,需要根據(jù)街道名稱將街道內(nèi)出行的總距離聚類(利用每個(gè)出行距離乘出行人數(shù)秃殉,然后按街道名稱聚類)
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
得出下表
同理坝初,將不同街道內(nèi)出行總?cè)藬?shù)按街道名稱聚類
CREATE TABLE population_amount AS
SELECT jz_distance.j_jdmc, "sum"(jz_distance.zonghe)
FROM jz_distance
GROUP BY jz_distance.j_jdmc
得出不同街區(qū)內(nèi)總出行距離和總出行人口后將兩表按相同街道名稱連接
CREATE TABLE distance_amount AS
SELECT sum_distance.*,population_amount.amount
FROM sum_distance LEFT JOIN population_amount on jdmc_start=jdmc_start1
利用街道內(nèi)總出行距離除以總出行人數(shù)及為平均距離
CREATE TABLE distance_amount_average AS
SELECT distance_amount.*, (distance_amount."distance total"/distance_amount.amount) AS average
FROM distance_amount
得出街道內(nèi)平均通勤距離表