我有一张有几千个点的Hive表。唯一的列是经纬度。我事先知道这些点都在某个区域内,点的最外缘确实形成了一个连续的多边形,但很多点都是内部的。我试图确定哪些点是外部凸包,以便可视化。我不想使用所有的点,因为它有凌乱的内部孔,不好看的可视化。我正在使用hive-1.2.1000.2.4.2.0。以下是我尝试的:
hive> add jar /home/me/gis-tools-for-hadoop/samples/lib/esri-geometry-api.jar;
Added [/home/me/gis-tools-for-hadoop/samples/lib/esri-geometry-api.jar] to class path
Added resources: [/home/me/gis-tools-for-hadoop/samples/lib/esri-geometry-api.jar]
hive> add jar /home/me/gis-tools-for-hadoop/samples/lib/spatial-sdk-hadoop.jar;
Added [/home/me/gis-tools-for-hadoop/samples/lib/spatial-sdk-hadoop.jar] to class path
Added resources: [/home/me/gis-tools-for-hadoop/samples/lib/spatial-sdk-hadoop.jar]
hive> create temporary function ST_ConvexHull AS 'com.esri.hadoop.hive.ST_ConvexHull';
OK
Time taken: 0.014 seconds
hive> create temporary function ST_AsText AS 'com.esri.hadoop.hive.ST_AsText';
OK
Time taken: 0.009 seconds
hive> create temporary function ST_Point AS 'com.esri.hadoop.hive.ST_Point';
OK
Time taken: 0.009 seconds
hive> SELECT ST_AsText(ST_ConvexHull(ST_Point(latitude, longitude))) FROM sandbox11.cnst_zn;
我还尝试在查询中翻转经纬度顺序。在这两种情况下,我都得到“multipolygon empty”作为响应。udf的文档如下:https://github.com/esri/spatial-framework-for-hadoop/wiki/udf-operations#st_convexhull
1条答案
按热度按时间gojuced71#
如果您想要一个表的所有多个记录的几何图形的凸包,请使用st\u aggr\u convexhull而不是st\u convexhull(它要求从一行中列出多个几何图形)。
[合作者]
更新:aggregate convexhull的语法类似于aggregate union的语法,我们在一篇文章中给出了一个示例。