我有一个有数千个点的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
答案 0 :(得分:1)
如果你想要一个表的所有多个记录的几何的凸包,请使用ST_Aggr_ConvexHull而不是ST_ConvexHull(它需要一行中的多个几何的列表)。
[合作者]
更新:聚合ConvexHull的语法类似于聚合联盟的语法,我们有an example in an article。