如何通过点和相应的多边形连接2个配置单元表?

6tdlim6h  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(569)

我有两张Hive桌。表1有两列经纬度,第二列有wkt格式的多边形信息,如下所示:

POLYGON ((6.93614 79.842882, 6.950198 79.856958, 6.943638 79.877815, 6.931795 79.877129, 6.92566 79.861507, 6.919184 79.861507, 6.917906 79.847603, 6.93614 79.842882))

我想找出表1中的哪些点属于哪些多边形。我正在尝试使用hadoop的st\u几何库(https://github.com/esri/spatial-framework-for-hadoop/wiki/udf-documentation)做这个。由于数据在两个表中,我必须连接它们。我试着用

ST_Contains(polygon, point)

函数连接两个表。但我做不到。有人知道怎么做吗?

0dxa2lsx

0dxa2lsx1#

ST_Contains 在单个多边形和单个点上运行,而不是在完整表格上运行。
你需要做一个完全的笛卡尔积连接(没有条件的内部连接),然后应用 ST_Contains 在where子句中:

select * from polygonTable a,pointsTable b where ST_Contains(a.polygon,b.point);

请注意,做笛卡尔积是低效的,可能需要大量的时间在大表上。

相关问题