您當前的位置:首頁 > 體育

你知道“假的OD線”究竟長啥樣嗎?

作者:由 極海GeoHey 發表于 體育時間:2017-04-18

OD線(Origin-Destination Line),是指連線“起點”(origin)和“終點”(destination)的線,通常用於在地圖上直觀表示某兩個地理位置之間的聯絡,如車輛的行駛軌跡、飛機的航線和人口的遷徙等。結合著炫酷的視覺化效果,大家可能對這樣的OD線印象深刻:

如這種

你知道“假的OD線”究竟長啥樣嗎?

當然,這只是JPG圖片,更多炫酷動態OD線請點選極海博文《玩轉OD線》,但是今天要探討的重點不是OD線的“炫酷”,而是最近在OD線的實踐中的一點小思考,如潛藏在大資料下OD線中的“陷阱”。

線要素中到底是如何隱藏“陷阱”的呢?請跟隨下文一起探其究竟。

場景設定

基於單個人的職、住位置資料,

在地圖上畫出OD線。

“理想”與“現實”

別人家的OD線

你知道“假的OD線”究竟長啥樣嗎?

我的OD線

你知道“假的OD線”究竟長啥樣嗎?

為什麼會有這麼大差別呢?

“混沌”與“秩序”

“混沌”的剖析

小資料量的、簡單的“多對一”或者“一對多”對映的OD線是容易被理解和被視覺化的,而大資料量的“多對多”對映則會出現錯綜複雜的線條,縱橫交織的線條會在多次重疊下變成一片混沌,並且這樣的混沌還容易引起頭腦裡思維的混沌。因此,我們需要尋找一個清晰的思路,讓眾多的OD線在紛雜中井然有序,有條不紊。

“秩序”的建立

多對多對映,並且涉及空間運算,縝密準確地將每一個過程都想清楚是有一定難度的,因此可以先透過畫圖將複雜的問題簡單化,假設小張、小李、小王的“職”、“住”位置連線如下(每條線代表一個人,線段的端點即為職、住的實際位置)

你知道“假的OD線”究竟長啥樣嗎?

遇到這種情況,我們常常會做這樣的處理,將“起點在相同版塊裡”和“終點在相同板塊裡”的線條合併,分別以各版塊的質心作為起點和終點並計數得到一條線上的人數,即由“點到點”變為“面到面”,得到如下效果:

你知道“假的OD線”究竟長啥樣嗎?

以這種思路來解決問題,無疑是很簡便且正確的,但是也隱藏著“陷阱”,一不小心就會得到“假的OD線”。

“假象”與“真相”

假象:OD線的隱藏

OD線的隱藏會出現兩種情況:

1.OD線“立”起來

上面的兩張圖是理想的一般情況,而特殊情況也是存在的,比如說這種:

你知道“假的OD線”究竟長啥樣嗎?

小王住在A地並且就在A地上班,即O和D在同一板塊內,起點和終點分別找到版塊質心以後,畫出的OD線就會“立”起來,變成一個橫截面,因為在獲取位置的時候並沒有區分是不是在本地版塊里居住且上班。並且透過實踐來看,在本地上班通勤的人數是很多的,而這一部分人數還是在地圖上幾乎無法可視化出來的,比如將線條按人數多少進行分級渲染,很可能人數多的那一段線條很少,或者根本“沒人”,如下圖:

你知道“假的OD線”究竟長啥樣嗎?

人數較多的分段只有將OD線粗度調大之後才能在地圖上看到“點”。

針對這種情況,如果O和D都在本地的人不是我們研究的重點,那麼就應該過濾掉,以免影響到後面的資料視覺化效果。

2.OD線“疊”起來

舉個例子來說,OD線“疊”起來是指A到B的線(線段AB)與B到A(線段BA)的線重合,如下圖:

你知道“假的OD線”究竟長啥樣嗎?

小王與小劉的O和D正好相反,在分別找到質心並連線之後就會完全重合,並且不管是透過sql語句還是用gis軟體生成的初始的線都只是一條線段,無法表示出方向性。更重要的是,因為線段AB與線段BA的地理欄位完全相同,假如這時候以“線段AB”的地理欄位來統計A地到B地或B地到A地的人數的時候就會犯下錯誤——將去往相反方向的兩條線段上的人數加和彙總到一條線上,得到“假的OD線”。

真相:OD線是向量

向量是指具有大小和方向的量,透過以上的分析不難得出OD線其實是一種向量,它具有方向性。即使是“立”起來的OD線也分“頭”“尾”,有“向外”和“向內”兩個方向。因此,在gis軟體和資料庫中做關係表的運算過程中要記得帶上OD線的O和D欄位,用向量的思想去理解OD線,比如統計人數的時候應該將O和D都相同的線段上的人數加和彙總(即sum(people_number) group by OD,O,D),這樣才能安全繞過OD線的“陷阱”,減少犯錯誤的機會。

最後,上一張北京某一天的人口職住遷徙OD—熱力圖,分享給大家。

你知道“假的OD線”究竟長啥樣嗎?

文∣zhuxh

對我們感興趣?GeoHey最近在招募對地理大資料感興趣的專業人才,實習和正職都想兼得,詳細請戳GeoHey-招賢納士

標簽: OD  線段  人數  視覺化  混沌