从点生成凸包

Generate convex hull from points

我有一个 Hive table,有数千个点。唯一的列是纬度|经度。我事先知道这些点都在某个区域内,而且点的最外边缘确实形成了一个连续的多边形,但是很多点都在内部。我正在尝试确定哪些点是用于可视化的外部凸包。我不想使用所有点,因为它有杂乱的内部孔,在可视化上看起来不太好。我正在使用配置单元 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

如果您想要 table 的所有多条记录的几何形状的凸包,请使用 ST_Aggr_ConvexHull 而不是 ST_ConvexHull(它需要来自 a 的多个几何形状的列表)单排)。

[合作者]

更新:聚合 ConvexHull 的语法类似于聚合 Union 的语法,我们有 an example in an article