文/田江濤
近年來,急劇增長的地理空間大數據已經成為海量數據處理的重要部分。地理空間大數據具有空間位置、非結構化、空間關系、分類編碼、海量數據等特征,應用前景多樣,因此我省無論是非實時數據支撐,還是實時的應用探索,地理空間大數據的應用都扮演著至關重要的角色。
地理空間大數據是指帶有地理坐標的數據,包括資源、環境、經濟和社會等領域的一切帶有地理坐標的數據,是地理實體的空間特征和屬性特征的數字描述。具體到電信行業實際使用中就是帶有用戶信息及經維度的信令等其它信息的數據。
主要借助地圖網格以及顏色渲染進行業務展示,即需要通過經緯度計算將用戶的位置數據進行網格化,并通過位置關系計算確定數據點是否落在網格內,并通過地圖方式來進行業務展示。海量的數據需要進行非實時按日粒度快速處理,數據往往達到十億/天。
在電信行業家庭寬帶業務的發展過程中,需要確定基站與家庭寬帶物理小區的覆蓋關系,其中涉及家庭寬帶物理小區中心經緯度與基站小區的位置關系的計算,只有建立關系后才能將家庭寬帶潛在用戶信息歸屬到相應的物理小區進行營銷發展。
在電信行業中,需要定位潛在發展用戶是否在4G網絡的覆蓋范圍之內。需要大批量計算用戶常駐位置與周邊4G基站的位置關系作為觸發業務推薦的前提條件,且需要按日粒度更新,因此快速的用戶位置關系處理顯得日趨重要。
用戶位置軌跡計算:
電信應用中,比如公安,旅游,人流密度需要實時判斷用戶位置軌跡與當前網格/重點區域的位置關系確定當前位置的人員密度情況。匯總粒度需要到分鐘或者是小時。
傳統的通過編寫SQL實現經緯度間的計算相對復雜,代碼可讀性差,可移植性差。計算執行效率低,用常規的方法計算經緯度間距需要用ROUND, ASIN, SIN, COS等多重函數嵌套,相對而言計算規模大,效率低,在實時場景下遠遠達不到要求,對日常作業更新帶來很大困難。數據精度較低,傳統方法計算經緯度不支持空間投影,在一些地方需要進行DECIMAL截取操作,還有對π的支持,在使用PostGIS之前計算距離是截取的14位π值,傳統計算方式數據精度相對較低。
PostGIS是對象關系型數據庫系統PostgreSQL的一個擴展,PostGIS提供如下空間信息服務功能:空間對象、空間索引、空間操作函數和空間操作符。同時,PostGIS遵循OpenGIS的規范,PostGIS的版權已被納入到GNU的GPL中,由于其源代碼的公開性,任何人可以對其做研究和改進。
Greenplum(以下簡稱GP)是一種MPP數據庫,常用于建立企業級數據倉庫。GP數據庫的是基于PostgreSQL8.2開發的,所以GP跟PostGIS有天然的聯系,經過驗證可以把PostGIS部署在現有GP版本上。
PostGIS支持的主要函數:
點對點距離計算:ST_distance_sphere(a.geom,b.geom)
執行效率:10億條數據,運行處理點對點的SQL,使用常規的三角函數計算方式執行開始時間為“10:34:38”,結束時間為“12:28:52”,周期為1小時54分鐘,使用PostGIS提供的方式執行開始時間“10:21:53”,結束時間為“10:29:14”,周期約8分鐘,執行效率大大提高。
便捷與應用:顯而易見,使用PostGIS方式計算距離的代碼的可讀性,簡易性遠遠高于常規的經緯度計算SQL。可應用于家庭寬帶物理小區與基站小區映射、4G網絡覆蓋等地圖上點與點之間的距離計算。
點對面計算:ST_Contains(a.geom,b.geom)
執行效率:當處理點對面的SQL時,常規的方式執行時間為1小時22分鐘,使用PostGIS提供的方式執行時間約為1分鐘,執行效率同樣提升很大。
便捷與應用: 點與面的計算可廣泛應用于基站與網格間的位置關系處理。
另外,在精度上,由于MPP數據庫本身不支持空間投影,而PostGIS可以使用4326(wgs86)這個坐標系統,因此在精度上PostGIS所運行的結果也高于通過三角函數所匯總出來的數據
綜上所述,相比使用傳統的SQL方式使用PostGIS具有精度高,速度快,代碼簡化,適用于空間數據的實時非實時處理,對于解決海量空間數據在電信等各個領域的應用有實際意義。