你知道「假的OD線」究竟長啥樣嗎?

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

如這種

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

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

場景設定

基於單個人的職、住位置數據,

在地圖上畫出OD線。

「理想」與「現實」

別人家的OD線

我的OD線

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

「混沌」與「秩序」

「混沌」的剖析

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

「秩序」的建立

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

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

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

「假象」與「真相」

假象:OD線的隱藏

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

1.OD線「立」起來

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

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

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

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

2.OD線「疊」起來

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

小王與小劉的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—熱力圖,分享給大家。

文∣zhuxh

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

推薦閱讀:

數據產品經理的工作類型和能力要求
大數據價值尚未全面呈現 爭奪戰已悄然打響
善意還是齷齪?Facebook如何利用大數據
數據整理(Tidy Data)—翻譯Hadley Wickham的一篇論文
MaxCompute Studio使用心得系列3——可視化分析作業運行

TAG:大数据 | 可视化 | 数据分析 |