Greenplum+PostGIS在地理空间大数据分析的应用
2019-12-01田江涛
文/田江涛
近年来,急剧增长的地理空间大数据已经成为海量数据处理的重要部分。地理空间大数据具有空间位置、非结构化、空间关系、分类编码、海量数据等特征,应用前景多样,因此我省无论是非实时数据支撑,还是实时的应用探索,地理空间大数据的应用都扮演着至关重要的角色。
1 地理空间大数据
地理空间大数据是指带有地理坐标的数据,包括资源、环境、经济和社会等领域的一切带有地理坐标的数据,是地理实体的空间特征和属性特征的数字描述。具体到电信行业实际使用中就是带有用户信息及经维度的信令等其它信息的数据。
2 地理空间大数据非实时应用场景
2.1 地图网格计算
主要借助地图网格以及颜色渲染进行业务展示,即需要通过经纬度计算将用户的位置数据进行网格化,并通过位置关系计算确定数据点是否落在网格内,并通过地图方式来进行业务展示。海量的数据需要进行非实时按日粒度快速处理,数据往往达到十亿/天。
2.2 物理小区与基站小区映射
在电信行业家庭宽带业务的发展过程中,需要确定基站与家庭宽带物理小区的覆盖关系,其中涉及家庭宽带物理小区中心经纬度与基站小区的位置关系的计算,只有建立关系后才能将家庭宽带潜在用户信息归属到相应的物理小区进行营销发展。
2.3 4G网络覆盖
在电信行业中,需要定位潜在发展用户是否在4G网络的覆盖范围之内。需要大批量计算用户常驻位置与周边4G基站的位置关系作为触发业务推荐的前提条件,且需要按日粒度更新,因此快速的用户位置关系处理显得日趋重要。
3 地理空间大数据实时应用场景
用户位置轨迹计算:
电信应用中,比如公安,旅游,人流密度需要实时判断用户位置轨迹与当前网格/重点区域的位置关系确定当前位置的人员密度情况。汇总粒度需要到分钟或者是小时。
4 基于Greenplum和PostGIS的解决方案
传统的通过编写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所运行的结果也高于通过三角函数所汇总出来的数据
5 结语
综上所述,相比使用传统的SQL方式使用PostGIS具有精度高,速度快,代码简化,适用于空间数据的实时非实时处理,对于解决海量空间数据在电信等各个领域的应用有实际意义。