天天看點

地理資料可視化探索——SLS的地圖演變之路

前言

伴随着阿裡雲日志服務(SLS)面向的客戶群體不斷變化,接入的日志資料種類日益增多,地理類資料成為了日志資料分析中越來越常見的一類資料形式。資料可視化應用的火爆發展,地理資料的可視化也萌發出了大量的需求,大規模地理資料可視化分析,從業務上來看一直是個難點,地理資料的存儲,計算,分析,可視化,産品應用等各個方面都需要綜合起來考慮。本文将簡單介紹一下日志服務在地理類日志資料可視化分析中的探索,并提供部分目前支援的地理類可視化工具demo。

有哪些地理類資料?

地理資料是直接或間接關聯着相對于地球的某個地點的資料,地理類資料種類繁多,涉及的知識面也各不相同。比較學術類的就不展開,感興趣的可以去同學可以了解一下GIS系統,就我們生活中常見的地理類資料無非就以下兩種:

1. POI資料(Point of interest/Point of information)

POI資料,又稱為資訊點/興趣點,常常出現在地圖表達中,一個 POI 可代表一棟大廈、一家商鋪、一處景點等等。通過POI搜尋,完成找餐館、景點、找廁所等等的功能,生活中最常見的描述一個位置點的方式:

  • 阿裡巴巴飛天園區
  • 浙江省杭州市西湖區雲夢路與河山街交叉口西北角
  • 浙江省杭州市餘杭區文一西路969号淘寶城一期

通過自然語言去描述一個位置資訊,通俗易懂,各大地圖類廠商都有自己的POI資料庫,POI資料一般還有多種分類,如“餐飲服務”、“商務住宅”、“生活服務”等

地理資料可視化探索——SLS的地圖演變之路

圖(1).POI資料描述地理位置資訊

2. Geo資料(Geography)

更加專業的地理資訊描述方式,通過經度、次元、海拔相結合即可描述出一個三維空間的地理位置。在數字化地理資訊中,我們經常能接觸到諸如geo.json這一類資料用于描述一組地理位置資訊的集合,常見的格式有:

  • ESRI Shapefile(shp)

    是美國環境系統研究所公司(ESRI)開發的一種空間資料開放格式。該檔案格式已經成為了地理資訊軟體界的一個開放标準。

  • GeoJSON

    GeoJSON是一種對各種地理資料結構進行編碼的格式,基于Javascript對象表示法的地理空間資訊資料交換格式,web端友好

  • TopoJSON

    TopoJSON 是 GeoJSON 按拓撲學編碼後的擴充形式。使用點、弧(有向線)來表示圖形。

線上生成geoJson小工具
地理資料可視化探索——SLS的地圖演變之路

圖(2).GeoJson描述地理位置資訊

日志裡的地理資訊

了解了一些常見的地理類資料後,我們回歸到日志領域,來看一下SLS在日志類資訊中如何去做地理資料可視化分析。

1.早期的DevOps

談到日志,我們最先想到的還是DevOps領域。在早期接入的各類資料源中,通路日志、錯誤日志、監控日志占據絕大多數,其中并沒有直接和地理位置挂鈎的資訊資料,但我們能間接地通過一些常見的資料來推導地理位置資訊,比如:

  • ip
  • 電話号碼

基于此類需求,日志服務提供了豐富的ip函數和電話号碼轉換函數來處理這一類的資訊并輸出地理位置可視化圖表

* | SELECT 
    mobile_city(try_cast("mobile" AS bigint)) AS "城市",
    mobile_province(try_cast("mobile" AS bigint)) AS "省份", 
    COUNT(1) as "請求次數" 
    GROUP BY "省份", "城市" ORDER BY "請求次數" DESC LIMIT 100            
地理資料可視化探索——SLS的地圖演變之路

圖(3).電話号碼轉換地圖

* | SELECT
     ip_to_country(remote_addr) AS "國家", 
     count(1) AS c GROUP BY "國家" LIMIT 10           
地理資料可視化探索——SLS的地圖演變之路

圖(4).ip位址轉換世界地圖

2. 逐漸成型的經緯度資訊

随着日志種類的豐富,簡單的地圖不能完全滿足使用者的需求,主要的聲音包括兩種:

  1. 地圖可視化過于簡單,隻能看到特定區域的總數,無法檢視類似點圖、熱力圖等更高階的可視化分析
  2. 缺少事件,沒辦法變換次元

基于上述兩個問題,日志服務着手進行了經緯度資訊相關的配套研發:

* | SELECT 
    ip_to_geo(remote_addr) AS "經緯度", 
    COUNT(1) AS c GROUP BY "經緯度" LIMIT 100           
地理資料可視化探索——SLS的地圖演變之路

圖(5).經緯度資訊

支援經緯度之後,我們就可以直接分析日志中存在的經緯度資訊了,并且通過一些列如split、concat去對應需要的屬性列,同時地圖類事件也得到了增強,變換地區的次元得到更細粒度的分析

* | SELECT arr[2] AS "經度", arr[1] AS "緯度", c FROM(
        SELECT split(r, ',') AS arr, c FROM(
            SELECT 
              ip_to_geo(remote_addr) AS r, 
              count(1) AS c FROM log GROUP BY r
          )) LIMIT 10           
地理資料可視化探索——SLS的地圖演變之路

圖(6).行政區變換

3. 更加自然的POI

對于通過自然語言描述地理位置的POI資訊,我們也支援去識别并進行統計和可視化

* | SELECT poi, type LIMIT 1000           
  • 資料源:
poi type
杭州市臨安市杭州櫻久工貿有限公司 公司企業;公司企業
杭州市餘杭區IADO女裝 購物;服飾鞋包
杭州市建德市交投公司
杭州市西湖區覺客O2O家居體驗店(山姆會員店) 購物;家具家居建材
杭州市臨安市東方羅馬 運動健身;其它運動健身
......
地理資料可視化探索——SLS的地圖演變之路

圖(7).POI地圖

4. 軌迹和擴充

當地理位置結合日志特有的時間屬性,就可以描繪出某一類别日志的軌迹地圖,并根據時間的演變關系進行動态追蹤。在這次新冠疫情的場景下,我們也結合了一部分确診病人的行動軌迹點,進行了對應的軌迹可視化,簡單且清晰:

id: 2 | SELECT 
    __time__,
    id,
    location,
    type,
    text ORDER BY seq ASC limit 10000           
地理資料可視化探索——SLS的地圖演變之路
地理資料可視化探索——SLS的地圖演變之路

圖(8).軌迹地圖

寫在最後

地理位置的可視化對于日志服務的可視化系統來講是必不可少的一環,目前我們地圖發展到現在還有很大的發展空間,日志服務也一直緻力于提供更好的日志可視化系統服務使用者,如果對日志服務可視化感興趣的同學可以參考具體的文檔指引:

聯系我們

如有任何問題也可以釘釘掃碼進群聯系我們,歡迎拍磚:

地理資料可視化探索——SLS的地圖演變之路

繼續閱讀