Uber,一家正經搞可視化的公司

優步(英語,Uber)是一家在全球範圍內提供網約車服務的美國公司,進入中國市場不足三年就被滴滴出行收購了,從此告別中國市場,逐步變成了只停留在科技版新聞中的一家公司,自此滴滴出行成為中國網約車市場的領導者,繼續發展壯大網約車規模。雖然在生活中我們無法使用uber的服務,但是在地理信息領域,Uber的身影從未消失過。由於Uber本身積累了大量的出行數據,包括浮動車以及人的行動軌跡,如何對這些大範圍的空間數據進行可視化成為了其本身的一個需求,因而他們對應開發了一個專業的可視化工具deck.gl,並且以開源的形式發佈到社區。藉助其本身得天獨厚的數據優勢和優秀的可視化效果,這一項目迅速在github社區中吸引了大量giser關注。理論上這應該只是一個網約車主業的副產品,屬於順帶手做的項目,沒想到的是Uber在空間可視化這個方向上似乎找到了感覺,一發不可收拾,陸陸續續開源了一系列可視化產品,搞得不亦樂乎,在最近的一些更新中,更可以看出Uber越來越像一個大數據可視化公司了 。

Uber,一家正經搞可視化的公司

Uber的deck.gl產品

1.可視化開發框架-Deck.GL

deck.gl從功能特點上是一個空間專題可視化開發框架,它提供了一系列預定義好的圖層樣式,包括 ScatterplotLayer, ArcLayer, TextLayer, GeoJsonLayer等等。圖層的輸入源通常是一組JSON對象,每個圖層都提供了一個高度靈活的API用於定製數據的渲染樣式。在最近的一次更新中可以看到deck.gl的例子中增加了一個Tile3D圖層的樣例,例子展示了使用deck.gl加載3d tiles格式的點雲數據,看到這兒還是有點稍稍的驚喜的,這Uber是打算玩真的了,逐步增加對OGC標準格式的支持,就是往著平臺生態的方向發展了。市面上大多數專業GIS平臺聲稱實現了對3D Tiles的支持,無非就是通過將Cesium源代碼改一改集成進來,就像大多數框架整合Three.js那樣,從這個例子上看,它比大多數的專業公司更專業。

Uber,一家正經搞可視化的公司

deck.gl支持的cesium ion服務

順著這個例子看了一下deck.gl倉庫的更新情況,這個功能其實是通過兩個主要的模塊實現的:一個是deck.gl擴展的Tile3DLayer;另外一個同樣是Uber開源,但是被分離到一個單獨倉庫的loader.gl;loader.gl這個項目其實是個“幕後英雄”,主要躲在後面處理數據相關的加載和解析。

2.數據格式解析、加載框架-Loader.GL

我們首先看一下loader.gl在主頁上的介紹:

<code>This module contains framework independent visualization focused file format loaders (parsers) with emphasis on 3D and geospatial formats./<code>

本模塊包含獨立於框架的可視化文件格式加載程序(解析器),重點是三維和地理空間格式。

Uber,一家正經搞可視化的公司

loader.gl支持的數據格式

這個模塊主要的目的主要就是為了將可視化和數據部分分離,從而實現解耦和複用,這樣就可以很方便的將loader.gl集成到其他的可視化框架中,從可支持的數據格式列表上可以看出loader.gl主要支持如上圖這些類型的空間數據格式,比較有意思的格式主要就是三維和矢量切片兩種:在三維方面就包括了3d-tiles、i3s (Indexed SceneLayers)和gltf這三種web端常用的格式,目前3d-tiles已經初步集成到deck.gl中了,目前的繼承方式是通過直接集成Cesium ion服務的方式,而不是直接通過加載tileset文件的方式,i3s目前在可視化部分還沒看到相應的內容。由於整個庫是dom無關的,所以loader.gl也可以直接應用到Node中進行本地數據的處理;對於矢量切片這邊直接支持的是mvt,這個其實是一個很微妙的變化,之前deck.gl數據源的支持主要都是geojson這種非分片格式,但是這種格式的數據通常無法進行海量數據的加載、集成以及可視化,如果在數據加載器層面可以全面的矢量切片化,那它就可以具備和底圖mapboxgl一樣的大面積空間數據的調度能力,所以從這個角度觸發,對mvt的支持對deck.gl的未來來說也是一個不小的進步,另外和這個框架類似的L7、Echarts也面臨著同樣的問題,這塊的完善對於整體生態會有一個不小的推動作用。

