【问题标题】:Generate convex hull from points从点生成凸包
【发布时间】:2023-03-31 09:56:01
【问题描述】:

我有一个包含数千个点的 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

【问题讨论】:

标签: hive gis esri convex-hull


【解决方案1】:

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

[合作者]

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

【讨论】:

  • 嗨,兰德尔·惠特曼,一如既往地感谢您的帮助。这个 UDF 期待什么?我有 2 列,纬度,经度。我应该用逗号连接,还是倒序或类似的东西?
  • 您将使用 ST_Point 创建每个点,例如 ST_Point(longitude, latitude)。
猜你喜欢
  • 1970-01-01
  • 2011-01-08
  • 2016-07-14
  • 2016-12-21
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
相关资源
最近更新 更多