以基站工参表实现空间关系判断(点在多边形内)为例,使用ESRI的gis-tools-for-hadoop工具包,在hive中实现数据空间计算的几个主要步骤:
Hive是基于Hadoop的数据仓库,采用MPP架构(大规模并行处理),存储结构化数据,提供sql查询功能,sql语句转换为MapReduce任务运行。非常适合数据仓库的统计分析。
gis-tools-for-hadoop是ESRI推出的开源工具包,与hive结合,使用分布式运算实现海量空间数据的存取、计算、关系判断等功能。包括两个jar包:
- esri-geometry-api.jar
- spatial-sdk-hadoop.jar
jar包下载地址
将地理实体面数据导出geojson文件,放到同一个目录下(geojson8.31目录)
hadoop fs -copyFromLocal bch/user/meimei/geojson8.31/* /user/meihong/geojson hadoop fs -copyFromLocal bch/user/meimei/esri-geometry-api.jar /user/meihong/esri-geometry-api.jar hadoop fs -copyFromLocal tmp/meimei/spatial-sdk-hadoop.jar /user/meihong/spatial-sdk-hadoop.jar
use syxzDB; drop table if exists geo_block; CREATE TABLE if not exists geo_block (id string, name string, boundaryshape binary, cid string) ROW FORMAT SERDE 'com.esri.hadoop.hive.serde.JsonSerde' STORED AS INPUTFORMAT 'com.esri.json.hadoop.EnclosedJsonInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '/user/meihong/geojson'; select id,cid from geo_block; --测试数据是否导入
add jar hdfs://bch/user/meimei/esri-geometry-api.jar; add jar hdfs://bch/user/mei/spatial-sdk-hadoop.jar; create temporary function ST_Point as 'com.esri.hadoop.hive.ST_Point'; create temporary function ST_Contains as 'com.esri.hadoop.hive.ST_Contains'; insert overwrite table t_cell_match select cell.city,cell.county,cell.cell_name,cell.net_type,cell.lc,cell.lon,cell.lat,cell.coverage, geo_block.id,geo_block.name,geo_block.cid from cell left outer join geo_block where ST_Contains(geo_block.boundaryshape,ST_Point(cell.lon,cell.lat));
扫码加入我的知识星球:“时空大数据”,可获取更多更高品质的地图、地理信息、GIS、大数据、时空分析、实景三维、地图可视化等方面的知识和文件,前20名可享5折优惠券。