3.在線製圖框架--Kepler.GL

面向可視化的空間框架通常都是採用輕量級的參數化的配置的思路:data+style,典型的代表就是echarts,所有的樣式都是通過一個簡單option就可以完成。和mapbox的設計採用一脈相承的設計方案,deck.gl也是採用這種一體化配置思路,這就出現了一個問題,按照這種模式其實開發的門檻是很低而且大多都是一些繁雜的代碼配置工作,這樣開發工作效率是很低的,那如何能夠降低上手門檻同時提高效率,自然而然想到的就是通過可視化配置工具來實現,這也是這部分的主角“Kepler.gl”。這其實都沒什麼新鮮的,現在市面這種類似的BI圖表訂製工具一抓一大把,比較出名的就是阿里的datav和百度的sugar,但是對於空間可視化的定製,目前除了幾家在線地圖廠商提供了相應的工具外,開源的做的最好的就應該是Kepler.gl了。


Uber,一家正經搞可視化的公司

kepler.gl產品

Kepler.gl是一個與數據無關的、基於web的高性能應用程序,用於大規模地理定位數據集的可視化探索。在Mapbox GL和deck.GL的基礎上,kepler.GL可以渲染代表數千次旅行的數百萬個點,並可以實時執行空間聚合。

Kepler.gl是一個React組件,它使用Redux來管理其狀態和數據流。它可以嵌入到其他React Redux應用程序中,並且高度可定製。

4.在線數據編輯框架--Nebula.GL

上面的Kepler.gl主要是基於Deck.gl實現了樣式的可視化編輯和配置其實在這之前一個完整的可視化作品還需要一個數據的編輯,首先保證數據的可用性。下面就開始介紹另外一個底層同樣是基於deck.gl旨在解決數據編輯的框架“nebula.gl”。

Uber,一家正經搞可視化的公司

用於空間數據編輯的nebula.gl

nebula.gl重最核心的功能就是“JSON editor”,這個功能是通過在deck.gl的基礎上擴展一類可編輯的圖層實現的,它既可以實現二維數據的編輯同樣也可以實現對三維拉伸體的編輯,它主要的特點包括:

  • 最大的渲染和編輯性能,不需要複雜的應用邏輯(如將整體的數據分割成區塊去處理等)。
  • 目標性能:在GeoJSON有效負載中以60fps的速度編輯(例如拖動子對象),支持100K個要素對象(點、線或多邊形)。
  • 處理GeoJSON角點情況,例如在添加多邊形時自動將對象類型從多邊形更改為多多邊形。
  • 完全啟用3D(例如,可以使用WebGL z-buffer,以便渲染的線條被其他幾何體正確遮擋)。
  • 與deck.gl和所有deck.gl層無縫集成,允許GeoJSON編輯與豐富的三維可視化交互。
  • 處理事件處理的所有方面,包括觸摸屏支持。

綜合上面的內容介紹,我們可以看一下Uber在開源GIS可視化方面的佈局,隨著需求的明晰這塊的版圖應該會越來越完整:

Uber,一家正經搞可視化的公司

uber可視化框架圖

Uber在退出中國後,將主要的目標關注在自動駕駛領域,進一步的拓展自身的業務邊界,對應開源的產品也以相關方向的居多,比如致力於無人駕駛數據仿真的streetscape.gl等等,目前國內的大多數廠商也都在致力於無人駕駛相關的內容,連和Uber業務模式一致的滴滴也是在國內取得了高精地圖甲級資質,開始發力無人駕駛領域。在連接和智能這個舞臺上的玩家越來越多,也會有越來越多的公司會參與到“人-空間-關係”這個鏈條上,創造一些不一樣的東西,而這些東西才是我們當年在課本上學習到、理解到的地理大數據應該有的模樣,這些公司才是真正的大數據可視化公司!


分享到:


相關文章: